Anfang des Inhaltsbereichs

Vorgehensweisen Änderung der Suchseite Dokument im Navigationsbaum lokalisieren

Verwendung

Die Suchseite des dritten Tutorials braucht noch einige kleine Änderungen:

Layout

Bei der Suchseite fügen Sie Anweisungen für die Ausgabe von Fehlermeldungen über das Strukturlinkmessages-Objekt in das Layout ein:

<%@page language="abap" %>

<%@include file="head.htm" %>

<h3>Search</h3>

<p>

Fill out one or more of the fields below to search for a book.

You can use the wildcard character '+' to replace just one letter and '*' to replace

any number of letters.

<p>

<font color="red"><%= page->messages->assert_message( 'isbn' ) %></font>

<font color="red"><%= page->messages->assert_message( 'internal' ) %></font>

<font color="blue"><%= page->messages->assert_message( 'noresults' ) %></font>

  <form method="POST">

     <table>

       <tr><td width="180"> Author (last name) </td>

           <td> <input type="text" name="author" size="80"></td> </tr>

       <tr><td>Title </td>

           <td> <input type="text" name="title" size="80"></td></tr>

       <tr><td>Publisher </td>

           <td> <input type="text" name="publisher" size="40"></td></tr>

       <tr><td>Keyword </td>

           <td> <input type="text" name="keyword" size="20"</td></tr>

       <tr><td>ISBN </td>

           <td> <input type="text" name="isbn" size="13"></td></tr>

     </table>

     <p> <input type=submit name="onInputProcessing(search)"  value="Search for Book">

                 &nbsp;&nbsp;&nbsp;&nbsp;

                <input type="reset" value="Reset" name="B2">

   </form>

</body>

</html>

Die folgenden Fehlerfälle können auftreten:

Hinweis

In allen Fehlerfällen wird eine Meldung über das Strukturlinkmessages-Objekt ausgegeben und wieder auf dieselbe Seite navigiert (dies wird im Eventhandler OnInputProcessing festgelegt, siehe unten), die Eingabe kann erneut erfolgen. Die ersten beiden Fehlermeldungen werden in roter Schrift ausgegeben, die letzte Fehlermeldung in blauer Schrift.

Seitenattribute

Sie benötigen für dieses Tutorial das zusätzliche Seitenattribut isbn_tab. Dies ist die Tabelle für die ISBNs, mit dem Bezugstyp ISBN_TAB.

Eventhandler OnInputProcessing

In diesem Eventhandler legen Sie neben der Suche über die Klasse CL_BOOK_SHOP (siehe auch Datenmodell für die Bookshop-Tutorials) insbesondere die Fehlerfälle fest:

class CL_BOOK_SHOP definition load.

case event_id.

  when 'search'.

*look for matching books for user query

    CALL METHOD cl_book_shop=>search_book

      EXPORTING

        author              = author

        title               = title

        publisher           = publisher

        ISBN                = ISBN

        keyword             = keyword

      IMPORTING

        isbn_tab            = isbn_tab

      EXCEPTIONS

        no_search_parameter = 2

        invalid_isbn        = 4.

 

* error handling

    if sy-subrc <> 0.

      case sy-subrc.

        when 4.

          page->messages->add_message(

          condition = 'isbn'

          message   = 'You entered an invalid ISBN - please try again!'

          severity  = page->messages->CO_SEVERITY_ERROR ).

        when 2.

        when others.

          page->messages->add_message(

          condition = 'internal'

          message   = 'An internal error occurred - please try again!'

          severity  = page->messages->CO_SEVERITY_FATAL_ERROR ).

      endcase.

    else.

* no books found

*   if sy-subrc = 0.

      if isbn_tab is initial.

        page->messages->add_message(

         condition = 'noresults'

         message   = 'No books were found that match your query.'

         severity  = page->messages->CO_SEVERITY_INFO ).

* something found and no error

      else.

        navigation->next_page( 'TORESULTS' ).

      endif.

    endif.

 

    navigation->set_parameter( 'author' ).

    navigation->set_parameter( name = 'isbn_tab'

                               value = isbn_tab ).

 

  when others.

 

endcase.

Für jeden der im Layout angegebenen Fehlerfälle spezifizieren Sie eine Meldung.

Wenn der interne Rückgabewert sy-subrc ungleich 0 ist, kann er hier die Werte 2 oder 4 annehmen. Der Wert 4 bedeutet, dass die eingegebenen ISBN eine inkorrekte ISBN war und es wird über das Strukturlinkmessages-Objekt eine entsprechende Fehlermeldung ausgegeben:

          page->messages->add_message(
          condition = 'isbn'
          message   = 'You entered an invalid ISBN - please try again!'
          severity  = page->messages->CO_SEVERITY_ERROR ).

Hierbei fügt add_message eine einzelne Meldung hinzu, und zwar unter der angegebenen Bedingung (condition). Die Meldung bzw. der Meldungstext selbst wird direkt angegeben und nicht als OTR-Aliastext realisiert. Die Schwere des Fehlers wird über den Parameter severity   angegeben: hier handelt es sich um einen ganz normalen Fehler (CO_SEVERITY_ERROR).

Hinweis

Weitere Informationen über den Einsatz des messages-Objektes finden Sie in der Referenzdokumentation unter StrukturlinkObjekt messages einsetzen und StrukturlinkKlasse CL_BSP_MESSAGES.

Der Wert 2 bedeutet, dass ein schwer wiegender interner Fehler aufgetreten ist:

          page->messages->add_message(
          condition = 'internal'
          message   = 'An internal error occurred - please try again!'
          severity  = page->messages->CO_SEVERITY_FATAL_ERROR ).

 

Wenn aufgrund der Suchanfrage des Benutzers keine Ergebnisse gefunden wurden, wird der interne Rückgabewert sy-subrc auf 0 gesetzt und die folgende Meldung wird als Information ausgegeben (diesmal nicht über das OTR):

        page->messages->add_message(
         condition = 'noresults'
         message   = 'No books were found that match your query.'
         severity  = page->messages->CO_SEVERITY_INFO ).

Nur dann, wenn keine Fehler aufgetreten sind und Ergebnisse für die Suchanfrage gefunden wurden, wird über den Navigationsrequest TORESULTS zur Ergebnisseite navigiert.

Diese Grafik wird im zugehörigen Text erklärtÄndern Sie nun die auf jeder Seite inkludierte Titelleiste.

Ende des Inhaltsbereichs