!--a11y-->
Eventhandler 
Für die Bestellseite benötigen Sie nur den Eventhandler OnInputProcessing.

Grundsätzliches zu Eventhandlern entnehmen Sie dem Anschnitt Eventhandler der Dokumentation über Business Server Pages.
Wenn der Benutzer den Button Submit Order klickt, so soll er bei erfolgreicher Bestellung auf die Seite corder.htm (vgl. Änderung der Auftragsbestätigungsseite) verzweigen, bei einem falschen Kennwort oder einem nicht registrierten Kunden soll auf der Bestellseite geblieben werden, so dass er seine Eingaben erneut machen kann.
Der Eventhandler OnInputProcessing enthält folgenden Code.
DATA wa TYPE bscustomer. SELECT SINGLE * FROM bscustomer INTO wa
IF sy-subrc = 0. * user already signed-in IF pwd = wa-usrpwd. * password correct s_rc = 1. ELSE. * password incorrect page->messages->add_message( condition = 'passwordincorrect' otr_alias = 'SBOOKSHOP/PASSWORDINCORRECT' severity = page->messages->CO_SEVERITY_ERROR ).
ENDIF. ELSE. * user unknown page->messages->add_message( condition = 'notregistered' otr_alias = 'sbookshop/notregistered' severity = page->messages->CO_SEVERITY_WARNING ). ENDIF.
if event_id = 'doorder'.
if s_rc = 1. navigation->goto_page( 'corder.htm' ). endif.
endif. |
Zunächst wird in der Kundentabelle BSCUSTOMERgesucht, ob der Kunde schon registriert ist. Ist der Kunde bekannt, wurde ein Eintrag in der Tabelle gefunden, sy-subrc steht auf 0. Nun wird geprüft, ob der Kunde das Kennwort eingegeben hat, mit dem er in der Tabelle BSCUSTOMERregistriert ist. Wenn ja, wird der interne Rückgabewert s_rc auf 1 gesetzt, ansonsten auf 2.
Wenn der Kunde ein falsches Kennwort eingegeben hat, dann wird über das messages-Objekt eine entsprechende Fehlermeldung ausgegeben:
page->messages->add_message(
condition =
'passwordincorrect'
otr_alias =
'SBOOKSHOP/PASSWORDINCORRECT'
severity =
page->messages->CO_SEVERITY_ERROR ).
Hierbei fügt add_message eine einzelne Meldung hinzu, und zwar unter der angegebenen Bedingung (condition). Die Meldung selbst wird als OTR-Aliastext realisiert (siehe Abschnitt Online Text Repository unter Eventhandler). 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.
Wenn ein unbekannter Benutzername eingegeben wurde, dann kommt es zur Ausgabe einer weiteren Fehlermeldung:
page->messages->add_message(
condition = 'notregistered'
otr_alias = 'sbookshop/notregistered'
severity =
page->messages->CO_SEVERITY_WARNING ).
Nur wenn s_rc den Wert 1 hat, wird auf die Auftragsbestätigungsseite corder.htmnavigiert, ansonsten wird nicht navigiert.
Der Rückgabewert s_rc ist ein Seitenattribut, das beim Layout dann die Ausgabe bestimmt.
Erstellen Sie nun die Registrierungsseite.