Show TOC Anfang des Inhaltsbereichs

Syntaxdokumentation Objekt erzeugen  Dokument im Navigationsbaum lokalisieren

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

 

<tt:create-object var=″oref″ [class=″class″]>
  [<tt:with-parameter name
="para1" [ref=node1|val=val1|var=var1] />
   <tt:with-parameter 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.

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.

 

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">

  <tt:root name="ROOT"/>

  <tt:root name="PARA"/>

  <tt:variable name="ovar" ref-type="cls"/>

  <tt:variable name="result"/>

  <tt:template>

    <tt:create-object var="ovar">

      <tt:with-parameter name="repl" ref="PARA"/>

    </tt:create-object>

    <tt:assign ref="ROOT" to-var="result"/>

    <tt:call-method s-name="convert" var="ovar">

      <tt:with-parameter name="text" 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 text       TYPE string VALUE '1 2 3'.

DATA repl       TYPE string value '*'.

DATA exc        TYPE REF TO cx_st_call_method_error.

 

TRY.

    CALL TRANSFORMATION ...

      SOURCE root = text

             para = repl

      RESULT XML xml_string.

  CATCH cx_st_call_method_error INTO exc.

    ...

ENDTRY.

 

cl_abap_browser=>show_xml( xml_string = xml_string

                           modal = 'X' ).

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

 

METHOD constructor.

  me->repl = repl.

ENDMETHOD.

 

METHOD convert.

  REPLACE ALL OCCURRENCES OF ` ` IN text WITH repl.

ENDMETHOD.

 

Das Ergebnis der Transformation ist dann wie folgt:

 

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

 

 

 

Ende des Inhaltsbereichs