Show TOC

Programmierter DatenflussLocate this document in the navigation structure

Verwendung

Sie können in einer Datenflussanweisung einen programmierten Datenfluss verwenden. Mit einem programmierten Datenfluss können Sie komplexere Zuweisungen vornehmen, wie z. B.:

  • Vor der Zuweisung Berechnungen oder Prüfungen auf Containerelementen vornehmen

  • Vor der Zuweisung zwei oder mehr Containerelemente zusammenfassen.

Im Datenflusseditor können Sie pro Zeile jeweils einen programmierten Datenfluss definieren.

ABAP-Klasse oder Funktionsbaustein

Sie können einen programmierten Datenfluss als ABAP-Klasse oder als Funktionsbaustein implementieren.

ABAP-Klasse

Über eine ABAP-Klasse können Sie Datenflüsse Anfang des Navigationspfads Container Nächster Navigationsschritt Container und Ausdruck Nächster Navigationsschritt Ausdruck Ende des Navigationspfads implementieren.

Ein Datenfluss, der als ABAP-Klasse implementiert ist, wird in der Liste der Datenflussanweisungen als Erweiterung angezeigt und ist in allen Workflows sichtbar. Eine solche ABAP-Klasse eignet sich daher insbesondere dazu, unternehmensweite Erweiterungen zur Verfügung zu stellen.

Eine solche Erweiterung ist vollständig in den Datenflusseditor integriert. Sie können für die Klasse eigene Prüfungen implementieren und den Namen und die Symbole für die Anzeige der Erweiterung im Datenflusseditor festlegen.

Funktionsbaustein

Über einen Funktionsbaustein können Sie einen Datenfluss Anfang des Navigationspfads Container Nächster Navigationsschritt Container implementieren Ende des Navigationspfads.

Ein Funktionsbaustein kann das Interface des BOR-Containers oder das Container-Interface verwenden.

Hinweis

Das Interface des BOR-Containers wird Kompatibilitätsgründen unterstützt. Aus folgenden Gründen empfiehlt es sich jedoch, für neue Funktionsbausteine das Container-Interface zu verwenden:

  • Beim Container-Interface gibt es keine Beschränkungen bzgl. der Datentypen. Der BOR-Container unterstützt hingegen die folgenden Datentypen nicht: REF TO, STRING, XSTRING, Felder mit einer Länge größer 255.

  • Beim Container-Interface sind keine Datentypkonvertierungen erforderlich. Dadurch ergeben sich Performance-Vorteile.

Aktivitäten

Programmierter Datenfluss mit ABAP-Klassen

Eine ABAP-Klasse für einen programmierten Datenfluss muss das folgende Interface implementieren:

  • Datenfluss Anfang des Navigationspfads Ausdruck Nächster Navigationsschritt Ausdruck Ende des Navigationspfads: IF_SWF_IFS_BIND_TRANSFORM

  • Datenfluss Anfang des Navigationspfads Container Nächster Navigationsschritt Container Ende des Navigationspfads: IF_SWF_IFS_BIND_TRANSFORM_CONT

Beide Interfaces bieten folgende Methoden:

Methoden der Interfaces

Methode

Beschreibung

CHECK

Kompatibilitätsprüfung. Kann z. B. den Datentyp der Datenquelle prüfen.

Wird vom Datenflusseditor aufgerufen, nachdem die Klasse ausgewählt wurde.

Kann leer implementiert werden, falls keine Prüfungen erforderlich sind.

TRANSFORM

Benutzerdefinierte Datenflussanweisung.

Wird zur Laufzeit aufgerufen.

GET_SUPPORTED_OPTIONS

Liste der unterstützen Optionen. Legt fest, welche Standardoptionen sichtbar sind.

Wird vom Datenflusseditor aufgerufen.

Wenn die statischen Methoden CHECK und TRANSFORM implementiert sind und die Klasse aktiviert ist, steht die Klasse als Auswahl im Listenfeld für die Datenflussanweisung unter Erweiterungen zur Verfügung.

Datenfluss Ausdruck -> Ausdruck mit IF_SWF_IFS_BIND_TRANSFORM

Das Interface ermittelt den Quell- und den Zielausdruck und übergibt diese als source_element und target_element an die benutzerdefinierte Klasse. Die Klasse kann in der CHECK-Methode z. B. den Datentyp des Quell- und Zielausdrucks ermitteln.

Ein Beispiel für diese Art des Datenflusses ist die Demo-Klasse CL_SWF_BND_TRANS_ADD_TO, die den Quellausdruck zum Zielausdruck addiert. Der Quellausdruck kann eine Tabelle sein.

Datenfluss Container -> Container mit IF_SWF_IFS_BIND_TRANSFORM_CONT

Ein Datenfluss Container Container kann nur Änderungen im Zielcontainer vornehmen. Änderungen im Quellcontainer sind nicht zulässig.

Das Interface ermittelt den Quell- und den Zielcontainer und übergibt diese als source_container und target_container an die benutzerdefinierte Klasse.

Zusätzlich übergibt das Interface den Datenflusszeitpunkt dataflow_event an die CHECK- und die TRANSFORM-Methode. So können Sie auf einen Aufruf zum Import- bzw. Exportzeitpunkt jeweils unterschiedlich reagieren. Zum Beispiel gilt bei einem Datenfluss zwischen dem Workflow und einem Schritt:

  • Zum Exportzeitpunkt ist der Workflow-Container der Quellcontainer, der Aufgabencontainer der Zielcontainer.

  • Zum Importzeitpunkt ist der Aufgabencontainer der Quellcontainer, der Workflow-Container der Zielcontainer.

In der CHECK-Methode können Sie Plausibilitätsprüfungen implementieren. Sie können z. B. prüfen, ob bestimmte Elemente im Quell- oder Zielcontainer definiert sind.

Anzeige im Datenflusseditor mit IF_SWF_IFS_BIND_PRESENTATION

Zusätzlich kann die Klasse das Interface IF_SWF_IFS_BIND_PRESENTATION implementieren. Das Interface stellt den Namen, die sprachabhängige Bezeichnung und die Ikone für die Klasse zur Verfügung. Diese werden angezeigt, wenn Sie im Listenfeld für die Datenflussanweisung die Klasse auswählen.

Methoden des Interfaces

Methode

Beschreibung

GET_ICON

Für die Klasse angezeigtes Symbol.

GET_NAME

Eindeutige sprachunabhängige Bezeichnung für die Klasse, z. B. "Add to".

GET_DESCRIPTION

Sprachabhängige Bezeichnung, z. B. "Addieren zu".

Diese Bezeichnung wird an folgenden Stellen angezeigt:

  • im Listenfeld unter Erweiterungen

  • als Quickinfo

  • als Feldname

Die folgenden Methoden werden derzeit nicht verwendet. Sie müssen implementiert werden, können aber leer sein:

  • GET_SYMBOL

  • GET_TEXT_KEY

  • TO_HTML

  • TO_STRING

Programmierter Datenfluss mit Funktionsbaustein

Einen Funktionsbaustein für einen programmierten Datenfluss sollten Sie in der Funktionsgruppe erstellen, die in den Grunddaten des Workflow angegeben ist. Diese Funktionsgruppe sollte alle zu diesem Workflow erzeugten Objekte enthalten. Wenn Sie einen Funktionsbaustein über den Datenflusseditor anlegen, wird er automatisch in dieser Funktionsgruppe angelegt. Ist in den Grunddaten des Workflow noch keine Funktionsgruppe angegeben, wird sie automatisch erstellt.

Ein neu angelegter Funktionsbaustein basiert auf folgendem Funktionsbaustein:

  • BOR-Container: SWA_TEMPLATE_EXECUTE_DATAFLOW

  • Container-Interface: SWA_BINDING_TEMPLATE

Eine Beschreibung der Interfaces und Hinweise zur Programmierung finden Sie in der Funktionsbausteindokumentation.