ABAP 7.54 – Neuer Timestamp UTCLONG

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

Über Johann Fößleitner

Der SAP Virus hat mich vor bald 30 Jahren erfasst. Mein erster Arbeitgeber fragte mich damals, ob mir die Begriffe SAP oder ABAP was sagen. "Nein, nie davon gehört", war meine Antwort. Er meint: "Passt, Sie sind eingestellt". Seit damals verbringe ich einen Großteil meiner Zeit in der SE80 bzw. in den ABAP Development Tools. Wie wäre mein Leben verlaufen, wenn mir SAP schon bekannt gewesen wäre? Keine Ahnung, aber sicher nicht so spannend!

  • Posted by Johann Fößleitner
  • On March 11, 2021
Tags: 7.54, 7.55, ISO 8601, Timestamp

0 Comments