Elementare Datenobjekte
Zum Serialisieren und Deserialisieren elementarer Datenobjekte dient der ST-Befehl:
<tt:value [ref="node"] [map="mapping_list"]
[length|minLength|maxLength="length"]
[validation] />
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.
● Die Abbildung elementarer ABAP-Werte auf XML-Werte und umgekehrt folgt den allgemeinen Mappingvorschriften zwischen ABAP und XML (asXML).
● Mit map kann eine Abbildungsliste angegeben werden, die mehrere Werte auf einen Wert abbildet. Mit length, minLength oder maxLength kann eine Längenangabe gemacht werden.
● Mit der Angabe von validation kann eine Validierung des Wertes vorgenommen werden.
Ohne die Angabe von map wird bei der Serialisierung der Wert des elementaren ABAP-Datenobjekts, das an den aktuellen Knoten angebunden ist, an der Stelle des Befehls in das XML-Dokument eingesetzt.
Es gelten die in der ABAP-Schlüsselwortdokumentation aufgeführten Besonderheiten für die Serialisierung elementarer ABAP-Werte nach asXML .
Bei der Deserialisierung wird der aktuelle Wert des XML-Eingangsstroms an das ABAP-Datenobjekt übergeben. Dabei wird das Ende des XML-Werts entweder durch das Ende des Textknotens (z.B. bei Elementende) oder durch den Beginn eines im ST-Programm unmittelbar folgenden literalen Texts bestimmt. Der XML-Wert muss zum Typ des Datenobjekts passen und in dessen Wertebereich liegen.
Es gelten die in der ABAP-Schlüsselwortdokumentation aufgeführten Besonderheiten für die Deserialisierung elementarer asXML-Werte in ABAP-Datenobjekte .
Das folgende ST-Programm demonstriert die Abbildung von elementaren ABAP-Datentypen für Datum, Zeit und Zeitstempel nach XML und umgekehrt:
<?sap.transform
simple?>
<tt:transform
xmlns:tt="http://www.sap.com/transformation-templates">
<tt:root name="DATE"/>
<tt:root name="TIME"/>
<tt:root
name="DATETIME"/>
<tt:template>
<Date_and_Time>
<Date>
<tt:value ref="DATE"/>
</Date>
<Time>
<tt:value ref="TIME"/>
</Time>
<DateTime>
<tt:value ref="DATETIME"/>
</DateTime>
</Date_and_Time>
</tt:template>
</tt:transform>
Das folgende ABAP-Programm kann die Transformation aufrufen. Beachten Sie, dass time_stamp mit dem speziellen Typ XSDDATETIME_Z aus dem ABAP Dictionary definiert ist, der dafür sorgt, dass eine spezielle Mappingvorschrift für Zeitstempel verwendet wird.
DATA: dat
TYPE d,
tim
TYPE t,
time_stamp TYPE
xsddatetime_z,
tz
TYPE ttzz-tzone VALUE IS INITIAL,
xml_xstring TYPE xstring.
dat = sy-datum.
tim = sy-uzeit.
CONVERT DATE dat TIME tim INTO TIME STAMP time_stamp TIME ZONE tz.
CALL TRANSFORMATION ...
SOURCE date = dat
time = tim
datetime = time_stamp
RESULT
XML xml_xstring.
cl_abap_browser=>show_xml( xml_xstring = xml_xstring
modal = 'X' ).
Das Ergebnis der Transformation sieht wie folgt aus:
<?xml version="1.0" encoding="utf-8" ?>
<Date_and_Time>
<Date>2006-08-30</Date>
<Time>09:02:23</Time>
<DateTime>2006-08-30T09:02:23Z</DateTime>
</Date_and_Time>
Die Transformation ist symmetrisch.