Ansicht
Dokumentation

ABAPCALL_TRANSFORMATION_OPTIONS - CALL TRANSFORMATION OPTIONS

ABAPCALL_TRANSFORMATION_OPTIONS - CALL TRANSFORMATION OPTIONS

General Data in Customer Master   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CALL TRANSFORMATION, OPTIONS

Kurzreferenz



... 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.

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

CX_SY_TRANS_OPTION_ERROR

  • 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 )