Show TOC Anfang des Inhaltsbereichs

Syntaxdokumentation Parameter  Dokument im Navigationsbaum lokalisieren

Ein ST-Programm kann eine oder mehrere Deklarationen von Parametern

 

<tt:parameter name="..." [ref-type="..."]

                         [kind="..."]
                         [[s-val="
..."][d-val="..."]]|[val="..."] />

 

außerhalb eines Templates enthalten. Über das Attribut name wird ein symbolischer Name, über den auf die Parameter zugegriffen werden kann. Der Name darf maximal 30 Zeichen lang sein.

Der symbolische Name ist unabhängig von der Groß-/Kleinschreibung und muss eindeutig sein. Der Namensraum umfasst auch die mit tt:root deklarierten Datenwurzeln und die mit tt:variable deklarierten Variablen.

Die Parameter sind im Kontext des Haupt-Templates direkt ansprechbar. In Unter-Templates sind die Parameter des Haupt-Templates nicht bekannt.

Parameter sind spezielle Variablen und wie diese verwendbar. Zusätzlich wirken Parameter als Formalparameter eines ST-Programms (oder eines Unter-Templates):

      in tt:call (oder tt:apply) kann einem Parameter mit tt:with-parameter ein Aktualwert zugewiesen werden,

      mit dem Zusatz PARAMETERS der ABAP-Anweisung CALL TRANSFORMATION kann einem Parameter ein ABAP-Datenobjekt als Aktualparameter zugeordnet werden.

Mit ref-type kann der Formalparameter als Referenzvariable definiert werden. Der Wert von ref-type bestimmt den statischen Typ der Referenzvariable. Möglich sind alle globalen ABAP-Klassen und Interfaces für eine Objektreferenzvariable sowie Datentypen für eine Datenreferenzvariable. Die Namen von Klassen und Interfaces werden direkt und ohne Namensraum angegeben. Die Namen von Datentypen müssen wie bei tt:types über einen XML-Namensraum, angegeben werden, der den Kontext des Datentyps bestimmt. Während Klassenreferenzvariablen und Interfacereferenzvariablen vornehmlich der Erzeugung von Objekten und dem Aufruf von Instanzmethoden dienen, können Datenreferenzvariablen zur Anbindung an entsprechend typisierte Schnittstellenparameter beim Aufruf von ABAP-Methoden verwendet werden.

Mit kind kann die Art des Formalparameters angegeben werden. Die möglichen Werte für kind sind:

      "in"
Eingabeparameter – Ein Eingabeparameter übernimmt beim Aufruf den Wert des zugewiesenen Aktualparameters. Der Aktualparameter übernimmt bei der Rückkehr nicht den aktuellen Wert des Formalparameters.

      "out"
Ausgabeparameter - Ein Ausgabeparameter übernimmt beim Aufruf nicht den Wert des zugewiesenen Aktualparameters. Der Aktualparameter übernimmt bei der Rückkehr den aktuellen Wert des Formalparameters.

      "in/out"
Ein-/Ausgabeparameter - Ein Ein-/Ausgabeparameter übernimmt beim Aufruf den Wert des zugewiesenen Aktualparameters und der Aktualparameter übernimmt bei der Rückkehr den aktuellen Wert des Formalparameters.

Wenn kind nicht angegeben ist, ist der Formalparameter standardmäßig ein Eingabeparameter.

Mit den Zusätzen s-val und d-val oder val kann jedem Eingabeparameter ein Ersatzwert  zugewiesen werden, wobei die Werte als ABAP-Werte angegeben werden. Wenn einem Eingabeparameter kein Aktualparameter zugeordnet ist, wird er auf den Ersatzwert gesetzt. s-val wirkt nur bei der Serialisierung, d-val wirkt nur bei der Deserialisierung, val wirkt bei Serialisierung und Deserialisierung. Ausgabeparametern und Ein-/Ausgabeparametern kann kein Ersatzwert zugeordnet werden.

 

Beispiel

Die folgende Transformation demonstriert Parameterübergaben an eine aufgerufene Transformation. Das gleiche Beispiel wird bei der Anweisung tt:apply für Unter-Templates gezeigt.

 

Die folgende Transformation hat drei Parameter PARA1, PARA2 und PARA3.

 

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

  <tt:parameter kind="in" name="PARA1" val="4"/>
  <tt:parameter kind="out" name="PARA2"/>
  <tt:parameter kind="in/out" name="PARA3"/>

  <tt:template>
    <tt:assign to-var="PARA2" var="PARA3"/>
    <tt:assign to-var="PARA3" var="PARA1"/>
    <tt:assign to-var="PARA1" val="555"/>
  </tt:template>

</tt:transform>

 

Sie kann von folgender Transformation aufgerufen werden:

 

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

  <tt:variable name="VARI1" val="1"/>
  <tt:variable name="VARI2" val="2"/>
  <tt:variable name="VARI3" val="3"/>

  <tt:template>
    <tt:call transformation="...">
      <tt:with-parameter name="PARA1" var="VARI1"/>
      <tt:with-parameter name="PARA2" var="VARI2"/>
      <tt:with-parameter name="PARA3" var="VARI3"/>
    </tt:call>
    <X1>
      <tt:write var="VARI1"/>
    </X1>
    <X2>
      <tt:write var="VARI2"/>
    </X2>
    <X3>
      <tt:write var="VARI3"/>
    </X3>
  </tt:template>

</tt:transform>

 

Das Ergebnis der aufrufenden Transformation ist:

 

<X1>1</X1>
<X2>3</X2>
<X3>1</X3>

 

Der Eingabeparameter PARA1 wird in der aufgerufenen Transformation zwar verändert, der geänderte Wert aber nicht an den Aktualparameter VARI1 zurückgegeben.

Der Ausgabeparameter PARA2 wird auf den an die aufgerufene Transaktion übergebenen Wert des Aktualparameters VARI3 gesetzt und dieser an den Aktualparameter VARI2 zurückgegeben.

Der Ein-/Ausgabeparameter PARA3 wird auf den an die aufgerufene Transaktion übergebenen Wert des Aktualparameters VARI1 gesetzt und dieser an den Aktualparameter VARI3 zurückgegeben.

 

Ende des Inhaltsbereichs