Show TOC

Dokumentation zur SyntaxObjekt erzeugen Dieses Dokument in der Navigationsstruktur finden

In einem ST-Programm kann wie folgt ein Instanz einer globalen Klasse von ABAP Objects erzeugt werden:

Syntax Syntax

  1. <tt:create-object var=″oref″ [class=″class″]>
  2.   [<tt:with-parameter name="para1" [ref=″node1″|val=″val1″|var=″var1″] />
  3.    <tt:with-parameter name="para2" [ref=″node2”|val=″val2”|var=″var2″] />
  4.    ...]
  5. </tt:call-method>
Ende des Codes

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.

Das Objekt wird im internen Modus des ABAP-Programms erzeugt, welches das ST-Programm aufgerufen hat. Wenn das Attribut class nicht angegeben ist, muss var eine Klassenreferenzvariable sein und es wird eine Instanz der entsprechenden Klasse erzeugt. Wenn das Attribut class angegeben ist, wird eine Instanz der angegebenen Klasse erzeugt. Für class kann eine globale Klasse der ABAP-Klassenbibliothek angegeben werden, die spezieller oder gleich dem statischen Typ der Referenzvariable var ist:

  • Wenn var eine Klassenreferenzvariable ist, muss class die Klasse oder Unterklasse der Klasse von var sein.

  • Wenn var eine Interfacereferenzvariable ist, muss class das Interface von var implementieren.

Die Schnittstellenparameter para1, para2, ... des Instanzkonstruktors der Klasse des Objekts können bzw. müssen mit dem ST-Befehl tt:with-parameter mit Aktualparametern verknüpft werden. Dabei gelten die gleichen Regeln wie beim normalen Methodenaufruf. Bezüglich der Ausnahmebehandlung für Ausnahmen des Konstruktors gilt ebenfalls das gleiche wie für den normalen Methodenaufruf.

Nach der Objekterzeugung zeigt die Referenzvariable var auf das Objekt und kann für den Aufruf von Instanzmethoden verwendet werden

Beispiel

Die folgende Simple Transformation erzeugt ein Objekt der Klasse cls über die Variable ovar und übergibt dabei die Datenwurzel PARA an den Parameter repl von deren Instanzkonstruktor. Danach wird die Methode convert aufgerufen, deren Eingabe/Ausgabeparameter die Variable result zugeordnet wird. Beachten Sie, dass einem Eingabe/Ausgabeparameter keine Datenwurzel zugeordnet werden kann - weder beim Serialisieren, noch beim Deserialisieren.

Syntax Syntax

  1. <tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
  2.   <tt:root name="ROOT"/>
  3.   <tt:root name="PARA"/>
  4.   <tt:variable name="ovar" ref-type="cls"/>
  5.   <tt:variable name="result"/>
  6.   <tt:template>
  7.     <tt:create-object var="ovar">
  8.       <tt:with-parameter name="repl" ref="PARA"/>
  9.     </tt:create-object>
  10.     <tt:assign ref="ROOT" to-var="result"/>
  11.     <tt:call-method s-name="convert" var="ovar">
  12.       <tt:with-parameter name="text" var="result"/>
  13.     </tt:call-method>
  14.     <Result>
  15.       <tt:write var="result"/>
  16.     </Result>
  17.   </tt:template>
  18. </tt:transform>
Ende des Codes

Ein aufrufendes ABAP-Programm kann wie folgt aussehen:

Syntax Syntax

  1. DATA xml_string TYPE string.
  2. DATA text       TYPE string VALUE '1 2 3'.
  3. DATA repl       TYPE string value '*'.
  4. DATA exc        TYPE REF TO cx_st_call_method_error.
  5. TRY.
  6.     CALL TRANSFORMATION ...
  7.       SOURCE root = text
  8.              para = repl
  9.       RESULT XML xml_string.
  10.   CATCH cx_st_call_method_error INTO exc.
  11.     ...
  12. ENDTRY.
  13. cl_abap_browser=>show_xml( xml_string = xml_string
  14.                            modal = 'X' ).
Ende des Codes

Der Konstruktor und die Methode convert der Klasse cls seien wie folgt definiert:

Syntax Syntax

  1. METHOD constructor.
  2.   me->repl = repl.
  3. ENDMETHOD.
  4. METHOD convert.
  5.   REPLACE ALL OCCURRENCES OF ` ` IN text WITH repl.
  6. ENDMETHOD.
Ende des Codes

Das Ergebnis der Transformation ist dann wie folgt:

<Result>1*2*3</Result>