In einem ST-Programm kann wie folgt eine Instanzmethode einer globalen Klasse von ABAP Objects aufgerufen werden:
<tt:call-method var="oref" [s-|d-]name="meth">
[<tt:with-parameter
[s-|d-]name="para1"
[ref="node1"|val="val1"|var="var1"]
/>
<tt:with-parameter
[s-|d-]name="para2"
[ref="node2"|val="val2"|var="var2"]
/>
...]
</tt:call-method>
Mit var kann eine Variable oder ein Parameter des ST-Programms angegeben werden. Die Variable bzw. der Parameter muss mit dem Zusatz ref-type als Klassen- oder Interfacereferenzvariable angelegt worden sein und bei Ausführung des Aufrufs auf ein Objekt einer Klasse zeigen. Das Objekt kann entweder im ST-Programm mit tt:create-object erzeugt worden sein oder es ist eine entsprechende ABAP-Referenzvariable an eine Datenwurzel des ST-Programms angebunden, die der Variable oder dem Parameter zugewiesen ist.
Mit meth kann eine öffentlich sichtbare Methode angegeben werden, die im statischen Typ der Referenzvariable, also in der Klasse oder dem Interface, vorhanden ist. Dabei wird nicht nach der Groß-/Kleinschreibung unterschieden.
Betreffs Methodenausführung und Parameterübergabe gilt das gleiche wie beim statischen Methodenaufruf.
Die folgende Transformation ruft eine Instanzmethode convert in einem Objekt auf, das von der Variablen ovar referenziert wird. Die Referenz auf das Objekt wird mittels tt:assign der Datenwurzel OREF entnommen. Die Datenwurzel ROOT wird dem Eingabeparameter input der Methode übergeben und deren Rückgabewert result wird einer gleichnamigen Variablen zugeordnet. Die Variable result wird dann mit tt:write serialisiert. Beachten Sie, dass dem Rückgabewert der Methode beim Serialisieren keine Datenwurzel zugeordnet werden kann..
<tt:transform
xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT"/>
<tt:root name="OREF"/>
<tt:variable name="ovar"
ref-type="cls "/>
<tt:variable
name="result"/>
<tt:template>
<tt:assign
ref="OREF" to-var="ovar"/>
<tt:call-method
s-name="convert" var="ovar">
<tt:with-parameter name="input" ref="ROOT"/>
<tt:with-parameter name="result" var="result"/>
</tt:call-method>
<Result>
<tt:write var="result"/>
</Result>
</tt:template>
</tt:transform>
Ein aufrufendes ABAP-Programm kann wie folgt aussehen:
DATA xml_string TYPE string.
DATA oref
TYPE REF TO cls.
DATA text
TYPE string VALUE '1 2 3'.
DATA exc TYPE REF
TO cx_st_call_method_error.
CREATE OBJECT oref.
TRY.
CALL TRANSFORMATION
...
SOURCE
root = text
oref = oref
RESULT
XML xml_string.
CATCH cx_st_call_method_error
INTO exc.
...
ENDTRY.
cl_abap_browser=>show_xml( xml_string = xml_string
modal = 'X' ).
Die Methode convert der Klasse cls sei wie folgt definiert:
METHOD convert.
result = input.
REPLACE ALL OCCURRENCES OF ` ` IN
result WITH `-`.
ENDMETHOD.
Das Ergebnis der Transformation ist dann wie folgt:
<Result>1-2-3</Result>