Events

Aus SAP-Wiki
Zur Navigation springenZur Suche springen

Events stellt ein zentrales objektorientiertes Element dar, was es auf der prozedualen Programmierung nicht vergleichbar gibt. Eine lockere Verbindung zwischen einem Auslöser und einer Verarbeitungsmethode. Nicht allein der Auslöser entscheidet, eine Methode aufzurufen, sondern auch die Methode, dass sie bereit ist aufgerufen zu werden.

Ereignis/Event anlegen

  • Im Class Builder SE24 auf der Registerkarte "Ereignisse" wird das Event (hier "CALL_STEWARD") angelegt.
  • In der Regel wird das Event als Instanzevent angelegt.
  • Hier wird bei der Sichtbarkeit "Private" gesetzt, da das Event aus der Klasse aufgerufen wird. Oft wird das Event auch "Public" definiert, wenn das Event außerhalb der Klasse verwendet wird oder "Protected", wenn sie bei der Vererbung der Klasse auch noch funktionieren soll.
  • Das Event sollte besser nicht in der Form EVENT_<NAME> benannt werden, da sonst der Befehl "RAISE EVENT EVENT_<NAME>" sich doppelt liest.

Events25.jpg


  • Es können lediglich aus der Sicht des Events/Behandlers Importparameter angelegt werden (also Exportparameter aus Sicht des Aufrufers)
  • Daher gibt es auch keine Ausnahmen beim Event
  • Hier wurde ein Importparameter IV_NOTFALL angelegt

Events2.jpg

Ereignisbehandler-Methode anlegen

  • Es wird zunächst normal eine Methode angelegt
  • Gewöhnlich wird der Ereignisbehandlung benannt ON_EVENT_<EVENT> (oft auch ON_<EVENT> oder HANDLE_<EVENT> o. ä.).

Events4.jpg


  • Nun werden für die angelegte Methode mit der Schaltfläche Detail.jpg die Detaildaten aufgerufen.
  • Es wird die Checkbox gesetzt bei "Ereignisbehandler für" und die eigene Klasse "ZREBCLASS" und das Event "CALL_STEWARD" eingetragen

Events26.jpg


  • Nach Bestätigung sieht man, dass sich der Methodentyp geändert hat auf Event.jpg

Events7.jpg


  • Nun werden die Parameter definiert für den Ereignisbehandler über die Schaltfläche ButtonParameter.jpg

Events8.jpg

  • Die Parameter des Events können hier kopiert werden über die Schaltfläche KopierenParameter.jpg

Events12.jpg

Ereignisbehandler-Methode Coding

  • Die Ereignisbehandler-Methode wird implementiert

Events13.jpg

Statisches Attribut PAUSE

  • Es wird ein statisches Attribut "PAUSE" definiert. Nur im Notfall soll die Pause der Steward(essen) gestört werden
  • Das Attribut PAUSE wird per Default auf 'X' gesetzt

Events16.jpg

Im Constructor SET HANDLER setzen

  • Das Event wird scharf geschaltet im Constructor der Klasse mit
set handler me->on_event_call_steward for ALL INSTANCES.

Events27.jpg

Methode zum Aufruf Methodenhandler definieren

  • von außen ansprechbar mit der Sichtbarkeit "Public" wird eine Methode "Steward" angelegt

Events14.jpg


  • Diese Methode hat auch einen Importparameter "IV_NOTFALL"

Events28.jpg

  • Wenn kein Notfall und Pause, dann wird lediglich "write: 'Der Passagier kann warten, wir haben Pause'" ausgegeben
  • Wenn Notfall oder Nichtpause, dann wird
  • Das Event wird dann aufgerufen mit
raise event call_steward
exporting iv_notfall = iv_notfall.

Aufruf der PUBLIC-Methode im Report

  • Im Report ZREBTEST wird nach einer Parameterabfrage auf einen Notfall die öffentliche Methode "STEWARD" der Klasse ZREBCLASS aufgerufen mit dem Notfallflag.
  • Die lokale Klasse wird LCL_<KLASSENNAME> benannt
REPORT  ZREBTEST.

Data: lcl_class type ref to zrebclass.

SELECTION-SCREEN: BEGIN OF BLOCK a1 WITH FRAME TITLE text-003.
Parameters: p_cola RADIOBUTTON GROUP radi,
            p_notf RADIOBUTTON GROUP radi.
SELECTION-SCREEN: END OF BLOCK a1.

start-of-selection.

  CREATE OBJECT lcl_class.

  CALL METHOD lcl_class->steward
    exporting iv_notfall = p_notf.
  • Der Report wird ausgeführt mit dem Parameter "Notfall"

Events17.jpg

  • Bei der Instanziierung der Klasse LCL_ZREBCLASS wird der Konstruktur durchlaufen und das Event scharf geschaltet

Events31.jpg


Events32.jpg


  • Das Notfallflag ist gefüllt und wird der Methode "STEWARD" übergeben

Events29.jpg


  • Da trotz Pause das Notfallflag gefüllt ist, wird das Event für die Benachrichtigung der Steward(essen) ausgelöst

Events30.jpg


  • Die Steward(essen) reagieren im Eventhandler auf den Notfall

Events23.jpg


Events24.jpg

Web-Links

Literatur