Registerkarte Programmier-Exits
Auf dieser Registerkarte können Sie Programmier-Exits angeben. Ein Programmier-Exit ist eine ABAP-Klasse, die das System zu einem bestimmten Zeitpunkt während der Verarbeitung eines Workflows ausführt. Über Programmier-Exits können Sie eigene Erweiterungen und Anpassungen implementieren.

In einer ABAP-Klasse, die Sie als Programmier-Exit verwenden, dürfen Sie die folgenden Elemente nicht verwenden:
● COMMIT WORK
● ROLLBACK WORK
● Aufruf des Funktionsbausteins DB_COMMIT
● Jegliche Art von RFC-Aufrufen
● Ändern eines Systemelements im Container
Aus Performance-Gründen sollten Sie nur absolut notwendige Datenbankselektionen ausführen.
Eine ABAP-Klasse, die Sie als Programmier-Exit verwenden, muss bestimmte Interfaces implementieren. Das System führt die Klassen in der angegeben Reihenfolge aus.
Abhängig vom implementierten Interface führt das System die ABAP-Klassen zu unterschiedlichen Zeitpunkten der Workflow-Verarbeitung aus. Folgende Tabelle zeigt die Interfaces und die zugehörigen Ausführungszeitpunkte:
Interface |
Ausführungszeitpunkt |
IF_SWF_IFS_WF_CONSTRUCTOR |
Das System führt die Methode WF_CONSTRUCTOR vor der Workflow-Ausführung aus |
IF_SWF_IFS_WF_DESTRUCTOR |
Das System führt die Methode WF_DESTRUCTOR aus, wenn das zugehörige Workflow-Workitem in den Status beendet oder logisch gelöscht erhält |
IF_SWF_IFS_WORKITEM_EXIT |
Das System führt die Methode EVENT_RAISED aus, sobald das zugehörige Workflow-Workitem einen im Interface definierten Statuswechsel durchläuft |
Um in einer ABAP-Klasse mit dem Container zu arbeiten, müssen Sie die Include-Dateien <CNTN02> und <CNTN03> einbinden.
Siehe auch:
Makrobefehle zum
Bearbeiten eines Containers
Für ABAP-Klassen, die das Interface IF_SWF_IFS_WORKITEM_EXIT implementieren, können Sie in der Methode EVENT_RAISED eine Ausnahme der Klasse CX_SWF_IFS_WORKITEM_EXIT_ERROR auslösen.
Tritt eine Ausnahme auf, erhalten das entsprechende Workitem und der Workflow den Status Fehler. Um den Workflow nach Behebung des Fehlers fortzusetzen, müssen Sie ihn manuell mit der Transaktion SWPR fortsetzen. Dialog-Workitems erhalten den Status Bereit und werden erneut ausgeführt.
Sie können eine T100 Meldung für die Ausnahme definieren (Transaktion SE91). Tritt die Ausnahme auf, schreibt das System die Meldung in das Workflow-Protokoll.
Folgende Tabelle zeigt die Details der Ausnahmbehandlung in Abhängigkeit vom Zeitpunkt des Auftretens der Ausnahme:
Auslösen der Ausnahme |
Ausnahmebehandlung |
Während der Erzeugung eines Workflows (BEF_CREATE und CREATED) |
Der Workflow wird nicht erzeugt. Ein manuell von einem Benutzer gestarteter Workflow meldet den Fehler direkt an den Benutzer. Bei einem Workflow, der durch ein Startereignis gestartet wird, ist der Fehler im Ereignisprotokoll ersichtlich. |
Während der Ausführung eines Workflows |
Das aktuelle Workitem und der Workflow erhalten den Status Fehler. Ist das aktuelle Workitem nicht auf der Datenbank vorhanden, zeichnet das Workflow-Protokoll den Fehler für den vorhergehenden Schritt auf. |
Während der Bearbeitung eines Workitems (z. B. Weiterleiten, Annehmen, Zurücklegen, Auf erledigt setzen, Statusänderung) |
Die Änderungen werden zurückgesetzt und der entsprechende Funktionsbaustein gibt einen Fehler zurück. |
Während einer Statusänderung auf Fehler oder Beendet |
Das Workflow-Protokoll zeichnet die Ausnahme auf, sie wird ansonsten jedoch ignoriert. In einem Programmier-Exit sollten Sie daher keine Ausnahmen beim Übergang des Ereignisses STATE_CHG auslösen. Der Programmier-Exit kann jedoch unter Verwendung des Workitem-Kontexts eine Meldung ins Workflow-Protokoll schreiben. |
Folgende Tabelle zeigt Beispiele für ABAP-Klassen, die die genannten Interfaces implementieren:
Interface |
ABAP-Klasse |
IF_SWF_IFS_WORKITEM_EXIT |
CL_SWH_WORKITEM_EXIT |
IF_SWF_IFS_WF_CONSTRUCTOR IF_SWF_IFS_WF_DESTRUCTOR |
CL_SWF_IFS_WF_EXITS (dient als Konstruktur und Destruktor) |
Ein weiteres Beispiel für einen Programmier-Exit finden Sie im SAP-Workflow Abwesenheitsmitteilung bearbeiten (AF_APPROVE, WS30000015). Dieser realisiert ein Prozessinfosystem.
Um das Prozessinfosystem aufzurufen, wählen Sie Werkzeuge → Business Workflow → Entwicklung → Demo → Workitem-Exits → Prozessinfosystem.