Ansicht
Dokumentation

ABENABAP_XSLT_ASXML_ELEMENTARY - ABAP XSLT ASXML ELEMENTARY

ABENABAP_XSLT_ASXML_ELEMENTARY - ABAP XSLT ASXML ELEMENTARY

SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up   SUBST_MERGE_LIST - merge external lists to one complete list with #if... logic for R3up  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- Mapping elementarer ABAP-Typen

Die asXML-Darstellung elementarer ABAP-Typen findet sowohl bei XSL-Transformationen als auch bei Simple Transformations Anwendung. Elementare Werte bzw. die elementaren Komponenten komplexer Strukturen werden in beiden Fällen gemäß dieses Mappings konvertiert.

Für elementare Datenobjekte mit eingebauten ABAP-Typen beruht die asXML-Darstellung auf der Repräsentation von XML-Schema-Datentypen aus dem Namensraum xsd="http://www.w3.org/2001/XMLSchema", wobei Datum und Zeit nach ISO-8601 und binäre Daten nach Base64 dargestellt werden. Die Abbildung der ABAP-Typen auf die XML-Schema-Datentypen ist wegen der unterschiedlichen Wertebereiche nicht vollständig bijektiv. Beispielsweise ist beim XML-Schema-Datentyp xds:date die Angabe einer Zeitzone erlaubt, was bei dem ABAP-Typ d nicht möglich ist.

Hinweise

  • Ausnahmen, die beim Mapping auftreten, können nicht direkt behandelt werden. Statt dessen kann die Ausnahme CX_TRANSFORMATION_ERROR (oder eine ihrer Unterklassen) der Anweisung CALL TRANSFORMATION behandelt werden, deren Attribut PREVIOUS dann eine Referenz auf die ursprüngliche Ausnahme enthält.
  • Einige der Ausnahmen, die beim Mapping der hier gezeigten Datentypen auftreten, können teilweise mit der Angabe noError im Attribut option der ST-Anweisung tt:value unterdrückt werden.

Mapping-Tabellen

Numerische Datentypen

ABAP-Typ ABAP-Darstellung XML-Schematyp XML-Darstellung
b 123 xsd:unsignedByte 123
s -123 xsd:short -123
i -123 xsd:int -123
int8 -123 xsd:long -123
p -1,23 xsd:decimal -1,23
decfloat16 123E+1 precisionDecimal, totalDigits = 16 1,23E+3
decfloat34 -3,140...0E+02 precisionDecimal, totalDigits = 34 -314,0...0
f -3,140...0E+02 xsd:double -3,14E2

Hinweise

  • Beim ABAP-Typ p wird eine Zahl mit mehr Nachkommastellen als die zur Verfügung stehenden Stellen (zweimal Länge minus eins) als ungültig betrachtet und kann nicht nach asXML serialisiert werden.
  • Mit der Angabe noError im Attribut option der ST-Anweisung tt:value wird beim Typ p ein ungültiges Vorzeichenbyte als positives Vorzeichen interpretiert und dadurch die entsprechende Ausnahme verhindert.
  • Der Typ precisionDecimal ist noch kein offizieller XML-Schematyp.

Zeichenartige Datentypen

ABAP-Typ ABAP-Darstellung XML-Schematyp XML-Darstellung
c " Hi" xsd:string _Hi
string " Hello " xsd:string _Hello_
n "001234" xsd:string (pattern [0-9]+) 001234

Byteartige Datentypen

ABAP-Typ ABAP-Darstellung XML-Schematyp XML-Darstellung
x ABCDEF xsd:base64Binary q83v
xstring 456789AB xsd:base64Binary RweJqw==

Datums-, Zeit- und Zeitstempeltypen

ABAP-Typ ABAP-Darstellung XML-Schematyp XML-Darstellung
d "20020204" xsd:date 2002-02-04
t "201501" xsd:time 20:15:01
utclong "2019-04-10 12:37:29.5040200" xsd:datetime 2019-04-10T12:37:29.50402Z

Hinweis

Bei der Serialisierung eines Zeitstempelfelds vom Typ utclong werden nur die signifikanten Nachkommastellen erzeugt. Auch bei der Deserialisierung können weniger als sieben Nachkommastellen vorliegen.

Besonderheiten bei der Serialisierung

Bei der Serialisierung werden die ABAP-Werte in das entsprechende zeichenartige XML-Format konvertiert und bei der Deserialisierung umgekehrt. Dabei gelten folgende Besonderheiten im Vergleich zu den innerhalb von ABAP üblichen Konvertierungsregeln.

  • Bei der Serialisierung von Datenobjekten des Typs x werden schließende Bytes mit dem Wert hexadezimal 0 genauso behandelt wie ansonsten nur schließende Leerzeichen beim Datentyp c und nicht berücksichtigt.
  • Bei der Serialisierung folgender ABAP-Datenobjekte nach asXML wird teilweise überprüft, ob das ABAP-Datenobjekt einen gültigen Wert hat:
  • Ein Datenobjekt vom Typ n darf nur Ziffern enthalten.

  • Ein Datenobjekt vom Typ p muss eine gültige gepackte Zahl darstellen.

  • Ein Datenobjekt vom Typ d oder t darf keine führenden oder schließenden Leerzeichen und gleichzeitig die entsprechenden Trennzeichen ("-" bzw. ":")

  • Ein Datenobjekt vom Typ utclong muss einen gültigen Wert enthalten. Der Initialwert ergibt ein leeres XML-Element.

Beim Verstoß gegen diese Regeln kommt es zu behandelbaren Ausnahmen, die teilweise durch die Angabe einer Transformationsoption hinter dem Zusatz OPTIONS der Anweisung CALL TRANSFORMATION umgangen werden können.

Hinweise

  • Zur Überprüfung gültiger Datums- und Zeitangaben können statt der Datentypen d und t die Domänen XSDDATE_D und XSDTIME_T verwendet werden.
  • Mit der Angabe noError im Attribut option der ST-Anweisung tt:value werden beim Typ n führende und schließende Leerzeichen ignoriert und dadurch die entsprechende Ausnahme verhindert.

Besonderheiten bei der Deserialisierung

  • Bei der Deserialisierung in ein ABAP-Datenobjekt muss die Genauigkeit des XML-Werts erhalten bleiben:
  • Bei numerischen Typen dürfen keine Stellen verloren gehen.

  • Bei zeichen- oder byteartigen Datentypen fester Länge (c, n, x) muss das Zielobjekt genügend Stellen haben, um den gesamten Inhalt aufzunehmen, außer es sind nur führende und schließende Leerzeichen beim Datentyp c und führende Nullen beim Datentyp n betroffen.

  • Strukturen können nicht in elementare Datenobjekte konvertiert werden.
  • Bei der Deserialisierung wird ein Datenobjekt des Typs c oder x wie üblich rechts mit Leerzeichen bzw. hexadezimal 0 aufgefüllt, wenn weniger Zeichen bzw. Bytes übertragen werden, als in das Datenobjekt passen.
  • Wenn bei der Deserialisierung in ein elementares Datenobjekt das benötigte XML-Element nicht vorhanden ist, behält das elementare Datenobjekt seinen vorhergehenden Wert. Wenn einem elementaren Datenobjekt ein leeres Element zugewiesen wird, wird es auf seinen typabhängigen Initialwert gesetzt. Um das Datenobjekt in beiden Fällen zu initialisieren, kann die Transformationsoption clear mit dem Wert "all" verwendet werden.

Beim Verstoß gegen diese Regeln kommt es zu behandelbaren Ausnahmen wie CX_SY_CONVERSION_DATA_LOSS, die teilweise durch die Angabe einer Transformationsoption hinter dem Zusatz OPTIONS der Anweisung CALL TRANSFORMATION umgangen werden können.

asXML, Mapping von elementaren Datentypen






CPI1466 during Backup   CPI1466 during Backup  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 17111 Date: 20240523 Time: 164356     sap01-206 ( 157 ms )