Ansicht
Dokumentation

ABENST_OPTION_FORMAT - ST OPTION FORMAT

ABENST_OPTION_FORMAT - ST OPTION FORMAT

RFUMSV00 - Advance Return for Tax on Sales/Purchases   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- option, Abbildungsregeln für elementare Typen

... option="$[format(fmt)$]$[,decimals(dec)$]$[,regime(num$|char$|bin)$]$[,noError$]"

Zusätze:

1. ... format(fmt) ...

2. ... decimals(dec) ...

3. ... regime(num$|char$|bin) ...

4. ... noError ...

Wirkung

Angabe von Abbildungsregeln für elementare Typen.

  • Mit format können verschiedene Formate fmt angegeben werden.
  • Mit decimals können die Nachkommastellen numerischer Werte und von Zeitstempeln beeinflusst werden.
  • Mit regime können eine numerische, zeichenartige oder byteartige Behandlung erzwungen werden.
  • Mit noError kann für manche ABAP-Typen und für manche der Formate eine Ausnahme bei ungültigen Werten verhindert werden.

Zusatz 1

... format(fmt) ...

Wirkung

Mit der Option format können:

  • an XML-Schema-Datentypen angelehnte Formate fmt angegeben werden, um aus ABAP-spezifischen Darstellungen bestimmter elementarer Werte die entsprechende XML - oder JSON-Darstellung zu erzeugen und umgekehrt.
  • weitere Formate fmt angegeben werden, um ABAP-Daten in Framework-spezifische Darstellungen zu verwandeln und umgekehrt, die nicht der standardmäßigen asXML-Darstellung entsprechen.

Die folgende Tabelle zeigt die möglichen Formate fmt, die ABAP-Typen und Darstellungen, für die sie verwendet werden können, sowie die zugehörigen XML- und JSON-Darstellungen.

fmt ABAP-Typ ABAP-Darstellung XML-Darstellung JSON-Darstellung
Boolesch c, Länge 1 X, " " true, false true, false
hex x, xstring 0123456789ABCDEF 0123456789ABCDEF 0123456789ABCDEF
duration t 125814 PT12H58M14S PT11H24M22S
dateTime utclong,\lbr TIMESTAMP,\lbr TIMESTAMPL 2014-12-12 11:24:22.7717230,\lbr 20141212112422,\lbr 20141212112422.7717230 2014‑12‑12T11:27:22.7717230Z,\lbr 2014‑12‑12T11:27:22Z,\lbr 2014‑12‑12T11:27:22.771723Z 2014‑12‑12T11:27:22.7717230Z,\lbr 2014‑12‑12T11:27:22Z,\lbr 2014‑12‑12T11:27:22.771723Z
dateTimeOffset c, Länge 18 20141212113855+180 2014‑12‑12T11:38:55+03:00 2014‑12‑12T11:38:55+03:00
dateTimeOffset utclong,\lbr TIMESTAMP,\lbr TIMESTAMPL 2014-12-12 11:24:22.7717230,\lbr 20141212112422,\lbr 20141212112422.7717230 2014‑12‑12T11:27:22.7717230+00:00, \lbr2014‑12‑12T11:27:22+00:00,\lbr 2014‑12‑12T11:27:22.771723+00:00 2014‑12‑12T11:27:22.7717230+00:00, \lbr 2014‑12‑12T11:27:22+00:00,\lbr 2014‑12‑12T11:27:22.771723+00:00
dateTimeLocal c, Länge 14 20141212114245 2014‑12‑12T11:42:45 2014‑12‑12T11:42:45,
dateTimeLocal utclong,\lbr TIMESTAMP,\lbr TIMESTAMPL 2014-12-12 11:24:22.7717230,\lbr 20141212112422,\lbr 20141212112422.7717230 2014‑12‑12T11:42:45.7717230,\lbr 2014‑12‑12T11:42:45\lbr 2014‑12‑12T11:42:45.771723 2014‑12‑12T11:42:45.7717230,\lbr 2014‑12‑12T11:42:45,\lbr 2014‑12‑12T11:42:45.771723
ticks d 20141212 2014‑12‑12 /Date(1418342400000)/
ticks utclong,\lbr TIMESTAMP,\lbr TIMESTAMPL 2014-12-12 11:50:38.9922080,\lbr 20141212115038,\lbr 20141212115038.9922080 2014‑12‑12T11:50:38.9922080Z,\lbr 2014‑12‑12T11:50:38Z,\lbr2014‑12‑12T11:50:38.992208Z /Date(1418383462771)/,\lbr /Date(1418383462000)/,\lbr /Date(1418383462771)/
ticksOffset c, Länge 18 20141212115254+180 2014‑12‑12T11:52:54+03:00 /Date(1418383462000+0180)/
ticksOffset utclong,\lbr TIMESTAMP,\lbr TIMESTAMPL 2014-12-12 11:24:22.7717230,\lbr 20141212112422,\lbr 20141212112422.7717230 2014‑12‑12T11:27:22.7717230+00:00,\lbr 2014‑12‑12T11:27:22+00:00,\lbr 2014‑12‑12T11:27:22.771723+00:00 /Date(1418383462771+0000)/,\lbr /Date(1418383462000+0000)/,\lbr /Date(1418383462771+0000)/
guid x, Länge 16; c, Länge 32,\lbr c, Länge 22 0050569181751ED4A0BED3E86422E104, \lbr 051MaO5r7jIWljFeP2BX10 00505691‑8175‑1ed4‑a0be‑d3e86422e104 00505691‑8175‑1ed4‑a0be‑d3e86422e104
qName string {uri}name ... xmlns:...="uri">...:name/...> {uri}name
uri c, string :;=?[\]^_``{|}~ :;%3C=%3E?[%5C]%5E_%60%7B%7C%7D~ :;%3C=%3E?[%5C]%5E_%60%7B%7C%7D~
uriFull c, string :;=?[\]^_``{|}~ %3A%3B%3C%3D%3E%3F%5B%5C%5D%5E_%60%7B%7C%7D~ %3A%3B%3C%3D%3E%3F%5B%5C%5D%5E_%60%7B%7C%7D~
uri1 c, string Rock'n'Roll & Blues 'Rock''n''Roll%20%26%20Blues' 'Rock''n''Roll%20%26%20Blues'
uri1 x, xstring 0123456789ABCDEF binary'0123456789ABCDEF' binary'0123456789ABCDEF'
uri1 t 125814 time'PT12H58M14S' time'PT12H58M14S'
uri1 utclong,\lbr TIMESTAMP,\lbr TIMESTAMPL 2014-12-12 11:24:22.7717230, \lbr20141212112422,\lbr 20141212112422.7717230 datetimeoffset'2014‑12‑12T11%3A27%3A22.7717230Z',\lbr datetimeoffset'2014‑12‑12T11%3A27%3A22Z',\lbr datetimeoffset'2014‑12‑12T11%3A27%3A22.771723Z' datetimeoffset'2014‑12‑12T11%3A27%3A22.7717230Z',\lbr datetimeoffset'2014‑12‑12T11%3A27%3A22Z',\lbr datetimeoffset'2014‑12‑12T11%3A27%3A22.771723Z'
uri2 x, Länge 16; c, Länge 32 0050569181751ED4A0BED3E86422E104 guid'00505691‑8175‑1ed4‑a0be‑d3e86422e104' guid'00505691‑8175‑1ed4‑a0be‑d3e86422e104'
uri2 d 20141212 datetime'2014‑12‑12T00%3A00%3A00' datetime'2014‑12‑12T00%3A00%3A00'
uri2 utclong,\lbr TIMESTAMP,\lbr TIMESTAMPL 2014-12-12 11:24:22.7717230, \lbr20141212112422,\lbr 20141212112422.7717230 datetime'2014‑12‑12T11%3A27%3A22.7717230',\lbr datetime'2014‑12‑12T11%3A27%3A22',\lbr datetime'2014‑12‑12T11%3A27%3A22.771723' datetime'2014‑12‑12T11%3A27%3A22.7717230',\lbr datetime'2014‑12‑12T11%3A27%3A22',\lbr datetime'2014‑12‑12T11%3A27%3A22.771723'
language c, Länge 1 E, D, ... EN, DE, ... EN, DE, ...
currCode c, Länge 5 EUR, USD, ... EUR, USD, ... EUR, USD, ...
unitCode c, Länge 3 KM, MI, ... KMT, SMI, ... KMT, SMI, ...
currency=CURRCODE Numerische Typen 123456,\lbr 123,456 123456,\lbr 123,456 123456,\lbr 123,456
unit=UNITCODE p, decfloat16, decfloat34 123.000,\lbr 123,456 123,\lbr 123,456 123,\lbr 123,456
alpha c, string, n 0000123456 123456   123456  

Folgende Formate entsprechen den unter Mapping weiterer XML-Schema-Datentypen aufgeführten XML-Schema-Datentypen oder weiteren Datentypen. Für eine genaue Beschreibung siehe

  • boolean für Wahrheitswerte
  • dateTime, dateTimeOffset, dateTimeLocal für Datums-/Zeitwerte
  • guid für UUIDs
  • qName für qualifizierte Namen
  • language für ISO-Sprachkürzel
  • currCode für ISO-Währungsschlüssel
  • unitCode für ISO-Einheitenschlüssel

Für dateTimeOffset und dateTimeLocal können neben dem Zeitstempeltyp utclong auch gepackte Zahlen, die den Datentypen TIMESTAMP bzw. TIMESTAMPL aus dem ABAP Dictionary entsprechen, als ABAP-Typen verwendet werden. Bei dateTimeOffset wird in der XML- bzw. JSON-Darstellung von Zeitstempeln der Wert 0 für den Offset verwendet. Bei boolean, language, currCode und unitCode kann noError angegeben werden, um eine Ausnahme bei ungültigen Werten zu verhindern.

Die anderen Formate haben folgende Bedeutung:

  • Das Format hex bewirkt, dass byteartiger Inhalt auf ein Hexadezimalformat und nicht auf Base64 gemappt wird.
  • Das Format duration beruht auf dem gleichnamigen XML-Schema-Datentyp.
  • Die Formate ticks und ticksOffset dienen der JSON-Repräsentation von UNIX-Zeitstempeln (Ticks), die auf der Zahl der Millisekunden seit dem 01.01.1970,00:00:00 beruhen, für OData. Diese Formate werden nur in JSON speziell unterstützt, während in XML das normale Datumsformat bzw. die zugehörigen Zeitstempelformate verwendet werden. Wenn ticksOffset für den Zeitstempeltyp utclong oder für gepackte Zahlen, die den Datentypen TIMESTAMP bzw. TIMESTAMPL entsprechen, verwendet wird, wird in der XML- bzw. JSON-Darstellung für den Offset der Wert 0 verwendet.
  • Die Formate uri und uriFull maskieren bei der Serialisierung Sonderzeichen wie die eingebaute Funktion escape mit den Format E_URI bzw. E_URI_FULL. Bei der Deserialisierung werden die Fluchtsymbole in die entsprechenden Zeichen verwandelt.
  • Das Format uri1 dient der Darstellung literaler Werte in URIs für OData.
  • Inhalte der ABAP-Typen c und string werden in Hochkommata, eingeschlossen, Sonderzeichen werden wie von der eingebauten Funktion escape mit dem Format E_URI_1 behandelt.

  • Inhalte der ABAP-Typen x und xstring werden wie mit dem Format hex gemappt. Die XML- und JSON-Darstellungen sind in Hochkommata eingeschlossen, und es ist binary vorangestellt.

  • Inhalte des ABAP-Typs t werden wie mit dem Format duration gemappt. Die XML- und JSON-Darstellungen sind in Hochkommata eingeschlossen, und es ist time vorangestellt.

  • Inhalte von Zeitstempelfeldern vom Typ utclong oder von gepackten Zahlen, welche die Dictionary-Typen TIMESTAMP und TIMESTAMPL haben, werden wie mit dem Format datetime gemappt. Die XML- und JSON-Darstellungen sind in Hochkommata eingeschlossen, und es ist datetimeoffset vorangestellt. Die Doppelpunkte : sind durch Fluchtsymbole %3A ersetzt. Der Präfix datetimeoffset bezeichnet in OData einen UTC-Zeitstempel.

  • Das Format uri2 dient der Darstellung weiterer literaler Werte in URIs für OData.
  • Inhalte der ABAP-Typen x der Länge 16 und c der Länge 32 werden wie mit dem Format guid gemappt. Die XML- und JSON-Darstellungen sind in Hochkommata eingeschlossen, und es ist guid vorangestellt.

  • Inhalte des ABAP-Typs d werden wie ein entsprechender Zeitstempel vom Dictionary-Typ TIMESTAMP behandelt, in dem der Zeitanteil den Wert "00:00:00" hat.

  • Inhalte von Zeitstempelfeldern vom Typ utclong oder von gepackten Zahlen, welche die Dictionary-Typen TIMESTAMP und TIMESTAMPL haben, werden wie mit dem Format uri1 gemappt, wobei hier aber das Format eines lokalen Zeitstempels mit dem Präfix datetime verwendet wird.

  • Das Format currency=CURRCODE bereitet bei der Serialisierung die Werte numerischer ABAP-Typen gemäß eines in CURRCODE angegebenen Währungsschlüssels auf. Für CURRCODE können an dieser Stelle sichtbare zeichenartige Datenwurzeln des ST-Programms angegeben werden, deren Länge nicht größer 5 ist. In der Datenbanktabelle TCURX wird die Zeile gesucht, die in der Spalte CURRKEY den Inhalt von CURRCODE hat und der Spalte CURRDEC werden die Nachkommastellen entnommen. Wenn keine Zeile gefunden wird, wird der Standardwert 2 verwendet. Der numerische Inhalt wird gemäß dieser Nachkommastellen aufbereitet. Fehlende Nachkommastellen werden mit 0 aufgefüllt, überzählige Nachkommastellen werden kaufmännisch gerundet. Wenn der Inhalt von CURRCODE initial ist und bei der Deserialisierung hat das Format keine Wirkung. Die Aufbereitung entspricht im Wesentlichen der Funktionalität des Funktionsbausteins CURRENCY_AMOUNT_SAP_TO_IDOC.
  • Das Format unit=UNITCODE bereitet bei der Serialisierung die Werte von Dezimalzahlen gemäß eines in UNITCODE angegebenen Einheitenschlüssels auf. Für UNITCODE können an dieser Stelle sichtbare zeichenartige Datenwurzeln des ST-Programms angegeben werden, deren Länge nicht größer 3 ist. In der Datenbanktabelle T006 wird die Zeile gesucht, die in der Spalte MSEHI den Inhalt von UNITCODE hat und der Spalte ANDEC oder DECAN werden die Nachkommastellen entnommen. Wenn keine Zeile gefunden wird, wird der Standardwert 0 verwendet. Der numerische Inhalt wird gemäß dieser Nachkommastellen aufbereitet. Fehlende Nachkommastellen werden mit 0 aufgefüllt, überzählige insignifikante Nachkommastellen 0 werden abgeschnitten. Bei der Deserialisierung hat das Format keine Wirkung.
  • Bei der Serialisierung werden wie mit alpha = out führende Nullen entfernt.

  • Bei der Deserialisierung werden wie mit alpha = in führende Nullen eingefügt.

In JSON werden die Werte gemäß der XML-Darstellung ausgegeben, außer für qName, das in JSON nicht unterstützt wird. Das Format boolean erzeugt in JSON echte boolesche JSON-Werte.

Falls Datentyp oder Inhalt nicht passen oder falls der aktuelle Knoten mit tt:type typisiert ist, wird die Option format ignoriert oder es kommt zu einer Ausnahme.

Hinweis

Mit der Option format können auch ABAP-Datenobjekte auf XML-Schema-Datentypen abgebildet werden, die nicht mit einer speziell dafür vorgesehenen Domäne typisiert sind.

Formatierungsoptionen

Zusatz 2

... decimals(dec) ...

Wirkung

Die Option decimals setzt bei der Serialisierung die Nachkommastellen numerischer Werte und von Zeitstempeln. Sie kann auf alle numerischen ABAP-Typen und den Zeitstempeltyp utclong angewendet werden und wirkt im Wesentlichen wie die Formatierungsoption DECIMALS für eingebettete Ausdrücke in Zeichenketten-Templates. Die Option decimals hat bei der Deserialisierung keine Wirkung.

Für dec können passende literale ganzzahlige Werte angegeben werden, die für numerische Typen auch negativ sein können. Für den Zeitstempeltyp utclong sind nur die Werte 0 bis 7 erlaubt. Wenn dec nicht angegeben ist (leere Klammer) wird die Option ignoriert.

Wenn decimals für Zeitstempel vom Typ utclong verwendet wird, werden überzählige Nachkommastellen bei der Serialisierung abgeschnitten, nicht gerundet, und es wird mit Nullen auf sieben Nachkommastellen aufgefüllt. Bei Zeitstempeln in gepackten Zahlen der Typen TIMESTAMP und TIMESTAMPL gilt:

  • decimals kann für solche Zahlen mit der Option format kombiniert werden. In diesem Fall wird erst die Option decimals und dann format mit einem für Zeitstempel vorgesehenen Format fmt angewendet .
  • Gepackte Zahlen, die mit einer der speziellen Domänen XSDDATETIME_... typisiert sind, werden erst mit decimals behandelt und dann als Zeitstempel aufbereitet.

Das Ergebnis von decimals muss in diesen Fällen ein gültiger Zeitstempel sein.

Option für Nachkommastellen

Zusatz 3

... regime(num$|char$|bin) ...

Wirkung

Der Zusatz regime bewirkt, dass der ABAP-Ausgangstyp bei der Serialisierung bzw. der ABAP-Zieltyp bei der Deserialisierung durch eines der Regimes num, char oder bin übersteuert wird. num bewirkt eine numerische, char eine zeichenartige Behandlung, bin eine binäre Behandlung der Daten durch die Transformation. Die Option regime schaltet die Wirkung aller speziellen Domänen ab, kann aber mit der Optionen format kombiniert werden, wobei ein mit format angegebenes Format fmt zur Behandlung durch regime passen muss. Das Regime num kann auch mit decimals kombiniert werden.

Die Wirkung der Regime num, char und bin auf die möglichen ABAP-Typen ist wie folgt:

  • Regime num
Erzwingt eine numerische Behandlung des aktuellen Knotens.

  • Alle anderen Datentypen werden bei der Serialisierung vor der eigentlichen Transformation in den Typ decfloat34 konvertiert und dann wie dieser weiterverarbeitet. Ausgangswerte der Typen n, d und t müssen gültig sein. Bei der Deserialisierung wird ein Wert für decfloat34 erzeugt und dieser verlustfrei an den Zieltyp zugewiesen.

  • Regime char
Erzwingt eine zeichenartige Behandlung des aktuellen Knotens

  • Byteartige Datentypen werden wie mit der Formatierungsoption format(hex) behandelt, d.h. die Darstellung erfolgt im Hexadezimalformat.

  • Datums- und Zeittypen werden wie der Typ c entsprechender Länge behandelt, wobei ungültige Werte akzeptiert werden.

  • Regime bin
Erzwingt eine byteartige Behandlung des aktuellen Knotens
  • Numerische Typen werden bei der Serialisierung vor der eigentlichen Transformation in den Typ xstring konvertiert und wie dieser weiterverarbeitet. Bei der Deserialisierung wird ein Wert für xstring erzeugt und dieser in den Zieltyp konvertiert.

  • Quellfelder der zeichenartigen Datentypen c und string werden bei der Serialisierung verlustfrei nach xstring konvertiert und dann weiterverarbeitet. Ein Quellfeld vom Typ n wird auf gültigen Inhalt überprüft und ebenfalls nach xstring konvertiert. Bei der Deserialisierung wird ein Wert für xstring erzeugt und dieser in den Zieltyp konvertiert. Dabei darf es für Typ n zu keinem Überlauf kommen.

  • Quellfelder der Datums- und Zeittypen werden bei der Serialisierung auf einen gültigen Wert überprüft, nach xstring konvertiert und dann weiterverarbeitet. Die Quellfelder werden auf gültigen Inhalt überprüft. Bei der Deserialisierung wird ein Wert für xstring erzeugt und dieser in den Zieltyp konvertiert. Dabei darf es zu keinem Überlauf kommen.

Option für Regime

Zusatz 4

... noError ...

Wirkung

Verhindert Ausnahmen die ansonsten bei der Serialisierung bestimmter ABAP-Typen und bei bestimmten mit format angegebenen Formaten bei ungültigen Werten ausgelöst werden. Die folgende Tabelle zeigt, für welche ABAP-Typen und Formate noError eine Wirkung hat:

Typ Format Auswirkung
n - Führende und schließende Leerzeichen werden ignoriert.
p - Ein ungültiger Wert im letzten Byte wird ignoriert und als positives Vorzeichen interpretiert.
XSDBOOLEAN Boolesch Andere Werte außer "X" und " " werden akzeptiert und geben true zurück.
XSDDATE_D - Ungültige Datumsangaben werden akzeptiert und wie ein Datum formatiert.
XSDTIME_T - Ungültige Zeitangaben werden akzeptiert und wie eine Zeit formatiert.
XSDLANGUAGE language Eine ungültige Sprache wird akzeptiert und es findet keine Umwandlung statt.
XSDCURRCODE currCode Ein ungültiger Währungsschlüssel wird ignoriert und es findet keine Umwandlung statt.
XSDUNITCODE unitCode Ein ungültiger Einheitenschlüssel wird ignoriert und es findet keine Umwandlung statt.

Option für ungültige Werte






Vendor Master (General Section)   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 52798 Date: 20240523 Time: 100036     sap01-206 ( 587 ms )