Bisher wurden für Zeitstempel-Felder die Datenelemente TIMESTAMP und TIMESTAMPL verwendet. Hinter diesen Datenelementen verbergen sich gewöhnliche ABAP Typen. Mit 7.54 enthält ABAP nun den eingebauten ABAP-Typ utclong. Ein auf 100 Nanosekunden genauer UTC Zeitstempel.
Es sind Werte von 0001-01-01T00:00:00,0000000 bis 9999-12-31T23:59:59,9999999 möglich. Die interne Darstellung der gültigen Werte ist 1 – 3.155.380.704.000.000.000, was uns aber eher nicht interessieren sollte.
ABAP Zeitstempelfunktionen
Damit wir diese neuen Zeitstempelfelder sinnvoll verwenden können, hat SAP zum Glück auch ein paar neue Funktionen zur Verfügung gestellt:
- utclong_current( ) erzeugt einen aktuellen Zeitstempel
- utclong_add( … ) addiert Tage, Stunden, Minuten oder Sekunden zu einem Zeitstempel
- utclong_diff( … ) berechnet die Differenz von zwei Zeitstempel
ABAP SQL Zeitstempelfunktionen ab 7.55
Auch bei ABAP SQL SELECT Abfragen können die utclong Zeitstempel verwendet werden. Folgende SQL Funktionen stehen zusätzlich zur Verfügung:
- utcl_current( ) erzeugt einen aktuellen Zeitstempel
- utcl_add_seconds( … ) addiert x Sekunden zu einem Zeitstempel
- utcl_seconds_between( … ) berechnet die Differenz von zwei Zeitstempel in Sekunden
ABAP Zeitstempelkonvertierungsfunktionen ab 7.55
Für die Konvertierungen zwischen einem ABAP Dictionary Type TIMESTAMPL und den neuen utclong Zeitstempel, wurden folgende Funktionen zur Verfügung gestellt:
- tstmpl_to_utcl( … ) konvertiert einen ABAP Dictionary Type TIMESTAMPL in einen utclong Zeitstempel
- tstmpl_from_utcl( … ) konvertiert einen utclong Zeitstempel in einen ABAP Dictionary Type TIMESTAMPL
Systemklasse CL_ABAP_UTCLONG
Diese Systemklasse bietet ein paar weitere hilfreiche Funktionen und Konstanten. In den Konstanten CL_ABAP_UTCLONG=>MIN und CL_ABAP_UTCLONG=>MAX sind die jeweiligen Minimal und Maximalwerte für ein utclong Feld definiert.
Die Klasse verfügt über folgende Methoden:
- diff ermittelt die Differenz von zwei Zeitstempel – ähnlich wie Funktion utclong_diff
- read_iso_format Konvertiert einen ISO 8601 Zeitstempel in einen utclong Zeitstempel
- write_iso_format_with_offset Konvertiert einen utclong Zeitstempel in einen ISO 8601 Zeitstempel
- from_system_timestamp Konveriert ein Datum und Uhrzeit in einen utclong Zeitstempel
- to_system_timestamp Konvertiert einen utclong Zeitstempel in ein Datum und Uhrzeit