Anfang des Inhaltsbereichs

Vorgehensweisen Eventhandler Dokument im Navigationsbaum lokalisieren

Verwendung

Für die Registrierungsseite benötigen Sie die Eventhandler OnInputProcessing und OnInitialization.

Hinweis

Grundsätzliches zu Eventhandlern entnehmen Sie dem Anschnitt StrukturlinkEventhandler der Dokumentation zum StrukturlinkSAP 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 Strukturlinkmessages-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).

Hinweis

Weitere Informationen über den Einsatz des messages-Objektes finden Sie in der Referenzdokumentation unter StrukturlinkObjekt messages einsetzen und StrukturlinkKlasse 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 StrukturlinkOnline 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 StrukturlinkInternationalisierung und Übersetzung.

 

Diese Grafik wird im zugehörigen Text erklärtErstellen Sie nun das Layout für die Bestätigungsseite für die Registrierung.

Ende des Inhaltsbereichs