Bei der Adressierung von Unterknoten muss zwischen undefiniertem und definiertem aktuellen Knoten unterschieden werden.
Wenn der aktuelle Knoten undefiniert ist, sind die Unterknoten der Datenwurzeln des Templates wie folgt adressierbar:
“name.node1.node2. ... .noden“
Dabei ist “name“ der symbolische Name einer Datenwurzel und “node1“ bis “noden“ sind die tatsächlichen Namen von Komponenten der Hierarchiestufen 1 bis n. Bei Ausführung der Transformation muss das an die Datenwurzel angebundene ABAP-Datenobjekt einen strukturierten Typ mit den entsprechenden Komponenten haben.
Bei undefiniertem aktuellen Knoten wird der erste Name einer Kette immer als Name einer Datenwurzel interpretiert. Insbesondere bezeichnet “name“ die Datenwurzel selbst.
· Die Unterknoten des aktuellen Knotens sind wie folgt adressierbar:
“node1.node2. ... .noden“
oder
Dabei sind “node1“ bis “noden“ die tatsächlichen Namen von Komponenten der Hierarchiestufen 1 bis n unterhalb des aktuellen Knotens. Bei definiertem aktuellen Knoten wird der erste Name einer Kette immer als Name einer Komponente des aktuellen Knotens interpretiert. Obige Kette ist deshalb gleichbedeutend zu
“$ref.node1.node2. ... .noden“
wobei $ref den aktuellen Knoten bezeichnet.
· Die Unterknoten der Datenwurzeln des Templates sind wie folgt adressierbar:
“.name.node1.node2. ... .noden“
Dabei ist “name“ der symbolische Name einer Datenwurzel und “node1“ bis “noden“ sind die tatsächlichen Namen von Komponenten der Hierarchiestufen 1 bis n. Der Punkt “.“ umgeht die Verschattung durch den aktuellen Knoten.
Bei Ausführung der Transformation muss das an den aktuellen Knoten bzw. die Datenwurzel angebundene ABAP-Datenobjekt einen strukturierten Typ mit den entsprechenden Komponenten haben.
Bei definiertem Knoten wird der erste Name einer Kette immer als Name einer Unterkomponente des aktuellen Knotens interpretiert. Insbesondere bezeichnet “node“ keine Datenwurzel, sondern eine direkte Unterkomponente des aktuellen Knotens.
Das folgende ST-Programm ist geeignet, eine geschachtelte ABAP-Struktur zu serialisieren.
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT"/>
<tt:template>
<X>
<X1>
<tt:value ref="ROOT.COL1"
/>
</X1>
<X2>
<tt:value ref="ROOT.COL2"
/>
</X2>
<X3>
<X1>
<tt:value
ref="ROOT.STRUC2.COL1" />
</X1>
<X2>
<tt:value
ref="ROOT.STRUC2.COL2" />
</X2>
</X3>
</X>
</tt:template>
</tt:transform>
Der aktuelle Knoten wird für jeden tt:value-Befehl einzeln auf einen Unterknoten der Datenwurzel gesetzt. Ansonsten ist der aktuelle Knoten undefniert und die Datenwurzel ROOT kann über "ROOT" angesprochen werden.
Siehe das Beispiel im Abschnitt Strukturen für einen Aufruf der Transformation.