Show TOC Anfang des Inhaltsbereichs

Diese Grafik wird im zugehörigen Text erklärt Ereignisse und Ereignisbehandler  Dokument im Navigationsbaum lokalisieren

Zur Controller-übergreifenden Kommunikation können Sie für einen Component-Controller Ereignisse definieren. Diese Ereignisse können dann mit Hilfe der vordefinierten Methode FIRE_<MY_EVENT>_EVT ausgelöst werden. Nach dem Auslösen des Ereignisses wird von der Laufzeit automatisch der zugehörige Ereignisbehandler in einem anderen Controller aufgerufen.

Um ein Ereignis eines Component-Controllers zu behandeln, muss im aktuellen Controller eine Verwendung des Component-Controllers eingetragen sein. (Die Verwendung des Component-Controllers innerhalb eines View-Controllers wird, wie bereits erwähnt, automatisch angelegt).     

Diese Grafik wird im zugehörigen Text erklärt Die folgende Grafik zeigt ein Beispiel, in welchem in einer Methode des Component-Controllers das Ereignis MY_EVENT ausgelöst wird.

Diese Grafik wird im zugehörigen Text erklärt

Der Ereignisbehandler MY_HANDLER eines View-Controllers reagiert auf das Ereignis MY_EVENT weil ihm genau dieses Ereignis des Component-Controllers zugeordnet wurde. Die Zuordnung ist direkt auf der Registerkarte Methoden des View-Controllers vorgenommen worden.

Component-übergreifende Ereignisse

Sie haben die Möglichkeit, ein oder mehrere Ereignisse des Component-Controllers auch Component-übergreifend einzusetzen. Dafür markieren Sie in der Tabelle auf der Registerkarte Ereignisse des Component-Controllers das Ankreuzfeld Interface. Das betreffende Ereignis wird dann in die Component-Schnittstelle mit aufgenommen und kann von einem Ereignisbehandler einer anderen Component aufgegriffen werden (Siehe Component-übergreifende Programmierung).

Parameter von Ereignissen

Ereignisse können obligatorische oder optionale Parameter übergeben. Sie haben die Möglichkeit, diese Parameter auf der Registerkarte Ereignisse des Component-Controllers einzutragen und zu typisieren. Wenn Sie anschließend einen Ereignisbehandler in einem verwendenden Controller anlegen und diesem ein Ereignis des Component-Controllers zuweisen, werden die zugehörigen Parameter automatisch in die Signatur der Ereignisbehandlermethode aufgenommen.

Diese Grafik wird im zugehörigen Text erklärt Beispiel:

 

Component-Controller

Ein Ereignis soll in einer Methode des Component-Controllers ausgelöst und der dazu angelegte Parameter übergeben werden.

Registerkarte Ereignisse

Ereignis

MY_EVENT

Parameter

MY_PARAMETER         type        WDY_BOOLEAN

 

Diese Grafik wird im zugehörigen Text erklärt WDY_BOOLEAN ist ein ABAP-Dictionary-Typ und erfüllt die Funktion einer echten boolschen Variablen.

Der Wert von WDY_BOOLEAN ist entweder ’X’ für true oder ’ ’ für false.

 

Registerkarte Methoden :

MY_CONTROLLER_METHOD

 

method MY_COMP_CONTROLLER_METHOD .

 

WD_THIS->FIRE_MY_EVENT_EV( MY_PARAMETER = 'X' ).

 

endmethod.

 

 

View-Controller

Im Controller einer View wird ein Ereignisbehandler angelegt, dem Ereignis MY_EVENT zugeordnet und unter Berücksichtigung des  Parameters MY_PARAMETER

Registerkarte Methoden

Methode                       Methodentyp                      Ereignis                   Controller

MY_EVENT_HANDLER    Ereignisbehandler               MY_EVENT             Component-Controller

 

MY_EVENT_HANDLER

Parameter                     Deklarationsart          Bezugstyp        

WDEVENT             Importing                     CL_WD_CUSTOM_EVENT

MY_PARAMETER        Importing                     WDY_BOOLEAN

 

 

method MY_EVENT_HANDLER .

.

.

.

endmethod.

 

 

Weitere Konzepte: Parameterübergabe mit Hilfe eines Event-Objekts

Jeder Ereignisbehandlermethode ist automatisch der Parameter WDEVENT vom Typ CL_WD_CUSTOM_EVENT bekannt. Die Klassenschnittstelle CL_WD_CUSTOM_EVENT verfügt über ein Attribut PARAMETERS vom Typ WD_EVENT_PARAMETER sowie über eine Reihe von Methoden um diesen Parameter auszulesen.

Anstatt für ein Ereignis einen Parameter statisch festzulegen, der dann automatisch in der Signatur der Ereignisbehandlermethode des Ereignisbehandlers eingetragen wird, gibt es die Möglichkeit, den Parameter mit Hilfe des so genannten Eventobjekts dynamisch festzulegen.

Wenn also der Parameter zur Design-Zeit nicht statisch festgelegt werden soll, kann dieser statt  dessen aus dem Event-Objekt der Ereignisbehandlermethode ausgelesen werden. Lesen Sie hierzu mehr im Kapitel Dynamisches Arbeiten mit Parameter-Mappings im dritten Teil des Programmierhandbuches.

 

Ende des Inhaltsbereichs