Ansicht
Dokumentation
ABAPCALL_TRANSFORMATION_OPTIONS - CALL TRANSFORMATION OPTIONS
General Data in Customer Master CL_GUI_FRONTEND_SERVICES - Frontend ServicesDiese Dokumentation steht unter dem Copyright der SAP AG.
CALL TRANSFORMATION, OPTIONS
... OPTIONS $[clear = val$]
$[data_refs = val$]
$[initial_components = val$]
$[technical_types = val$]
$[value_handling = val$]
$[exceptions = val$]
$[xml_header = val$] ...
Zusätze:
1. ... clear
2. ... data_refs
3. ... initial_components
4. ... technical_types
5. ... value_handling
6. ... exceptions
7. ... xml_header
Wirkung
Der Zusatz OPTIONS erlaubt die Angabe von vorgegebenen Transformationsoptionen, denen bestimmte Werte zugeordnet werden können, um die Transformation zu steuern. Die Werte müssen in Datenobjekten val vom Typ c oder string angegeben werden. Jede Transformationsoption darf nur einmal angegeben werden. Zu einer Transformationsoption können in val mehrere durch Leerzeichen getrennte Werte angegeben werden. Wenn zu einer Transformationsoption ein nicht erlaubter Wert angegeben wird, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_TRANS_OPTION_ERROR.
Hinweis
Die Transformationen wirken für XML und falls anwendbar auch für JSON.
Zusatz 1
...clear
Wirkung
Die Transformationsoption clear steuert, wie die ABAP-Zielfelder bei einer Deserialisierung von XML oder JSON nach ABAP initialisiert werden.
Mögliche Werte | Bedeutung |
all | Alle hinter RESULT angegebenen Zielfelder werden vor Aufruf der Transformation initialisiert. Dies ist die empfohlene Einstellung. |
supplied | Bei ST werden vor Aufruf der Transformation die Zielfelder initialisiert, denen im ST-Programm ein Wurzelknoten zugeordnet ist. Bei XSLT werden Zielfelder, für die in den XML-Daten ein Wurzelknoten vorhanden ist, vor dem Einlesen des Knotens initialisiert. Andere Zielfelder behalten ihren Wert. |
none | Standard, die hinter RESULT angegebenen Zielfelder werden mit der Ausnahme von internen Tabellen nicht initialisiert. |
Hinweis
Die Verwendung der Standardeinstellung (none) kann kritisch sein, wenn nicht vorhandene oder
leere Elemente in Datenobjekte deserialisiert werden. Bei nicht vorhandenen Elementen behalten alle
Datenobjekte ihren ursprünglichen Wert. Bei leeren Elementen behalten Strukturen ihren Wert.
In solchen Fällen wird deshalb die Verwendung von clear mit dem Wert "all" empfohlen.
Zusatz 2
... data_refs
Wirkung
Die Transformationsoption data_refs steuert die Ausgabe von Datenreferenzen, falls von ABAP nach XML oder JSON transformiert wird.
Mögliche Werte | Bedeutung |
no | Standard bei ST, es werden keine Datenreferenzen ausgegeben. |
heap | Standard bei XSLT und nur dort möglich, über Heap-Referenzen referenzierte Datenobjekte werden als Unterelemente des asXML-Elements asx:heap bzw. des asJSON-Objekts %heap ausgegeben. Über Stack-Referenzen referenzierte Datenobjekte werden nicht serialisiert. |
heap-or-error | Nur bei XSLT möglich. Wie heap, wobei es aber zur Ausnahme CX_REFERENCE_NOT_SERIALIZABLE kommt, wenn die zu serialisierenden Daten Stack-Referenzen enthalten. |
heap-or-create | Nur bei XSLT möglich. Wie heap, wobei aber über Stack-Referenzen referenzierte Datenobjekte wie über Heap-Referenzen referenzierte Datenobjekte behandelt werden. |
embedded | Nur bei XSLT möglich. Referenzierte Datenobjekte werden mit der Referenz ausgegeben. Eine Deserialisierung solcherart entstandener XML- oder JSON-Daten ist nicht möglich, da bei der Serialisierung die Identität der Objekte verloren geht. |
Hinweis
Die Angabe der Ausnahme CX_REFERENCE_NOT_SERIALIZABLE ist nicht direkt sondern nur über die Angabe CX_XSLT_SERIALIZATION_ERROR abfangbar.
Für den Unterschied zwischen der Serialisierung nach heap und eingebetteten Elementen siehe
Serialisierung nach Heap oder Embedded.
Zusatz 3
... initial_components
Wirkung
Die Transformationsoption initial_components steuert die Ausgabe von initialen Strukturkomponenten, falls von ABAP nach XML oder JSON transformiert wird.
Mögliche Werte | Bedeutung |
include | Initiale Komponenten von Strukturen werden ausgegeben. |
suppress_boxed | Standardeinstellung, initiale Boxed Components von Strukturen werden nicht ausgegeben, initiale Komponenten aller anderen Strukturen werden ausgegeben. |
suppress | Initiale Komponenten von Strukturen werden nicht ausgegeben. |
Hinweise
- Die Unterdrückung initialer Komponenten bei der Serialisierung dient der Reduktion des Datenvolumens, sollte aber nur mit Vorsicht verwendet werden und wenn man Kontrolle über die Deserialisierung hat. Wenn bei der Deserialisierung nicht die Option clear mit dem Wert "all" verwendet wird, werden unterdrückte Komponenten in ABAP-Datenobjekte nicht berücksichtigt und Zielfelder behalten ihren Wert. Bei einer Deserialisierung in externen Systemen kann es zu Problemen kommen, wenn dort eine unterdrückte Komponente zwingend erwartet wird.
- Die Unterdrückung initialer Komponenten betrifft auch Strukturkomponenten, die mit den Domänen für
XML-Schema-Datentypen typisiert
sind, so dass beispielsweise eine mit der Domäne XSDBOOLEAN typisierte Komponente nicht ausgegeben
wird, wenn sie den Wert von abap_false hat. Auch dies kann zu unerwünschten Ergebnissen führen.
Zusatz 4
... technical_types
Wirkung
Die Transformationsoption technical_types steuert das Verhalten, falls bei der Serialisierung von Datenreferenzen nach asXML oder asJSON keine Typbeschreibung serialisiert werden kann. Dies ist der Fall, wenn die technischen Typeigenschaften des dynamischen Typs der Datenreferenzvariablen zwar bekannt sind, der Typ aber keinen Namen bzw. nur einen technischen Namen hat.
Mögliche Werte | Bedeutung |
Fehler | Standard bei XSLT und nur dort möglich. Die Serialisierung einer Datenreferenzvariable mit dynamischem Typ ohne Namen führt zur Ausnahme CX_REFERENCE_NOT_SERIALIZABLE. |
ignore | Nur bei XSLT möglich. Eine Datenreferenzvariable mit dynamischem Typ ohne Namen wird bei der Serialisierung ignoriert. |
Hinweise
- Die Angabe der Ausnahme CX_REFERENCE_NOT_SERIALIZABLE ist nicht direkt sondern nur über die Angabe CX_XSLT_SERIALIZATION_ERROR abfangbar.
- Datentypen ohne Namen sind gebundene Datentypen oder über
RTTS konstruierte Datentypen.
Zusatz 5
... value_handling
Wirkung
Die Transformationsoption value_handling steuert die Toleranz bei Konvertierungen beim Mapping elementarer ABAP-Typen.
Mögliche Werte | Bedeutung |
default | Standardeinstellung, bei der Serialisierung kommt es bei einem ungültigen Wert in einem Feld vom Typ n zur Ausnahme CX_SY_CONVERSION_NO_NUMBER. Bei der Deserialisierung kommt es zur Ausnahme CX_SY_CONVERSION_DATA_LOSS, wenn Zielfelder der Typen c, n oder x zu kurz sind, bzw. zur Ausnahme CX_SY_CONVERSION_LOST_DECIMALS, wenn Zielfelder vom Typ p zu wenig Nachkommastellen haben. |
move | Nur bei der Serialisierung möglich. Ungültige Werte in einem Feld vom Typ n werden unverändert nach XML oder JSON kopiert. |
accept_data_loss | Nur bei der Deserialisierung möglich. Wenn Zielfelder der Typen c, n oder x zu kurz sind, werden überschüssige Daten bei c und x rechts und bei n links abgeschnitten. |
accept_decimals_loss | Nur bei der Deserialisierung möglich. Wenn Zielfelder vom Typ p zu wenig Nachkommastellen haben, wird auf die zur Verfügung stehenden Nachkommastellen gerundet. |
reject_illegal_characters | Nur bei der Deserialisierung möglich. Wenn ein zu deserialisierender Wert Zeichen enthält, die nicht zum Encoding der XML- oder JSON-Daten oder zur aktuellen Codepage des AS ABAP passen, wird eine Ausnahme CX_SY_CONVERSION_CODEPAGE ausgelöst. Wenn die XML- oder JSON-Daten als iXML-Input-Stream übergeben werden, übersteuert die Einstellung des iXML-Parsers das Encoding der XML- oder JSON-Daten. |
Hinweise
- Die erwähnten Ausnahmen können durch die direkte Angabe von CALL TRANSFORMATION nicht abgefangen werden, sondern sind in CX_TRANSFORMATION_ERROR bzw. deren Unterklassen verpackt.
- Wird ein Wert angegeben, der in der entsprechenden Richtung nicht unterstützt wird, kommt es dagegen zur direkt behandelbaren Ausnahme CX_SY_TRANS_OPTION_ERROR.
Beispiel
Bei einer Angabe von value_handling = 'reject_illegal_characters' kommt es beispielsweise zur
Ausnahme, wenn im XML-Header von im Zeichensatz Latin-1 vorliegenden XML-Daten encoding="utf-8" angegeben ist und die XML-Daten andere Zeichen als die des 7-Bit-ASCII-Zeichensatzes enthalten.
Zusatz 6
... exceptions
Wirkung
Die Transformationsoption exceptions steuert das Verhalten von Ausnahmen, die in CX_TRANSFORMATION_ERROR bzw. deren Unterklassen verpackt sind.
Mögliche Werte | Bedeutung |
resumable | Nur bei der Deserialisierung mit ST. Ausnahmen der Klasse CX_ST_DESERIALIZATION_ERROR werden als wiederaufsetzbare Ausnahmen ausgelöst. Wenn sie mit CATCH BEFORE UNWIND behandelt werden, wird das Zielfeld, für das die Ausnahme auftrat, mit seinem typabhängigen Initialwert versehen und das Attribut RESULT_REF_FOR_RESUME des Ausnahmeobjekts enthält eine Datenreferenz auf dieses Zielfeld. Die abgebrochene Transformation kann mit RESUME fortgesetzt werden. |
Wenn die Transformationsoption exceptions = 'resumable' angegeben ist, verhält sich eine Ausnahme der Klasse CX_ST_DESERIALIZATION_ERROR, welche eine ursprüngliche Ausnahme verschalt, so, als wenn sie wiederaufsetzbar ausgelöst wurde.
Hinweise
- Beim Behandeln der wiederaufsetzbaren Ausnahme kann das Zielfeld über das Attribut RESULT_REF_FOR_RESUME auch mit einem anderen Wert versehen werden, bevor die Verarbeitung mit RESUME fortgesetzt wird.
- Wenn eine Ausnahme der Klasse CX_ST_DESERIALIZATION_ERROR durch eine Ausnahme ausgelöst wird,
die in einer ABAP-Methode auftritt, die während der Transformation aufgerufen wird, ist die Transformationsoption
exceptions = 'resumable' nicht ausreichend, um direkt an der Auslösestelle der Ausnahme
aufzusetzen. Hierfür muss die Ausnahme mit RAISING
RESUMABLE deklariert und mit RAISE RESUMABLE EXCEPTION ausgelöst werden.
Beispiel
Wiederaufsetzbares Auslösen einer Ausnahme bei der Deserialisierung eines Zeichens, das keine
Zahl darstellt in ein numerisches Zielfeld. Das Attribut RESULT_REF_FOR_RESUME zeigt auf das Zielfeld
field1, dem ein negativer Wert zugewiesen wird, um zu zeigen, dass die Deserialisierung nicht
funktioniert hat. Danach wird die Deserialisierung mit RESUME fortgesetzt und field2 erhält den Wert 2 aus der XML-Datei.
Zusatz 7
... xml_header
Wirkung
Die Transformationsoption xml_header steuert die Ausgabe des XML-Headers, falls nach XML transformiert und in ein Datenobjekt vom Typ c, string oder eine interne Tabelle geschrieben wird.
Mögliche Werte | Bedeutung |
no | Es wird kein XML-Header ausgegeben. |
without_encoding | Es wird ein XML-Header ohne Angabe des Encodings ausgegeben. |
full | Standardeinstellung, es wird ein XML-Header mit Angabe des Encodings ausgegeben. |
Ausnahmen
Behandelbare Ausnahmen
- Ursache: Ungültige Transformationsoption oder ungültiger Wert.
RFUMSV00 - Advance Return for Tax on Sales/Purchases General Data in Customer Master
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 21444 Date: 20240419 Time: 181723 sap01-206 ( 191 ms )