Show TOC Anfang des Inhaltsbereichs

Syntaxdokumentation Datenobjekte inklusive aller Komponenten  Dokument im Navigationsbaum lokalisieren

Zum Serialisieren und Deserialisieren beliebiger Datenobjekte außer Referenzvariablen oder solchen, die Referenzvariablen als Komponenten enthalten, dient der ST-Befehl:

 

<tt:copy [ref="node"] />

 

Mit dem optionalen Attribut ref kann der aktuelle Knoten für den Befehl bestimmt werden. Ohne die Angabe von ref wird implizit der aktuelle Knoten des umgebenden Elements verwendet.

Dieser Befehl verwendet das asXML-Format, d.h. die kanonische XML-Repräsentation von ABAP-Daten, die bei der Serialisierung über XSL-Transformationen als Zwischenschritt erzeugt wird. Dieses Format ist in der ABAP-Schlüsselwort-Dokumentation beim Befehl CALL TRANSFORMATION beschrieben.

 

Serialisierung

Bei der Serialisierung wird das gesamte ABAP-Datenobjekt, das an den aktuellen Knoten angebunden ist, mit allen seinen Komponenten rekursiv in das asXML-Format transformiert und dieses an der Stelle des Befehls in das XML-Dokument eingesetzt.

Deserialisierung

Bei der Deserialisierung wird der XML-Datenstrom als asXML-Format interpretiert und dessen Werte an das an den aktuellen Knoten angebundene ABAP-Datenobjekt übergeben.

 

Achtung

Bei der Serialisierung von Datenobjekten  mit  tt:copy ist zu beachten, dass nicht automatisch ein Knoten für das erzeugte asXML-Format eingefügt wird. Um ein gültiges XML-Dokument zu erhalten, muss dieser Knoten explizit im Template angegeben werden. Ansonsten ist das XML-Dokument nicht deserialisierbar. Davon ausgenommen sind nur Strukturen mit einer einzigen Komponente oder interne Tabellen mit einer einzigen Zeile, was in der Regel aber keinerlei praktischen Nutzen bietet.

 

Beispiel

Die folgende Simple Transformation serialisiert das an die Datenwurzel ROOT angebundene ABAP-Datenobjekt unterhalb des Knotens <node> in das asXML-Format.

 

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

  <tt:root name="ROOT"/>

  <tt:template>

    <node>
      <tt:copy  ref="ROOT" />
    </node>
  </tt:template>

</tt:transform>

 

Wenn das ABAP-Programm aus dem Beispiel im Abschnitt Interne Tabellen diese Transformation aufruft, ist das Ergebnis der Serialisierung wie folgt:

 

<node>

  <item>
    <KEY>2</KEY>
    <VALUES>
      <item>4</item>
      <item>8</item>
      <item>16</item>
    </VALUES>
  </item>
  <item>
    <KEY>3</KEY>
    <VALUES>
      <item>9</item>
      <item>27</item>
      <item>81</item>
    </VALUES>
  </item>
  <item>
    <KEY>4</KEY>
    <VALUES>
      <item>16</item>
      <item>64</item>
      <item>256</item>
    </VALUES>
  </item>

</node>

 

Die Simple Transformation ist symmetrisch.

 

Ohne die  Angabe des Knotens <node> ergäbe die Transformation kein gültiges XML-Dokument und die Deserialisierung würde zu einer Ausnahme führen.

 

Ende des Inhaltsbereichs