Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Erzeugung von Ereignissen über ABAP-Klassen  Dokument im Navigationsbaum lokalisieren

Verwendung

Sie müssen sicherstellen, dass das Ereignis beim Eintreten der Zustandsänderung ausgelöst wird. Dafür kann es notwendig sein, das Ereignis mit Hilfe einer Methode einer ABAP-Klasse in Ihrem Programm auszulösen.

Voraussetzungen

Beachten Sie, dass die Ereignisse etwas über tatsächlich erfolgte Zustandsänderungen an Objekten aussagen. Stellen Sie deshalb sicher, dass das Ereignis erst erzeugt wird, wenn auch die entsprechende Zustandsänderung eingetreten ist. Dazu soll der Aufruf einer Methode zum Erzeugen eines Ereignisses in derselben logical unit of work (LUW) erfolgen, in der auch die Zustandsänderung vorgenommen wird.

Funktionsumfang

Die hier beschriebene Ereignisauslösung bezieht sich auf Ereignisse, die durch den Ereignismanager verarbeitet werden. Diese Ereignisse müssen mit Hilfe der ABAP-Klasse CL_SWF_EVT_EVENT ausgelöst werden.

Wird ein Ereignis mit folgendem ABAP Objects Befehl ausgelöst, hat dies für den Ereignismanager keine Bedeutung:

RAISE EVENT <evt> EXPORTING... <ei> = <f i>...

In der Ereignisbehandlermethode kann jedoch wiederum das Ereignis für den Ereignismanager, mit Hilfe der ABAP-Klasse CL_SWF_EVT_EVENTausgelöst werden. Siehe auch: ABAP Objects -> Ereignisse auslösen und behandeln.

Implementierungsbeispiele finden Sie in der Demo-Klasse: CL_SWF_FORMABSENC. Sie können das Ereignis mit einer statischen Methode (Methode: DELETE der Demo-Klasse) oder mit einer Instanzmethode (Methode: UPDATE der Demo-Klasse) auslösen.

Die interne Abarbeitung ist unter Erzeugung von Ereignissen über Funktionsbausteinaufruf beschrieben. Die ABAP-Klasse CL_SWF_EVT_EVENT besitzt zwei Methoden RAISE und RAISE_IN_UPDATE_TASK, die sich synonym zu den Funktionsbausteinen SWE_EVENT_CREATE und SWE_EVENT_CREATE_FOR_UPD_TASK verhalten.

Hinweis

Es ist keine Aussage darüber möglich, ob der Verbraucher erfolgreich war. Weitere Informationen finden Sie unter Auswertung und Pflege der Typkopplungen.

Aktivitäten

Achtung

Achten Sie darauf, dass Sie erst die Datenbankänderungen schreiben, dann die Methode zur Ereignisauslösung aufrufen und anschließend ein COMMIT WORK durchführen. Eine andere Reihenfolge kann dazu führen, dass Objektdaten im Container nicht vorhanden sind oder einen falschen Inhalt haben.

Unabhängig davon, ob das Ereignis über eine statische Methode oder eine Instanzmethode ausgelöst wird, müssen folgende Parameter versorgt werden (siehe auch: Demo-Klasse):

 

Importparameter

Typ

Bedeutung

im_objcateg

SWF_CLSTYP

Workflow Objekttyp:

·        MC_OBJCATEG_CL (Konstante der Klasse CL_SWF_EVT_EVENT) für eine ABAP-Klasse

·        MC_OBJCATEG_BOR (Konstante der Klasse CL_SWF_EVT_EVENT) für ein BOR Objekt

im_objtype

C

Name des Objekttyps, Name ABAP-Klasse

im_event

C

Name des Ereignisses

im_objkey

C

Objektschlüssel

Für das Setzen der Ereignisparameter wird das Interface IF_SWF_IFS_PARAMETER_CONTAINER verwendet, über deren SET-Methode können Sie die entsprechenden Parameter setzen.

Über die TRY ... ENDTRY Anweisung fangen Sie die Ausnahmen cx_swf_evt_execption (Fehler bei der Ereigniserzeugung) und cx_swf_cnt_container (Fehler beim Setzen eines Parameters) ab.

Hinweis

Da der asynchrone RFC für den Aufruf des Verbraucherfunktionsbausteins erst nach dem nächsten COMMIT WORK ausgelöst wird, müssen Sie, damit die Ereignisse auch tatsächlich erzeugt werden, in Ihrer Anwendung nach dem Aufruf der Methode zum Erzeugen eines Ereignisses den Befehl COMMIT WORK absetzen.

Der Datenbank-Commit, der beim Bildwechsel automatisch durchgeführt wird, führt nicht zum Auslösen des asynchronen RFC.

 

Ende des Inhaltsbereichs