Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Registerkarte Programmier-Exits  Dokument im Navigationsbaum lokalisieren

Verwendung

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.

Achtung

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.

Funktionsumfang

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

 

Container-Zugriffe

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

Ausnahmebehandlung

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.

 

Beispiel

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.

Ende des Inhaltsbereichs