Show TOC Anfang des Inhaltsbereichs

Objektdokumentation Datenwurzeln  Dokument im Navigationsbaum lokalisieren

Ein ST-Programm muss, um auf ABAP-Daten zugreifen zu können, mindestens eine Deklaration einer Datenwurzel außerhalb eines Templates enthalten. Die Datenwurzeln sind die Schnittstellen des ST-Programms zu den ABAP-Datenobjekten, die in der Anweisung CALL TRANSFORMATION als Quell- bzw. Zielfelder angegeben werden. Datenwurzeln werden deklariert über:

 

<tt:root name="..." [[line-]type="..." [length="..."] [decimals="..."]] [...] />

 

Mit dem Attribut name muss der Datenwurzel ein Name zugewiesen werden. Mit dem Attribut [line-]type kann sie typisiert werden.

Die auf Ebene von tt:transformation deklarierten Datenwurzeln bilden den Kontext des Haupt-Templates und sind in diesem direkt ansprechbar. In Unter-Templates sind die Datenwurzeln nicht bekannt. Sie können aber beim Aufruf von Unter-Templates an deren lokalen Datenwurzeln angebunden werden.

 

Hinweis

Ein ST-Programm, das keine Datenwurzel enthält, beschreibt ein konstantes XML-Fragment, das nicht auf ABAP-Daten zugreift. In der Anweisung CALL TRANSFORMATION ist die Angabe von Quell- bzw. Zielfeldern syntaktisch vorgeschrieben. Beim Aufruf von ST-Programmen ohne Datenwurzeln angegebene Datenobjekte werden bei der Serialisierung ignoriert und bei der Deserialisierung nicht verändert. Das Beispiel zu literalen Texten verwendet ST-Programme ohne Datenwurzeln.

 

Name der Datenwurzel

Über das Attribut name wird ein symbolischer Name deklariert, der an ein ABAP-Datenobjekt angebunden werden kann. Die Anbindung geschieht dadurch, dass dieser Name in der Anweisung CALL TRANSFORMATION als bni dem Datenobjekt ei. bei der Serialisierung bzw. fi bei der Deserialisierung zugeordnet wird (siehe ABAP-Schlüsselwortdokumentation).

Der symbolische Name ist unabhängig von der Groß-/Kleinschreibung und muss eindeutig sein. Der Namensraum umfasst auch und die mit tt:parameter deklarierten Parameter und die mit tt:variable deklarierten Variablen. Andere als die hier angegebenen Datenwurzeln können in der Anweisung CALL TRANSFORMATION nicht angegeben werden.

 

Typisierung der Datenwurzel

Über das Attribut type oder line-type von tt:root kann die Datenwurzel mit einem Datentyp typisiert werden. Während type den Typ direkt angibt, bedeutet line-type, dass es sich um eine interne Tabelle des genannten Typs handelt.

Bei Datenwurzeln ohne explizite Typisierung erfolgen alle Prüfungen erst bei Ausführung der Transformation. Bei expliziter Typisierung wird diese zur statischen Überprüfung des ST-Programms verwendet. Beispiele für ungültige Operationen, die dann bereits vom Compiler erkannt werden können, sind:

      Zugriff auf eine nicht existierende Strukturkomponente

      Schleife über einen nicht tabellenartigen Knoten

      Behandlung eines strukturierten Knotens als elementar

Zur Typisierung können elementare ABAP-Typen, Typen aus dem Repository und mit tt:type definierte Typen des gleichen ST-Programms als Wert von [line-]type angegeben werden. Für die Typangabe gilt das Gleiche wie bei der Anweisung tt:type.

 

Zugriff auf eine Datenwurzel

Der Zugriff auf eine Datenwurzel ist unter Adressierung der Datenwurzeln beschrieben. Dabei gilt bei Serialisierung und Deserialisierung die generelle Einschränkung, dass der Inhalt einer Datenwurzel während der Serialisierung nicht geändert werden darf und dass bei einer Deserialisierung nur schreibend auf eine Datenwurzel zugegriffen werden darf.

 

Beispiel

In der folgenden Transformation werden sechs Datenwurzeln inklusive Typisierung deklariert. Die Datenwurzel R1 hat den elementaren ABAP-Typ d (Datum), R2 den Typ "interne Tabelle mit elementarem Zeilentyp i", R3 den Typ DSTRUCT aus dem ABAP Dictionary, R4 den Typ ABCD_STRUCT aus der Typgruppe ABCD, und R5 ist eine Tabelle über den in der globalen Klasse CL_ABC definierten Typ ABCSTRUCT. Der Typ von R6 ist unter dem Namen STRUCT in der Transformation selbst definiert.

...

<tt:transform xmlns:tt="http://www.sap.com/transformation-templates"
              xmlns:ddic="http://www.sap.com/abapxml/types/dictionary"
              xmlns:tp="http://www.sap.com/abapxml/types/type-pool/ABCD"
              xmlns:cl="http://www.sap.com/abapxml/types/class-pool/CL_ABC"

              xmlns:def="http://www.sap.com/abapxml/types/defined" >

  <tt:type name="STRUCT">
    <tt:node name="C1" type="I"/>
    <tt:node name="C2" type="I"/>
  </tt:type>

  <tt:root name="R1" type="D"/>
  <tt:root name="R2" line-type="I"/>
  <tt:root name="R3" type="ddic:DSTRUCT"/>
  <tt:root name="R4" type="tp:ABCDSTRUCT"/>
  <tt:root name="R5" line-type="cl:ABCSTRUCT"/>
  <tt:root name="R6" type="def:STRUCT"/>

...

 

 

Ende des Inhaltsbereichs