!--a11y-->
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
messages-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"> <input type="reset" value="Reset" name="B2"> </form> </body> </html> |
Die folgenden Fehlerfälle können auftreten:

In allen Fehlerfällen wird eine Meldung über das
messages-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
messages-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).
Weitere Informationen über den Einsatz des messages-Objektes finden Sie in der Referenzdokumentation unter
Objekt messages einsetzen und
Klasse 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.
Ändern Sie nun die auf jeder Seite inkludierte
