Show TOC Anfang des Inhaltsbereichs

Syntaxdokumentation Instanzmethoden aufrufen  Dokument im Navigationsbaum lokalisieren

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.

 

Beispiel

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>

 

 

 

 

 

 

 

Ende des Inhaltsbereichs