Blog
ARTIKEL

Erklärung und Anwendung von TIMESTAMPs in ABAP®/SAP®

Gerade SAP Kunden sind meist global agierende Unternehmen, mit Mitarbeitern in verschiedenen Kontinenten bzw. Zeitzonen. Da leider immer noch viele Entwicklungen – auch im SAP Standard – nach wie vor nur mit sy-uzeit bzw. sy-datum arbeiten, habe ich mich entschlossen, hier ein paar Informationen zu Timestamps in ABAP bzw. SAP zur Verfügung zu stellen.

Allgemeines zu den Timestamps

Gerade SAP Kunden sind meist global agierende Unternehmen, mit Mitarbeitern in verschiedenen Kontinenten bzw. Zeitzonen. Da leider immer noch viele Entwicklungen – auch im SAP Standard – nach wie vor nur mit sy-uzeit bzw. sy-datum arbeiten, habe ich mich entschlossen, hier ein paar Informationen zu Timestamps in ABAP bzw. SAP niederzuschreiben.

Die bereits erwähnten Systemfelder sy-datum und sy-uzeit sind für viele Anwendungen nicht ausreichend:

  • bei sy-datum und sy-uzeit handelt es sich um lokale Zeitangaben. Global agierende Unternehmen, mit Standorten in verschiedenen Zeitzonen müssen den Anwendern Zeiten in deren Zeitzone darstellen können.
  • sy-uzeit enthält die Zeit lediglich auf Sekunden genau.

Erzeugung eines Timestamps in ABAP bzw. SAP mit GET TIME STAMP

Für die Erzeugung eines aktuellen Timestamps in einem SAP System wird das ABAP Kommando get time stamp … verwendet. Das Kommando erzeugt einen Zeitstempel für die UTC-Zeit des aktuellen ABAP Systems. Entsprechend der Definition des Zielfeldes wird der Timestamp entweder in der Kurz- oder Langform erstellt. Üblicherweise werden für die Felddefinition der Timestamp-Felder die Datenelemente timestamp bzw. timestampl verwendet.

Im nachfolgenden Beispiel werden beide Timestamp-Formate erstellt:

data: l_timestamp type timestamp,
l_timestampl type timestampl.
…
get time stamp field l_timestamp.
get time stamp field l_timestampl.
…

Hinweis: Ein Timestamp ist nicht immer „eindeutig“. Sprich, ein Programm dass in kurzer Zeit mehrere Timestamps zieht, könnte unter Umständen die gleichen Timestamps ziehen.

Konvertierung/Umrechnung von Timestamps

Timestamps können mit Hilfe des Kommandos convert time stamp … in bzw. von Datum- bzw. Uhrzeitfeld (type d und t) konvertiert werden. Für die Konvertierung eines Timestamps in ein Datum- bzw. Uhrzeitfeld ist mit dem Zusatz time zone die Zeitzone anzugeben. Wie oben erwähnt, erhält man bei get time stamp den Zeitstempel in UTC Zeit. Bei der Konvertierung eines Datums bzw. Uhrzeit in einen Timestamp kann mit dem Zusatz time zone die Zeitzone für das Datum- bzw. Uhrzeitfeld mitgegeben werden.

Nachfolgendes Beispiel konvertiert einen Timestamp in ein Datum- bzw. Uhrzeitfeld. Als Ziel-Zeitzone wird die Zeitzone des Anwenders sy-zonlo verwendet. Die Zeitzone kann in den persönlichen Einstellungen am Userstamm eingestellt werden.

data: l_timestamp type timestamp,
l_date type d,
l_time type t.
…
get time stamp field l_timestamp.
…
convert time stamp l_timestamp time zone sy-zonlo into date l_date time l_time.

Nachfolgend das Gegenstück, ein Beispiel zur Konvertierung eines Datum- bzw. Uhrzeitfeldes in einen Timestamp:

data: l_timestamp type timestamp,
l_date type d,
l_time type t.
…
move sy-datum to l_date.
move sy-uzeit to l_time.
…
convert date l_date time l_time into time stamp l_timestamp time zone sy-zonlo.

Manchmal besteht die Anforderung darin, ein Datum/Zeit von einer Zeitzone in eine andere Zeitzone zu konveriteren. Ich verwende dazu als Hilfe die Konvertierung in einen Timestamp. Sprich, zuerst Konvertierung von Datum/Uhrzeit der Ausgangszeitzone in einen Timestamp, dann Konvertierung des Timestamps in Datum/Uhrzeit der Zielzeitzone.

Zusatz DAYLIGHT SAVING TIME field

Mit diesem Zusatz erhält man die Information, ob sich der Zeitstempel für die angegebene Zeitzone in der Sommerzeit befindet.

Klasse cl_abap_tstmp – Berechnungen von Timestamps

Für verschiedene Berechnungen, Prüfungen oder Konvertierungen steht in einem ABAP System die Klasse cl_abap_tstmp zur Verfügung. Die Klasse bietet verschiedene Methoden an, nachfolgende Methoden sind hervorzuheben:

  • add Addition von x Sekunden zu einem Timestamp
  • subtract Subtraktion eines Timestamps von einem anderen Timestamp
  • subtractsec Subtraktion von x Sekunden von einem Timestamp
  • compareVergleich von zwei Timestamps

Für weitere Informationen zu den restlichen Methoden bitte direkt in die Klasse/Methode einsteigen und die Dokumentation aufrufen.

Weitere Informationen stehen auch in der SAP Hilfe unter https://help.sap.com/docs/SAP_NETWEAVER_700/109dcbed6c531014bc94b876083bbe59/4d591ec163e444b4e10000000a42189e.html?locale=de-DE zur Verfügung

Ab 7.53 gibt es einen neuen Timestamp ABAP-Typ UTCLONG. – Details dazu unter  http://cadaxo.com/high-class-development/abap-7-54-neuer-timestamp-utclong/

Passend dazu

Alle Artikel →
Unser Tipp für Sie

Rapid Report Generator for SAP Fiori®

Bestehende ALV-Reports und SAP-Queries in 5 Minuten als Fiori-Bericht bereitstellen – ohne Coding.

Mehr erfahren →