The language constructions of simple transformations support the formulation of reversible transformations, that is, of programs that provide the original values in the execution sequence serialization – deserialization (or vice versa). However, it is also possible to write programs that cannot be reversed.
This simple example illustrates a non-symmetrical transformation. Because the tt.value commands are not enclosed in separate elements, the serialized values of ROOT1 and ROOT2 are merged in X.
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="ROOT1"/>
<tt:root
name="ROOT2"/>
<tt:template>
<X>
<tt:value ref="ROOT1"
/>
<tt:value ref="ROOT2"
/>
</X>
</tt:template>
</tt:transform>
The following ABAP program can call the transformation:
DATA xml_string TYPE
string.
DATA field1 TYPE string VALUE 'Hello'.
DATA field2 TYPE string VALUE ' World!'.
DATA result1 like field1.
DATA result2 like field2.
CALL TRANSFORMATION
...
SOURCE root1 = field1
root2 = field2
RESULT XML
xml_string.
CALL TRANSFORMATION
...
SOURCE XML xml_string
RESULT root1 = result1
root2 = result2.
The result of the serialization is:
<X>Hello World!</X>
Accordingly, the result of the deserialization to result1is “Hello World!”, while result2retains its initial value, which is different from the original content field1 and field2.
For a symmetrical transformation, the tt:value commands must be positioned in individual elements each or they must be separated by a unique text (which cannot appear in the first value).