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.
- 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
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. ä.).
- Nun werden für die angelegte Methode mit der Schaltfläche die Detaildaten aufgerufen.
- Es wird die Checkbox gesetzt bei "Ereignisbehandler für" und die eigene Klasse "ZREBCLASS" und das Event "CALL_STEWARD" eingetragen
Ereignisbehandler-Methode Coding
- Die Ereignisbehandler-Methode wird implementiert
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
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.
Methode zum Aufruf Methodenhandler definieren
- von außen ansprechbar mit der Sichtbarkeit "Public" wird eine Methode "Steward" angelegt
- Diese Methode hat auch einen Importparameter "IV_NOTFALL"
- 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"
- Bei der Instanziierung der Klasse LCL_ZREBCLASS wird der Konstruktur durchlaufen und das Event scharf geschaltet
- Das Notfallflag ist gefüllt und wird der Methode "STEWARD" übergeben
- Da trotz Pause das Notfallflag gefüllt ist, wird das Event für die Benachrichtigung der Steward(essen) ausgelöst
- Die Steward(essen) reagieren im Eventhandler auf den Notfall
Web-Links
Literatur
- ABAP Workbench - 100 Tipps & Tricks, von Christian Assig, S. 57 ff