!--a11y-->
Verwendung
Für die Registrierungsseite benötigen Sie die Eventhandler OnInputProcessing und OnInitialization.

Grundsätzliches zu Eventhandlern entnehmen Sie dem Anschnitt
Eventhandler der Dokumentation zum
SAP Web Application Server.
OnInitialization
Im Eventhandler OnInitialization legen Sie lediglich das Land fest, in dem Sie sich befinden. Diese Angabe wird beim Seitenfragment für die Benutzerdaten ausgewertet.
|
* event handler for data retrieval country = 'Germany'. |
OnInputProcessing
Wenn der Benutzer den Button Done klickt, so soll er bei erfolgreicher Bestellung auf die Seite
cnewuser.htm (vgl. Änderung der Auftragsbestätigungsseite) verzweigen, bei einer fehlerhaften Eingabe soll auf der Registrierungsseite geblieben werden, so dass er seine Eingaben noch einmal machen kann.Der Eventhandler OnInputProcessing enthält folgenden Code.
|
DATA wa TYPE bscustomer.
s_rc = 1.
SELECT SINGLE customerid FROM bscustomer INTO wa-customerid WHERE customerid = customerid. IF sy-subrc = 0. * user already signed-in page->messages->add_message( condition = 'alreadyexists' otr_alias = 'SBOOKSHOP/ALREADYEXISTS' severity = page->messages->CO_SEVERITY_ERROR ).
ELSEIF firstname IS INITIAL OR pwd IS INITIAL OR lastname IS INITIAL OR customerid IS INITIAL OR street IS INITIAL OR city IS INITIAL OR zip IS INITIAL OR country IS INITIAL. * missing data page->messages->add_message( condition = 'missingdata' otr_alias = 'SBOOKSHOP/MISSINGDATA' severity = page->messages->CO_SEVERITY_ERROR ).
ELSEIF pwd <> pwd2. * Passwords not equal page->messages->add_message( condition = 'passwordnotequal' otr_alias = 'SBOOKSHOP/PASSWORDNOTIDENT' severity = page->messages->CO_SEVERITY_ERROR ).
ELSE. * insert user wa-customerid = customerid. wa-usrpwd = pwd. wa-title = title. wa-firstname = firstname. wa-surname = lastname. wa-street = street. wa-city = city. wa-zip = zip. wa-country = country. wa-discount = 0. INSERT INTO bscustomer VALUES wa. IF sy-subrc = 0. COMMIT WORK. s_rc = 0. ELSE. page->messages->add_message( condition = 'insertfailed' message = 'Insert failed!' severity = page->messages->CO_SEVERITY_ERROR ). ENDIF. ENDIF.
CASE event_id. WHEN 'newuser'. if s_rc = 0. navigation->goto_page( 'cnewuser.htm' ). endif. WHEN OTHERS. ENDCASE. |
Zunächst wird geprüft, ob ein Kunde mit der angegebenen Identifikation (E-Mail-Adresse) schon in der Kunden-Datenbank (Tabelle
BSCUSTOMER) existiert.Wenn der Kunde sich bereits angemeldet hat, dann wird der Rückgabewert
s_rc auf 0 gesetzt. Es wird eine Meldung ausgegeben, dass der Kunde bzw. die Kunden-Identifikation bereits existiert. Hierfür wird das
messages-Objekt verwendet:
page->messages->add_message(
condition = 'alreadyexists'
otr_alias = 'SBOOKSHOP/ALREADYEXISTS'
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 unten). 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.
Anschließend wird geprüft, ob der Kunde alle Mussfelder ausgefüllt hat. Ist dies nicht der Fall, wird eine weitere Meldung ausgegeben, dass einige Angaben fehlen. Dies ist auch wieder ein OTR-Aliastext:
SBOOKSHOP/MISSINGDATA. Die Meldung lautet: Please fill out all necessary fields. All fields except "title" and "company" must be filled out.Sind Kennwort und Kennwort-Bestätigung nicht gleich, kommt es zu einer weiteren entsprechenden Meldung, die ebenfalls ein OTR-Aliastext ist.
Sind alle Eingaben korrekt (keiner der bisher beschriebenen Fälle trifft zu), so werden die Kundendaten in die Tabelle
BSCUSTOMER geschrieben, der Kunde ist dann registriert. In diesem Falll wird zur Bestätigungsseite für die Registrierung cnewuser.htm navigiert.Ist etwas anderes nicht korrekt verlaufen (etwa wenn der Insert nicht funktioniert hat), so wird eine weitere Fehlermeldung ausgegeben:
page->messages->add_message(
condition = 'insertfailed'
message = 'Insert failed!'
severity = page->messages->CO_SEVERITY_ERROR ).
Diesmal ist die Fehlermeldung nicht als OTR-Aliastext realisiert.
Online Text Repository
Im vorliegenden Eventhandler sind einige der Meldungen exemplarisch als Aliastexte im
Online Text Repository (OTR) deklariert. Dadurch sind diese Texte an das SAP-Übersetzungssystem angeschlossen. Da dieses Tutorial lediglich ein einfaches Beispiel ist und nur mit englischen Oberflächentexten existiert, macht in diesem Fall der Einsatz des OTR keinen Sinn; es soll nur ein Beispiel gegeben werden, wie Sie die Übersetzung Ihrer Oberfläche-Elemente in die verschiedenen Sprachen realisieren können. Wenn Sie Ihre BSP-Applikation in verschiedenen Sprachversionen zur Verfügung stellen möchten, dann realisieren Sie einfach alle Ihre Oberflächen-Elemente als Aliastexte bzw. Langtexte im OTR.
Um den eigentlichen Text der OTR-Aliastexte anzusehen, wählen Sie im Web Application Builder Springen ® Online Text Repository Browser. Sie erhalten ein Popup mit dem OTR-Basisvokabular und allen OTR-Texten, die im Paket Ihrer BSP-Applikation enthalten sind, im vorliegenden Fall ist es
SBOOKSHOP. Zum Beispiel lautet der eigentliche Text für den Alias SBOOKSHOP/ALREADYEXISTS folgendermaßen: An account of a person with this e-mail address already exists. If you have forgotten your password, please send us an e-mail and we will reset your password.Weitere Informationen über den Einsatz des OTR bei BSP-Applikationen finden Sie in der Referenzdokumentation unter
Internationalisierung und Übersetzung.
Erstellen Sie nun das
