Ansicht
Dokumentation

ABENCHAR_DATE_TIME_FIELDS_VALIDITY - CHAR DATE TIME FIELDS VALIDITY

ABENCHAR_DATE_TIME_FIELDS_VALIDITY - CHAR DATE TIME FIELDS VALIDITY

CL_GUI_FRONTEND_SERVICES - Frontend Services   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Gültigkeit von Datums- und Zeitfeldern

Datums- und Zeitfelder der Typen d und t können beliebige alphanumerische Zeichen enthalten.

  • Gültige Werte für Typ d sind aber nur Ziffern, die nach den Kalenderregeln im Format "yyyymmdd" als Datumsangaben zulässig sind: "yyyy" (Jahr): 0001 bis 9999, "mm" (Monat): 01 bis 12, "dd" (Tag): 01 bis 31.
  • Gültige Werte für Typ t sind aber nur Ziffern, die als Zeitangabe im 24-Stunden-Bereich im Format "hhmmss" interpretiert werden können: "hh" (Stunden): 00 bis 23, "mm" (Minuten): 00 bis 59, "ss" (Sekunden): 00 bis 59.

Die Gültigkeit wird vom ABAP-Laufzeit-Framework an folgenden Stellen überprüft:

  • Datums- und Zeitfelder mit ungültigen Werten führen als Quellfeld einer verlustfreien Zuweisung zu einer Ausnahme. Umgekehrt dürfen Quellfelder anderer Typen bei einer verlustfreien Zuweisung auch keine ungültigen Werte in Datums- und Zeitfeldern als Zielfelder erzeugen.
  • Bei einer normalen Zuweisung an numerische Felder führen Datums- und Zeitfelder mit ungültigen Werten zum Wert 0 mit folgenden Ausnahmen:
  • Bei einem Quellfeld vom Typ d werden die wegen der Umstellung vom Julianischen zum Gregorianischen Kalender nicht vorhandenen Werte vom 5.10.1582 bis zum 14.10.1582 je nach Operandenposition entweder als ungültige Werte oder wie die gültigen Werte vom 15.10.1582 bis zum 24.10.1582 behandelt.

  • Bei einem Quellfeld vom Typ t, das nur Ziffern enthält, wird der numerische Wert auch für ungültige Zeitangaben nach der Formel hh*3600+mm*60+ss berechnet.

  • Bei normalen Zuweisungen numerischer Felder an Datums- und Zeitfelder müssen diese innerhalb des Wertebereichs des Datentyps i liegen und es gelten folgende speziellen Regeln:
  • Bei einer Zuweisung von Zahlenwerten an Datumsfelder, die nicht aus der umgekehrten Konvertierung entstehen können, wird das Datumsfeld initialisiert.

  • An Zeitfelder können beliebige Zahlenwerte zugewiesen werden. Bei der Konvertierung wird der Zahlenwert durch 86.400 dividiert und nur der ganzzahlige Rest der Division berücksichtigt, der immer eine gültige Zeit in Stunden, Minuten und Sekunden ergibt.

Bei sonstigen Zuweisungen an Datums- und Zeitfelder, die nicht auf Zuweisungen numerischer Werte abgebildet werden und an sonstigen Operandenpositionen, finden in der Regel keine Überprüfungen statt. Infolgedessen können in Datums- und Zeitfeldern leicht ungültige Werte entstehen und weiterverarbeitet werden.

Initialwert von Datumsfeldern

Eine besondere Rolle spielen in diesem Zusammenhang der Initialwert "00000000" des Datentyps d und das Datum 01.01.0001.

  • Der Initialwert "00000000" des Datentyps d ist kein gültiges Datum. Eine Konvertierung des Initialwerts "00000000" in einen numerischen Datentyp ergibt wie alle ungültigen Werte den Wert 0. Die umgekehrte Konvertierung einer Zahl 0 in ein Datumsfeld vom Typ d ergibt immer das ungültige Datum "00000000". Auch negative Zahlen oder zu große Zahlen ergeben das ungültige Datum "00000000".
  • Da eine Konvertierung eines gültigen Datums in einem Feld vom Typ d die Anzahl der Tage seit dem 01.01.0001 ergibt, ist dieses Datum der Nullpunkt von Datumsberechnungen. Eine Konvertierung eines Datumsfelds vom Typ d mit den Wert "00010101" in einen numerischen Wert ergibt wie die Konvertierung des Initialwerts oder eines anderen ungültigen Werts den Wert 0 und die Konvertierung ist nicht umkehrbar.

Die 1 ist die kleinste Zahl, die bei der Zuweisung an ein Datumsfeld vom Typ d in ein gültiges Datum, nämlich den 02.01.0001, konvertiert wird. Erst ab diesem Datum sind Zuweisungen zwischen gültigen Datumsfeldern und numerischen Feldern umkehrbar.

Bei einer verlustfreien Zuweisung ungültige Werte in Quellfeldern nicht zum Wert 0 bzw. "00000000" sondern zu Ausnahmen. Dort wird der Wert "00010101", der eigentlich zum Wertebereich gehört, als ungültig betrachtet, während der Initialwert "00000000", der eigentlich nicht zum Wertebereich gehört, als gültig betrachtet wird. Dadurch kann der Initialwert "00000000" bei einer verlustfreien Zuweisung verwendet werden und alle erlaubten Zuweisungen zwischen Datumsfeldern und numerischen Feldern sind umkehrbar.

Ausnahme hiervon ist . Dort wird an Operandenpositionen, an denen Werte den Regeln für verlustfreie Zuweisungen genügen müssen, auch der Wert "00010101" als gültiges Datum akzeptiert und wie der Initialwert "00000000" behandelt.

Hinweis

Bei einem Zugriff auf Datums- und Zeitfelder sollte deren gültiger Inhalt gewährleistet sein.

Feststellen eines ungültigen Datums durch einen Vergleich mit dem Wert 0. Für den Vergleich wird das Datumsfeld in ein Integerfeld vom Typ i konvertiert, wobei ein ungültiges Datum den Wert 0 ergibt. Das gültige Datum "00010101", das ebenfalls den Wert 0 ergeben würde, wird zuvor speziell behandelt.

Feststellen einer ungültigen Zeit durch einen Vergleich mit dem Wert 0. Für den Vergleich wird das Zeitfeld in ein Integerfeld vom Typ i konvertiert, wobei eine ungültige Zeit den Wert 0 ergibt. Die gültige Zeit "000000", die ebenfalls den Wert 0 ergeben würde, wird zuvor speziell behandelt.






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

Length: 7892 Date: 20240523 Time: 180718     sap01-206 ( 137 ms )