Ansicht
Dokumentation

ABAPCALL_TRANSFORMATION - CALL TRANSFORMATION

ABAPCALL_TRANSFORMATION - CALL TRANSFORMATION

General Data in Customer Master   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CALL TRANSFORMATION

Kurzreferenz



CALL TRANSFORMATION ID
                  $| trans$|(name)
                    $[PARAMETERS ${p1 = e1 p2 = e2 ...$}$|(ptab)$]
                    $[OPTIONS options$]
                    SOURCE ${XML src_xml$}
                         $| ${${bn1 = e1 bn2 = e2 ...$}$|(stab)$}

                    RESULT ${XML rslt_xml$}
                         $| ${ ${bn1 = f1 bn2 = f2 ...$}$|(rtab) $}.


Alternativen:

1. ... ID ...

2. ... trans$|(name) ...



Zusätze:

1a. ... SOURCE ${XML src_xml$}$|${${bn1 = e1 bn2 = e2 ...$}$|(stab)$}

1b. ... RESULT ${XML rslt_xml$}$|${${bn1 = f1 bn2 = f2 ...$}$|(rtab)$}

2. ... PARAMETERS ${${p1 = e1 p2 = e2 ...$}$|(ptab)$}

Wirkung

Diese Anweisung ruft die angegebene XSL-Transformation (XSLT) oder eine Simple Transformation (ST) auf. Die Quelle der Transformation wird hinter SOURCE angegeben und das Ergebnis wie hinter RESULT angegeben abgelegt. Mit PARAMETERS können Parameter an die Transformation übergeben werden. Mit dem Zusatz OPTIONS können Transformationsoptionen options angegeben werden. Mögliche Transformationsarten sind:

  • von XML nach XML (nur bei XSLT)
  • von XML nach ABAP (bei XSLT und Simple Transformations)
  • von ABAP nach XML (bei XSLT und Simple Transformations)
  • von ABAP nach ABAP (nur bei XSLT)

Mit Hilfe von JSON-XML, welches JSON-Daten auf XML abbildet, können alle Arten von Transformationen, die für XML möglich sind, auch für JSON ausgeführt werden. Für mehr Informationen siehe Transformationen für JSON.

Hinweise

  • Die Behandlung der Zeichen , >, &, " und ', die in der XML-Syntax eine eigene Bedeutung haben, erfolgt für XML-Daten automatisch. Beim Schreiben von XML-Daten wird in Werten von Elementen oder Attributen automatisch die notwendige XML-Notation <, >, &, " oder ' erzeugt. Beim Lesen von XML-Daten wird die XML-Notation in die entsprechenden Zeichen umgesetzt. Eine Anwendung der Fluchtsymbolfunktion escape oder einer ähnlichen Maßnahme auf zeichenartige XML-Ergebnisse der Anweisung CALL TRANSFORMATION ist in aller Regel nicht notwendig und würde zu falschen Ergebnissen führen. Eine Ausnahme von dieser Regel gibt es nur beim Erzeugen von HTML-Daten mit XSLT, wenn diese JavaScript-Anteile enthalten.
  • Beim Schreiben von JSON-Daten wird Syntaxzeichen in zeichenartigen Werten automatisch das Fluchtsymbol \ vorangestellt. Umgekehrt wird das Fluchtsymbol beim Lesen von JSON-Daten aus zeichenartigen Werten entfernt.

Welche Bibliothek verwendet wird hat Einfluss auf den unterstützten Zeichensatz. Die iXML-Bibliothek unterstützt UCS-2, die sXML-Bibliothek unterstützt UTF.

Beispiel

Die Transaktion STDEMO demonstriert verschiedene Transformationen von ABAP-Daten nach XML und JSON.

Alternative 1

... ID ...


Wirkung

Direkte Angabe der Identitäts-Transformation ID. Diese Transformation ist zwar als XSL-Transformation im Repository vorhanden, wird aber je nach Transformationsquelle oder -Ziel vom Laufzeit-Framework in einer optimierten ID-Engine ausgeführt. Weitere Informationen finden Sie unter:

Ausführbares Beispiel für die Identitäts-Transformation

Alternative 2

... trans$|(name) ...


Wirkung

Angabe einer beliebigen Transformation. Die Transformation kann entweder statisch oder dynamisch angegeben werden:

  • trans
Die statische Angabe erfolgt direkt als trans.
  • (name)
Die dynamische Angabe erfolgt als großbuchstabiger Inhalt eines eingeklammerten zeichenartigen Datenobjekts name.

Die angegebene Transformation muss als XSLT-Programm oder als Simple Transformation im Repository vorhanden sein. Wenn eine dynamisch angegebene Transformation nicht gefunden wird, kommt es zu einer Ausnahme der Klasse CX_INVALID_TRANSFORMATION.

Ausführbares Beispiel für eine Simple Transformation

Zusatz 1a

... SOURCE ${XML src_xml$}$|${${bn1 = e1 bn2 = e2 ... $}$|(stab)$}

Wirkung

Angabe der Quelle.

Transformation von XML-Daten

Durch die Angabe von XML src_xml werden die in src_xml enthaltenen XML-Daten transformiert, wobei src_xml in folgenden Formen vorliegen kann:

  • Als Datenobjekt vom Typ string oder als Standardtabelle mit flachem zeichenartigem Zeilentyp, die folgende Daten enthalten können:
  • Zeichenartige XML-Daten im Format XML 1.0.

  • Zeichenartige JSON-Daten. Die JSON-Daten werden bei Verwendung einer beliebigen Transformation trans$|(name) in das zugehörige JSON-XML-Format verwandelt und dieser so übergeben. Die vordefinierte Identitäts-Transformation ID behandelt die JSON-Daten direkt.

  • Als Datenobjekt vom Typ xstring oder als Standardtabelle mit flachem byteartigem Zeilentyp, die folgende Daten enthalten können:
  • Byteartige Darstellung der Zeichen von XML-Daten im Format XML 1.0 gemäß einer Codepage, z.B. UTF-8.

  • Byteartige Darstellung der Zeichen von JSON-Daten gemäß einer Codepage, z.B. UTF-8. Die JSON-Daten werden bei Verwendung einer beliebigen Transformation trans$|(name) in das zugehörige JSON-XML-Format verwandelt und dieser so übergeben. Die vordefinierte Identitäts-Transformation ID behandelt die JSON-Daten direkt.

  • Als Interfacereferenzvariable für Objekte der iXML-Bibliothek (nur bei XSLT):
  • Interfacereferenzvariable vom Typ IF_IXML_ISTREAM, die auf einen Eingabestrom zeigt, der XML-Daten liest.

  • Interfacereferenzvariable vom Typ IF_IXML_NODE, die auf einen Knoten eines oder ein gesamtes XML-Dokument in DOM-Darstellung zeigt.

  • Als Referenzvariable vom Typ IF_SXML_READER oder CL_SXML_READER für XML-Reader der sXML-Bibliothek. Die Transformation bewegt den Reader um einen Knoten weiter und verarbeitet den gesamten entsprechenden Teilbaum. Nach erfolgreicher Transformation steht der Reader am Ende der verarbeiteten Daten. Es können alle möglichen Reader angegeben werden:
  • XML-Reader für XML-Daten im Format XML 1.0.

  • XOP-Reader für XML-Daten im Format XOP.

  • JSON-Reader für JSON-Daten. Der JSON-Reader gibt die JSON-Daten bei Verwendung einer beliebigen Transformation trans$|(name) im Format JSON-XML zurück. Bei Verwendung der vordefinierten Identitäts-Transformation ID werden die JSON-Daten direkt behandelt.

Hinweise

  • Das Interface IF_SXML_READER und die Klasse CL_SXML_READER gehören zur API der sXML-Bibliothek, auf deren Objekte dadurch mit CALL TRANSFORMATION zugegriffen werden kann.
  • Eine Transformation von XML-Daten im XOP-Format ist nur mit einem XOP-Reader der sXML-Bibliothek möglich. Alle anderen Formate können auch in passenden Strings oder internen Tabellen angegeben werden.
  • Die Interfaces IF_IXML_ISTREAM und IF_IXML_NODE gehören zur API der iXML-Bibliothek, auf deren Objekte dadurch mit CALL TRANSFORMATION zugegriffen werden kann.
  • Aus Kompatibilitätsgründen kann src_xml auch noch eine Klassenreferenzvariable vom Typ CL_FX_READER sein. Die Klasse CL_FX_READER wird aber durch CL_SXML_READER abgelöst.
  • Für die Angabe von XML-Daten in Strings oder internen Tabellen werden Bytestrings bzw. byteartige Zeilentypen und eine Darstellung in der Codepage UTF-8 empfohlen.
  • Die Methoden CONVERT der Interfaces IF_ABAP_CONV_IN und IF_ABAP_CONV_OUT von mit der Klasse CL_ABAP_CONV_CODEPAGE erzeugten Objekten können verwendet werden, um zeichenartige XML- oder JSON-Daten in eine byteartige Darstellung gemäß einer Codepage zu verwandeln und umgekehrt.

Transformation von ABAP-Daten

Mit bn1 = e1 ... oder (stab) werden die zu transformierenden ABAP-Daten e1 e2 ... angegeben.

  • Bei Aufruf eines XSLT-Programms werden die ABAP-Daten in die kanonische XML-Repräsentation serialisiert, die dann als Quelle der XSL-Transformation verwendet wird. Mit bn1 bn2 ... werden die Namen der XML-Elemente angegeben, welche die ABAP-Datenobjekte in der kanonischen XML-Darstellung repräsentieren.
  • Beim Aufruf einer Simple Transformation wird in der Transformation über die Namen bn1 bn2 ... lesend auf die ABAP-Daten zugegriffen.

Statt über eine statische Parameterliste können die Datenobjekte auch dynamisch als Wertepaare in den Spalten einer internen Tabelle stab übergeben werden, die den Typ abap_trans_srcbind_tab aus dem Type-Pool ABAP hat.

Bei der Serialisierung werden die elementaren Komponenten der ABAP-Datenobjekte gemäß des Mappings für eingebaute ABAP-Typen oder für weitere XML-Schema-Datentypen nach asXML oder asJSON konvertiert. Dabei kann es zu den dort beschriebenen Ausnahmen kommen, die wiederum teilweise durch die Angabe von Transformationsoptionen umgangen werden können.

Die Schreibweise der Bezeichner in den XML- oder JSON-Daten richtet sich danach, wie sie im ABAP-Laufzeit-Framework vorliegen. Bei der statischen Angabe b1, b2, ... sind dies Großbuchstaben, bei der dynamischen Angabe in stab ist es die dort verwendete Schreibweise.

Hinweis

Beim Aufruf einer Simple Transformation wird bei der Serialisierung immer ein interner XML-Writer erzeugt, der über das Interface IF_SXML_WRITER der sXML-Bibliothek ansprechbar ist. Zugriff auf das Objekt besteht durch Attribute der ST-Anweisung tt:call-method.

Zusatz 1b

... RESULT ${XML rslt_xml$}$|${${bn1 = f1 bn2 = f2 ...$}$|(rtab)$}

Wirkung

Angabe des Ziels.

Transformation in XML-Daten

Durch die Angabe von XML rslt_xml wird in XML-Daten transformiert und diese nach rslt_xml gestellt, wobei rslt_xml in folgenden Formen vorliegen kann:

  • Als Variable vom Typ string oder als Standardtabelle mit flachem zeichenartigen Zeilentyp. Die von der Transformation zurück gegebenen XML-Daten werden im Format XML 1.0 als Zeichenkette in dem String bzw. der Tabelle abgelegt. Es wird eine Byte-Order Mark (BOM) vorangestellt.
  • Als Variable vom Typ xstring oder als Standardtabelle mit flachem byteartigen Zeilentyp. Die von der Transformation zurück gegebenen XML-Daten werden im Format XML 1.0 als Bytekette in dem String bzw. der Tabelle abgelegt. Die Bytekette stellt die Zeichen der XML-Daten gemäß der Codepage UTF-8 dar. Es wird keine Byte-Order Mark (BOM) vorangestellt.
  • Als Inline-Deklaration DATA(var) oder FINAL(var), wobei eine Variable vom Typ xstring erzeugt wird.
  • Als Interfacereferenzvariable für Objekte der iXML-Bibliothek (nur bei XSLT):
  • Interfacereferenzvariable vom Typ IF_IXML_OSTREAM, die auf einen Ausgabestrom zeigt, der XML-Daten schreibt.

  • Interfacereferenzvariable vom Typ IF_IXML_DOCUMENT, die auf ein XML-Dokument in DOM-Darstellung zeigt.

  • Als Referenzvariable vom Typ IF_SXML_WRITER oder CL_SXML_WRITER für XML-Writer der sXML-Bibliothek. Das Ergebnis der Transformation wird dem aktuellen Element des Writers als Teilbaum hinzugefügt. Es können alle möglichen Writer angegeben werden:
  • XML-Writer für XML-Daten im Format XML 1.0.

  • XOP-Writer für XML-Daten im Format XOP.

Hinweise

  • Das Interface IF_SXML_WRITER und die Klasse CL_SXML_WRITER gehören zur API der sXML-Bibliothek, auf deren Objekte dadurch mit CALL TRANSFORMATION zugegriffen werden kann.
  • Eine Transformation in andere Formate als XML 1.0 ist nur mit den entsprechenden Writern der sXML-Bibliothek möglich.
  • Die Interfaces IF_IXML_OSTREAM und IF_IXML_DOCUMENT gehören zur API der iXML-Bibliothek, auf deren Objekte dadurch mit CALL TRANSFORMATION zugegriffen werden kann.
  • Aus Kompatibilitätsgründen kann rslt_xml auch noch eine Klassenreferenzvariable vom Typ CL_FX_WRITER sein. Die Klasse CL_FX_WRITER wird aber durch CL_SXML_WRITER abgelöst.
  • Für das Sichern von XML-Daten in Strings oder internen Tabellen werden Bytestrings bzw. byteartige Zeilentypen und eine Darstellung in der Codepage UTF-8 empfohlen.
  • XML-Daten, die in Unicode-Systemen als zeichenartige Daten geschrieben werden, können wegen der vom XML-Standard vorgeschriebenen Byte-Order Mark (BOM) in einem Nicht-Unicode-System nicht direkt als solche verarbeitet werden.
  • Die Methoden CONVERT der Interfaces IF_ABAP_CONV_OUT und IF_ABAP_CONV_IN von mit der Klasse CL_ABAP_CONV_CODEPAGE erzeugten Objekten können verwendet werden, um zeichenartige XML- oder JSON-Daten in eine byteartige Darstellung gemäß einer Codepage zu verwandeln und umgekehrt.

Wenn mit der Ausgabemethode "html" einer XSL-Transformation HTML-Daten erzeugt werden, die JavaScript-Anteile enthalten, werden die Syntaxzeichen , >, &, " und ' in den JavaScript-Anteilen nicht in ihre XML-Notation umgesetzt. Um ein Cross Site Scripting (XSS) in HTML-Daten, die dynamische JavaScript-Anteile enthalten, zu verhindern, müssen geeignete Maßnahmen ergriffen werden. Diese Maßnahmen finden am besten in der XSL-Transformation statt, welche die Daten erzeugt.

Transformation in ABAP-Daten

Mit bn1 = f1 ... oder (rtab) werden die ABAP-Zielfelder f1 f2 ... angegeben, in welche die XML-Daten transformiert werden sollen.

  • Bei Aufruf der Identitäts-Transformation ID muss die Quelle entweder eine kanonische XML-Repräsentation oder eine kanonische JSON-Repräsentation von ABAP-Daten darstellen. Die kanonische Repräsentation wird in die ABAP-Datenobjekte deserialisiert. Mit bn1 bn2 ... werden die Namen der XML-Elemente angegeben, welche die ABAP-Datenobjekte in der kanonischen XML-Darstellung repräsentieren, während mit f1 f2 ... vom Datentyp her passende ABAP-Datenobjekte angegeben werden, in die diese deserialisiert werden sollen.
  • Bei Aufruf eines XSLT-Programms muss das Resultat der XSL -Transformation eine kanonische XML-Repräsentation darstellen, die wie bei der Identitäts-Transformation in die ABAP-Datenobjekte deserialisiert wird.
  • Beim Aufruf einer Simple Transformation wird in der Transformation über die Namen bn1 bn2 ... schreibend auf die ABAP-Daten zugegriffen.

Statt über eine statische Parameterliste können die Datenobjekte auch dynamisch als Wertepaare an die Spalten der internen Tabelle rtab übergeben werden, die den Typ abap_trans_resbind_tab aus der Typgruppe ABAP hat.

Bei der Deserialisierung werden die elementaren XML- oder JSON-Werte gemäß des Mappings für eingebaute ABAP-Typen oder für weitere XML-Schema-Datentypen in elementare ABAP-Datentypen konvertiert. Dabei kann es zu den dort beschriebenen Ausnahmen kommen, die wiederum teilweise durch die Angabe von Transformationsoptionen umgangen werden können.

Die Schreibweise in den XML- oder JSON-Daten muss genau mit der Schreibweise übereinstimmen, wie sie im ABAP-Laufzeit-Framework vorliegt. Bei der statischen Angabe b1, b2, ... sind dies Großbuchstaben, bei der dynamischen Angabe in rtab ist es die dort verwendete Schreibweise.

Wenn bei der Deserialisierung aus einer kanonischen Darstellung für ein ABAP-Datenobjekt kein zugehöriges asXML-Element oder keine asJSON-Objektkomponente vorhanden ist, behält das Datenobjekt seinen vorherigen Wert. Wenn einem elementaren oder tabellarischen ABAP-Datenobjekt ein leeres XML-Element oder ein leerer JSON-Array zugewiesen wird, wird das ABAP-Datenobjekt auf seinen typabhängigen Initialwert gesetzt. Wenn einer Struktur ein leeres XML-Element oder ein leeres JSON-Objekt zugewiesen wird, wirkt dies auf die Strukturkomponenten dagegen wie nicht vorhandene Elemente und sie behalten ihre vorhergehenden Werte. Um alle Datenobjekte, denen ein nicht vorhandenes oder leeres Element zugeordnet ist zu initialisieren, kann die Transformationsoption clear mit dem Wert "all" verwendet werden.

Bei der Deserialisierung von internen Tabellen mit nicht-eindeutigen Tabellenschlüsseln bleibt die Reihenfolge der duplikativen Zeilen bezüglich dieser Schlüssel nicht erhalten.

Hinweis

Beim Aufruf einer Simple Transformation wird bei der Deserialisierung immer ein interner XML-Reader erzeugt, der über das Interface IF_SXML_READER der sXML-Bibliothek ansprechbar ist. Zugriff auf das Objekt besteht durch Attribute der ST-Anweisung tt:call-method.

  • Für die Deserialisierung fehlender oder leerer asXML-Elemente bzw. asJSON-Objektkomponenten siehe:

Zusatz 2

... PARAMETERS ${${p1 = e1 p2 = e2 ...$}$|(ptab)$}

Wirkung

Mit diesem Zusatz können ABAP-Datenobjekte e1 e2 ... an die Parameter p1 p2 ... einer XSL-Transformation oder einer Simple Transformation angebunden werden. Es sind alle elementaren Datenobjekte und Objektreferenzen erlaubt.

Statt über eine statische Parameterliste können die Parameter auch dynamisch als Wertepaare in den Spalten der internen Tabelle ptab angegeben werden, die einen der folgenden Typen aus der Typgruppe ABAP hat:

  • abap_trans_parmbind_tab für die Angabe von Strings,
  • abap_trans_objbind_tab für die Angabe von Objektreferenzen (nur bei XSLT),
  • abap_trans_parm_obj_bind_tab für die Angabe von Datenreferenzen (nur bei XSLT).

Parameterübergabe an XSL-Transformationen

Die angegebenen Parameter müssen in einer XSL-Transformation wie folgt als Eingabeparameter definiert sein:

<xsl:param name="..." sap:type="..." />

Für das Attribut name muss der Parametername angegeben werden. Damit eine Bindung stattfindet muss die Schreibweise genau mit der Schreibweise übereinstimmen, wie sie im ABAP-Laufzeit-Framework vorliegt. Bei der statischen Angabe b1, b2, ... sind dies Großbuchstaben, bei der dynamischen Angabe in rtab ist es die dort verwendete Schreibweise.

Für das optionale Attribut type kann einer der Typbezeichner string, number, boolean, nodeset, xstring oder object(...) angegeben sein, wobei in den Klammern hinter object der Name einer globalen ABAP-Klasse anzugeben ist. Der Namensraum vor type muss als xmlns:sap="http://www.sap.com/sapxsl" definiert sein, wobei als Konvention das Präfix sap vorgeschlagen wird.

Wenn in der Transformation kein Typ angegeben ist, werden die Datentypen elementarer Parameter gemäß folgender Tabelle auf XSL-Typen abgebildet.

ABAP-Datentyp XSL-Parametertyp
c, d, n, string string
i (b, s), f, p number
x, xstring string, wobei der Inhalt nach Base64 dargestellt wird.

Falls in der XSL-Transformation die in obiger Tabelle gezeigten XSL-Typen explizit angegeben sind, müssen passende elementare ABAP-Parameter angegeben werden, die in den XSL-Typ konvertierbar sind:

  • Der XSL-Typ boolean erwartet ABAP-Parameter vom Typ c der Länge eins, wobei ein Leerzeichen als "falsch" und ein anderes Zeichen als "wahr" interpretiert wird.
  • Der XSL-Typ xstring erwartet ABAP-Parameter vom Typ x oder xstring und der Inhalt wird hexadezimal dargestellt.
  • Die XSL-Typen nodeset und object erwarten eine Objektreferenzvariable, die auf eine Instanz einer Klasse zeigt, wobei der Typ nodeset passende Objekteigenschaften erwartet.

Falls ein Parameter nicht zum XSL-Typ passt, kommt es zu einer unbehandelbaren Ausnahme. Falls ein in der XSL-Transformation definierter Parameter nicht übergeben wird, wird er in der Transformation auf einen Standardwert gesetzt. Ein angegebener Parameter, der nicht in der XSL-Transformation definiert ist, wird ignoriert.

Hinweise

  • Die XSL-Typen string, number, boolean und nodeset sind XSL-Standardtypen, während xstring und object spezielle SAP-Erweiterungen darstellen. Der Typ xstring ermöglicht es, Byteketten hexadezimal statt zur Basis 64 darzustellen. Der Typ object erlaubt den Aufruf von ABAP-Methoden aus dem XSLT-Programm.
  • Für die Übergabe von Objektreferenzen gibt es auch noch einen speziellen Zusatz OBJECTS, der aber durch PARAMETERS ersetzt wird.

Parameterübergabe an ST-Programme

In einem ST-Programm müssen die Parameter wie folgt außerhalb eines Templates als Parameter des Haupt-Templates definiert sein:

tt:parameter name="..." $[kind="..."$]
$[$[s-val="..."$]$[d-val="..."$]$]$|$[val="..."$] />

Beim Aufruf eines ST-Programms werden außer Eingabeparametern auch Ausgabe- und Ein-/Ausgabeparameter unterstützt. Die Art des Parameters ist über kind im ST-Programm definiert, wobei "in", "out" und "inout" angegeben sein können und letzteres der Standard ist. Mit den val-Attributen können Ersatzwerte definiert sein.

Ausnahmen

Behandelbare Ausnahmen

CX_TRANSFORMATION_ERROR

  • Ursache: Gemeinsame Oberklasse aller transformationsspezifischen Ausnahmeklassen für CALL TRANSFORMATION. Die direkten Unterklassen sind CX_ST_ERROR für Simple Transformations und CX_XSLT_EXCEPTION für XSL-Transformationen. Bei Ausführung der Anweisung CALL TRANSFORMATION können Ausnahmen der Klasse CX_TRANSFORMATION_ERROR und fast aller ihrer Unterklassen behandelt werden. Die Wiederaufsetzbarkeit einer Ausnahme der Unterklasse CX_ST_DESERIALIZATION_ERROR kann mit der Transformationsoption exceptions = 'resumable' gesteuert werden.
Zusätzlich kann es während der Ausführung einer Transformation zu weiteren Ausnahmen kommen:
  • Ausnahmen wie solche, die beim Mapping von ABAP-Datentypen nach asXML auftreten können, sind nicht direkt behandelbar. Sie lösen Ausnahmen der Klasse CX_TRANSFORMATION_ERROR (oder ihrer Unterklassen) aus und sind über diese behandelbar.

  • Ausnahmen, die in ABAP-Methoden auftreten, die während einer Transformation aufgerufen werden, wie bei der Transformation von Objekten mit den Methoden SERIALIZE_HELPER und DESERIALIZE_HELPER oder beim Zugriff auf ABAP Objects aus ST, lösen Ausnahmen der Klasse CX_TRANSFORMATION_ERROR (oder ihrer Unterklassen) aus, wenn sie in der Schnittstelle der Methode mit RAISING deklariert sind. Dabei wird die Wiederaufsetzbarkeit der ursprünglichen Ausnahme übernommen. Ausnahmen, die nicht deklariert sind, lösen dagegen Ausnahme CX_SY_NO_HANDLER aus, die nicht über CX_TRANSFORMATION_ERROR (oder ihre Unterklassen) behandelt werden kann.

  • Die Ausnahme CX_SY_STRING_SIZE_TOO_LARGE ist auch möglich, löst jedoch keine Ausnahme der Klasse CX_TRANSFORMATION_ERROR aus. Sie muss direkt behandelt werden (siehe unten).

Das Attribut PREVIOUS des zugehörigen Ausnahmeobjekts enthält in allen Fällen eine Referenz auf die ursprüngliche Ausnahme. Wenn eine solche Ausnahme nicht behandelt wird, zeigt der Kurzdump die ursprüngliche Ausnahme an.

Unterklassen von CX_ST_ERROR

CX_ST_CALL_ERROR

  • Ursache: Fehler beim Aufruf der Transformation

CX_ST_CALL_METHOD_ERROR

  • Ursache: Ausnahme in einer aus der Transformation aufgerufenen ABAP-Methode

CX_ST_CONDITION

  • Ursache: Fehler in einer Transformations-Bedingung

CX_ST_CONSTRAINT_ERROR

  • Ursache: Zu serialisierendes bzw. deserialisierendes Datenobjekt ist zu lang.

CX_ST_DESERIALIZATION_ERROR

  • Ursache: Fehler bei der Deserialisierung

CX_ST_FORMAT_ERROR

  • Ursache: Formatfehler in einem Knoten

CX_ST_INVALID_XML

  • Ursache: Die Serialisierung würde zu ungültigem XML führen

CX_ST_MATCH

  • Ursache: Bei der Deserialisierung ist der Abgleich fehlgeschlagen

CX_ST_REF_ACCESS

  • Ursache: Fehler beim Zugriff auf einen Datenknoten

CX_ST_RUNTIME_ERROR

  • Ursache: Fehler bei der Ausführung der Transformation

CX_ST_SERIALIZATION_ERROR

  • Ursache: Fehler bei der Serialisierung

CX_ST_VALIDATION_ERROR

  • Ursache: Fehlgeschlagene Validierung mit dem Attribut xsd-type bei den ST-Anweisungen tt:value, tt:write oder tt:read. Diese Ausnahme kann nicht direkt abgefangen werden.

Unterklassen von CX_XSLT_EXCEPTION

CX_XSLT_ABAP_CALL_ERROR

  • Ursache: Fehler beim Aufruf einer ABAP Methode aus XSLT
    Laufzeitfehler: XSLT_METH_ERROR

CX_XSLT_DESERIALIZATION_ERROR

  • Ursache: Fehler bei der Deserialisierung
    Laufzeitfehler: XML_NOT_SUPPORTED

CX_XSLT_FORMAT_ERROR

  • Ursache: Dokument ist nicht im asXML-Format
    Laufzeitfehler: XML_FORMAT_ERROR

CX_XSLT_RUNTIME_ERROR

  • Ursache: Fehler im XSLT-Prozessor
    Laufzeitfehler: UNCAUGHT_EXCEPTION

CX_XSLT_SERIALIZATION_ERROR

  • Ursache: Fehler bei der Serialisierung
    Laufzeitfehler: XML_NOT_SUPPORTED

Andere Ausnahmeklassen

CX_SY_STRING_SIZE_TOO_LARGE

  • Ursache: Bei einer Transformation überschreitet eine Operation mit einem String ihre maximale Größe. Diese Ausnahme löst keine Ausnahme der Klasse CX_TRANSFORMATION_ERROR aus, sondern muss direkt behandelt werden.
Sie kann in folgenden Fällen für alle Arten von Transformationen behandelt werden:
  • Das Ziel hinter RESULT ist vom Typ xstring oder string.

  • Das Ziel hinter RESULT ist eine Referenzvariable, die auf ein Objekt der Klasse CL_SXML_STRING_WRITER zeigt.

Sie kann in folgenden Fällen nicht behandelt werden:
  • Das Ziel hinter RESULT ist eine Interfacereferenzvariable vom Typ IF_IXML_OSTREAM.

In diesen Fällen tritt immer ein Laufzeitfehler auf.





TXBHW - Original Tax Base Amount in Local Currency   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 53265 Date: 20240328 Time: 180543     sap01-206 ( 534 ms )