Ausdrücke: Funktionale Methoden
Auf der Quellseite einer Datenflusszeile können Sie innerhalb eines Ausdrucks eine funktionale Methode verwenden. Sie können eine funktionale Methode z. B. für folgende Zwecke einsetzen:
· Ausführen von Berechnungen
· Ausführen von Datentransformationen, wie z. B. Währungsumrechnungen
· Aufrufen einer GET_ -Methode, um ein privates Attribut des Business-Objekts (BOR) zu lesen

Eine funktionale Methode ist eine Methode eines klassischen Business-Objekts (BOR) oder einer ABAP-Klasse, die nur einen Rückgabewert liefert (Parameter Result oder Returning). Sie können jedoch auch eine andere Methode mit mindestens einem Export-Parameter verwenden. In diesem Fall müssen Sie angeben, welcher Export-Parameter als Rückgabewert verwendet werden soll.
Sie haben die Methode in der entsprechenden ABAP-Klasse bzw. für das BOR-Objekt implementiert.
Ein Ausdruck für den Aufruf einer Methode wird automatisch erzeugt, wenn Sie im Container das gewünschte Objekt wählen und dann unter dem Knoten _Methods die entsprechende funktionale Methode wählen.
Sie können eine Instanzmethode oder eine Klassenmethode (statische Methode) aufrufen. Der Aufruf ist jeweils wie folgt aufgebaut:
&containerelement.methode(parameterliste)&
Aufruf einer Instanzmethode, in & eingeschlossen.
%klasse.methode(parameterliste)%
Aufruf einer statischen Methode, in % eingeschlossen.
Beachten Sie bei der Angabe der Parameter folgende Konventionen:
· Schließen Sie die Parameterliste in runde Klammern () ein, auch wenn die Liste leer ist.
· Geben Sie die Parameter entweder durch Strichpunkt ; oder durch Komma , getrennt an.
Innerhalb eines Aufrufs dürfen Sie nicht Strichpunkte und Kommas gleichzeitig als Trennzeichen verwenden.
· Zur Verbesserung der Lesbarkeit können Sie in der Parameterliste beliebig viele Leerzeichen verwenden.
Sie können die Namen der Parameter explizit angeben oder, um die Eingabe zu beschleunigen, nur die Parameterwerte angeben. Wenn Sie nur die Parameterwerte angeben, müssen Sie die in der Methode festgelegte Reihenfolge der Parameter beachten. Das System fügt die Parameternamen automatisch hinzu. Folgendes Beispiel zeigt die beiden Möglichkeiten.

Parameternamen explizit angegeben:
&My_Object.My_Method(Import01 = ’A’ ; Import03 = 1)&
Parameternamen nicht angegeben (Stellungsparameter):
&My_Object.My_Method(’A’ ; ; 1)&
Als Parameterwerte können Sie verwenden:
· Ausdrücke, z. B. &Element01&, &My_Object.Component01& oder %UZEIT%
· Konstanten vom Typ String, z. B. ’USNAME’ oder “String Value“.
Konstanten vom Typ String müssen Sie in einfachen ’ oder doppelten Hochkommas “ angeben.
· Numerische Konstanten, z B. 1 oder 1.5
Für die Import- und Exportparameter der Methode werden alle Datentypen unterstützt, die auch in den jeweiligen Repositories (Business Objekt Repository und Class Builder) verwendet werden können:
· Einfache Typen
· Flache Strukturen
· Objekte
ABAP Objects unterstützt zusätzlich Referenztypen und tiefe Strukturen:
· ref to object
· ref to data
· string
· Xstring
· tiefe Strukturen, wie z B. Strukturen mit Referenztypen als Komponenten
Eine funktionale Methode liefert nur einen Rückgabewert (Parameter Result für BOR-Objekte, Parameter Returning für ABAP-Klassen). Bei einer funktionalen Methode müssen Sie in der Parameterliste den Parameternamen für den Rückgabewert nicht explizit angeben, wie folgendes Beispiel zeigt:

&My_Object.My_Method()&
Der Ausdruck liefert den Wert, den My_Method als Rückgabewert über den Parameter Result zurückgibt.
Bei einer Methode mit mehreren Exporting oder Changing-Parametern müssen Sie angeben, welcher der Exportparameter als Rückgabewert verwendet werden soll. Dazu geben Sie in der Parameterliste als ersten Parameter _result an und weisen ihm den Namen des gewünschten Exportparameters zu, wie folgendes Beispiel zeigt:

&My_Object.My_Method(_result=’my_exp_param’;Param1=’A’;Param2=’B’)&
Die Methode gibt den Wert my_exp_param zurück. Alle weiteren Exporting-, Changing- oder Result-Parameter werden ignoriert.
Wenn die Methode eine Struktur liefert, können Sie auf ein einzelnes Feld der Struktur zugreifen. Dazu geben Sie hinter der schließenden Klammer der Parameterliste das gewünschte Feld an, wie folgendes Beispiel zeigt:

&My_Object.Get_Position(PosNumber=1).PositionID&
Der Ausdruck liefert die PositionID der ersten Position.
Wenn die Methode eine Tabelle liefert, können Sie per Index auf eine bestimmte Zeile der Tabelle und deren Attribute zugreifen, wie folgendes Beispiel zeigt:

&My_Object.Get_PositionList()[1].PositionID&
Der Ausdruck liefert die PositionID der ersten Zeile.
Für funktionale Methoden innerhalb von Ausdrücken gelten folgende Einschränkungen:
· Keine Verwendung von Dialogelementen
In einem Ausdruck dürfen Sie keine Methode verwenden, die Dynpros oder den ABAP-Befehl message aufrufen oder eine Methode aufrufen, die solche Dialogelemente enthält.
Da die im Ausdruck angegebene Methode im Hintergrund ausgeführt wird, führt jeder Aufruf eines Dialogelements zu einem Abbruch.
· Kein Auslösen eines COMMIT
In einem Ausdruck dürfen Sie keine Methode verwenden, die einen Datenbank-COMMIT (Funktionsbaustein: DB_COMMIT) oder den ABAP Befehl commit work aufruft.
Ein solcher Aufruf würde die Commit-Logik der SAP WebFlow Engine unterlaufen. Dadurch können Datenfehler entstehen und die Restart-Möglichkeiten des Workflow verloren gehen.
· Keine asynchrone Methoden
In einem Ausdruck dürfen Sie keine asynchronen Methode verwenden. Die SAP WebFlow Engine kann innerhalb von Ausdrücken nur Methodenergebnisse verarbeiten, die synchron zurückgeliefert werden.