Mit der Anweisung sap:external-function können Sie eine Funktion für ABAP-Aufrufe von XPath aus deklarieren. Im Gegensatz zu sap:call-external kann nur ein einzelner Rückgabewert für den Methodenaufruf angegeben werden. Zu diesem Zwecke muß die aufzurufende Methode im Toplevel des XSLT-Programms als externe Funktion deklariert werden. So deklarierte Funktionen können für Methodenaufrufe in XPath-Ausdrücken verwendet werden.
Funktionen dieser Art verwenden stets einen eigenen Namensraum (weder XSLT- noch SAP-XSLT-Namensraum).
Beim Aufruf von Interface-Methoden müssen diese grundsätzlich über den Namen des Interfaces gefolgt vom Interface-Komponentenselektor (intf~) gekennzeichnet werden.
... von Instanzmethoden:
<sap:external-function name="prefix:fName" method="instanceMethod" kind="instance"> <sap:argument param="PARAM_1"/> <sap:argument param="PARAM_2"/> ... <sap:result param="RESULT" type="xslType"/> </sap:external-function> |
... von Klassenmethoden:
<sap:external-function name="prefix:fName" class="className" method="classMethod" kind="class"> <sap:argument param="PARAM_1"/> <sap:argument param="PARAM_2"/> ... <sap:result param="RESULT" type="xslType"/> </sap:external-function> |
... der Konstruktoren:
<sap:external-function name="prefix:new" class="className" kind="constructor"> <sap:argument param="PARAM_1"/> <sap:argument param="PARAM_2"/> ... </sap:external-function> |
Mit Ausnahme der Konstruktor-Deklaration gibt das Attribut method den Namen der aufzurufenden ABAP-Methode an. Das Attribut kind legt darüber hinaus fest, ob es sich um eine Instanz- bzw. eine Klassenmethode oder um einen Kontruktor handelt. Bei Klassenmethoden und Konstuktoren wird über das Attribut class der Name der ABAP-Klasse angegeben.
Die Liste der Funktionsargumente wird (unter Berücksichtigung der Reihenfolge) mit Hilfe der Sub-Anweisung sap:argument deklariert. Die Namen der korrespondierenden ABAP-Parameter werden mit dem Attribut param spezifiziert.
Aufrufe der Instanzen- und Klassenmethoden können einen Rückgabewert mittels der Sub-Anweisung sap:result definieren. Der Name des Rückgabeparameters wird durch das Attribut param spezifiziert. Optional kann mittels des Attributs type ein bestimmter XSLT-Typ (string, number, boolean, node-set oder external) dem Resultat zugeordnet werden.
Deklarierte Funktionen können in XPath-Ausdrücken für ABAP-Aufrufe verwendet werden. Bei Instanzmethoden muß dabei das erste Funktionsargument mit einen ABAP-Objekt identifiziert werden.
Beispiel:
<xsl:value-of select="prefix:f1($x,99,'abc')"/>
|
In vorliegenden Beispiel definiert die Funktion mit dem Namen prefix:f1 einen ABAP-Aufruf mittels einer Instanzmethode, die die beiden Werte 99 und 'abc' als Eingabeparameter übergibt. Das erste Funktionsargument $x identifiziert das gewünschte ABAP-Objekt.
Bei Verwendung einer passend deklarierten Konstuktor-Funktion kann dieser Aufruf alternativ auch so geschrieben werden:
<xsl:value-of select="prefix:f1(prefix:new('xyz'),99,'abc')"/>
|