Ansicht
Dokumentation

ABENCDS_TIMESTAMP_FUNCTIONS_V1 - CDS TIMESTAMP FUNCTIONS V1

ABENCDS_TIMESTAMP_FUNCTIONS_V1 - CDS TIMESTAMP FUNCTIONS V1

General Material Data   PERFORM Short Reference  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

- DDIC-basierte View, Zeitstempelfunktionen

... UTCL_CURRENT()
  $| UTCL_ADD_SECONDS(utcl,seconds)
  $| UTCL_SECONDS_BETWEEN(utcl1,utcl2)
  $| TSTMP_IS_VALID(tstmp)
  $| TSTMP_CURRENT_UTCTIMESTAMP()
  $| TSTMP_SECONDS_BETWEEN(tstmp1,tstmp2,on_error)
  $| TSTMP_ADD_SECONDS(tstmp,seconds,on_error) ...


Varianten:

1. ... UTCL_CURRENT()

2. ... UTCL_ADD_SECONDS(utcl,seconds)

3. ... UTCL_SECONDS_BETWEEN(utcl1,utcl2)

4. ... TSTMP_IS_VALID(tstmp)

5. ... TSTMP_CURRENT_UTCTIMESTAMP()

6. ... TSTMP_SECONDS_BETWEEN(tstmp1,tstmp2,on_error)

7. ... TSTMP_ADD_SECONDS(tstmp,seconds,on_error)

Wirkung

In einer führen diese Funktionen Operationen auf Zeitstempeln aus.

Die Funktionen haben mit der Ausnahme von UTCL_CURRENT und TSTMP_CURRENT_UTCTIMESTAMP positionale Parameter, denen beim Aufruf Aktualparameter zugeordnet werden müssen. Es gibt derzeit keine optionalen Parameter. Als Aktualparameter können passende Felder einer Datenquelle, Literale, Parameter, Pfadausdrücke, eingebaute Funktionen oder Ausdrücke angegeben werden. An den Parameter on_error können ausschließlich Literale übergeben werden. Wenn ein Aktualparameter den Null-Wert enthält, gibt jede Funktion außer TSTMP_IS_VALID einen Null-Wert zurück.

Hinweise

  • Die Zeitstempelfunktionen, die mit UTCL beginnen, bearbeiten Daten, die als echte Zeitstempel auf der Datenbank abgelegt sind. Die Funktionen, die mit TSTMP beginnen, dagegen bearbeiten Zeitstempeln auf der Datenbank, die im ABAP-spezifischen Format als gepackte Zahl in DDIC-Datenbanktabellen abgelegt sind. Wie in ABAP fassen andere Zugriff auf solche Felder diese als normale numerische Werte auf.

Variante 1

... UTCL_CURRENT()


Wirkung

Diese Funktion erzeugt aus Systemzeit und Systemdatum des AS ABAP einen UTC-Zeitstempel nach POSIX-Standard. Der Rückgabewert ist vom eingebauten Dictionary-Typ UTCLONG.

Variante 2

... UTCL_ADD_SECONDS(utcl,seconds)


Wirkung

Die Funktion UTCL_ADD_SECONDS addiert seconds Sekunden auf einen Zeitstempel utclong. Sie hat zwei positionale Parameter. Der Aktualparameter für den Formalparameter utclong muss vom eingebauten Dictionary-Typ UTCLONG sein und einen gültigen UTC-Zeitstempel enthalten. Ein ungültiger Zeitstempel führt zu einem Fehler. Der Aktualparameter für den Formalparameter seconds muss entweder den eingebauten Datentyp INT4 oder den Datentyp DEC der Länge 21 mit 7 Nachkommastellen. Negative Werte werden abgezogen. Wenn das Ergebnis ungültig ist, kommt es zu einem Fehler.

Das Ergebnis ist vom Typ UTCLONG.

Hinweise

  • Der Aktualparameter utcl kann einer der Operanden aus dem Abschnitt Auswirkung sein, einschließlich ein Literal. Ein Literal kann in folgendem Format angegeben werden: '0001-01-01 00:00:02.0000000'
  • Wenn der Positionsparameter utclong leer ist, wird er auf seinen Initialwert gesetzt.
  • Die fehlenden Tage des Gregorianischen Kalenders (5.10.1582 bis 15.10.1582) werden wie üblich im ABAP behandelt.

Variante 3

... UTCL_SECONDS_BETWEEN(utcl1,utcl2)


Wirkung

Die Funktion UTCL_SECONDS_BETWEEN berechnet die Differenz zweier Zeitstempel utcl1 und utcl2 in Sekunden. Sie hat zwei positionale Parameter. Die Aktualparameter für die Formalparameter utcl1 und utcl2 müssen vom eingebauten Dictionary-Typ UTCLONG sein und einen gültigen UTC-Zeitstempel enthalten. Ungültige Zeitstempel führen zu einem Fehler. Wenn utcl2 größer als utcl1 ist, ist das Ergebnis positiv. Wenn die Werte identisch sind, ist das Ergebnis 0. Andernfalls ist das Ergebnis negativ.

Das Ergebnis ist vom Datentyp DEC der Länge 21 mit 7 Nachkommastellen.

Hinweise

  • Der Aktualparameter utcl kann einer der Operanden aus dem Abschnitt Auswirkung sein, einschließlich ein Literal. Ein Literal kann in folgendem Format angegeben werden: '0001-01-01 00:00:02.0000000'
  • Wenn ein Aktualparameter leer ist, wird er auf seinen Initialwert gesetzt.
  • Die fehlenden Tage des Gregorianischen Kalenders (5.10.1582 bis 15.10.1582) werden wie üblich im ABAP behandelt.

Variante 4

... TSTMP_IS_VALID(tstmp)


Wirkung

Die Funktion TSTMP_IS_VALID stellt fest, ob ein Argument tstmp einen gültigen Zeitstempel im Format YYYYMMDDHHMMSS enthält. Der Aktualparameter muss vom eingebauten Datentyp DEC der Länge 15 ohne Nachkommastellen sein. Das Ergebnis ist vom Datentyp INT4. Ein gültiger Zeitstempel ergibt den Wert 1 alle anderen Eingabewerte inklusive des Null-Werts ergeben den Wert 0.

Hinweis

  • Der Aktualparameter tstmp kann nicht als Literal angegeben werden. Das ist nur indirekt mithilfe eines Cast-Ausdrucks möglich. Diese Syntax ist z.B. möglich:
tstmp_is_valid(cast(20200102334455 as abap.dec(15,0)) as demo

Variante 5

... TSTMP_CURRENT_UTCTIMESTAMP()


Wirkung

Die Funktion TSTMP_CURRENT_UTCTIMESTAMP gibt einen UTC-Zeitstempel nach POSIX-Standard zurück. Das Ergebnis ist vom Datentyp DEC der Länge 15 ohne Nachkommastellen.

Hinweise

  • Bei mehrfacher Verwendung der Funktion TSTMP_CURRENT_UTCTIMESTAMP innerhalb einer View ist nicht garantiert, dass jeder Aufruf innerhalb eines Datenbankzugriffs das gleiche Ergebnis hat. Spätere Aufrufe können entsprechend spätere Zeitstempel liefern.

Variante 6

... TSTMP_SECONDS_BETWEEN(tstmp1,tstmp2,on_error)


Wirkung

Die Funktion TSTMP_SECONDS_BETWEEN berechnet die Differenz zweier Zeitstempel tstmp1 und tstmp2 in Sekunden. Die Aktualparameter müssen vom eingebauten Datentyp DEC der Länge 15 ohne Nachkommastellen sein und gültige Zeitstempel im Format YYYYMMDDHHMMSS enthalten. Ungültige Zeitstempel führen zu einem Fehler. Wenn tstmp2 größer als tstmp1 ist, ist das Ergebnis positiv. Andernfalls ist das Ergebnis negativ.

Der Aktualparameter on_error steuert die Fehlerbehandlung. Er muss vom eingebauten Datentyp CHAR der Länge 10 sein und muss einen der folgenden Werte haben:

  • "FAIL", ein Fehler führt zu einer Ausnahme
  • "NULL", ein Fehler führt zur Rückgabe des Null-Werts
  • "INITIAL" ein Fehler führt zur Rückgabe des Initialwerts

Die Groß-/Kleinschreibung wird berücksichtigt. Ein falsch angegebener Wert führt zu einer Ausnahme.

Hinweis

  • tstmp1 und tstmp2 können nicht als Literale angegeben werden. Das ist nur indirekt mithilfe eines Cast-Ausdrucks möglich. Diese Syntax ist z.B. möglich:
tstmp_seconds_between(cast(20200102122345 as abap.dec(15,0)),cast(20200401161034 as abap.dec(15,0)), 'FAIL') as demo

Variante 7

... TSTMP_ADD_SECONDS(tstmp,seconds,on_error)


Wirkung

Die Funktion TSTMP_ADD_SECONDS addiert seconds Sekunden auf einen Zeitstempel tstmp. Der Aktualparameter tstmp muss vom eingebauten Datentyp DEC der Länge 15 ohne Nachkommastellen sein und einen gültigen Zeitstempel im Format YYYYMMDDHHMMSS enthalten. Ein ungültiger Zeitstempel führt zu einem Fehler. Der Aktualparameter seconds muss ebenfalls vom eingebauten Datentyp DEC der Länge 15 ohne Nachkommastellen sein. Negative Werte werden abgezogen. Wenn das Ergebnis ungültig ist, kommt es zu einem Fehler.

Der Aktualparameter on_error steuert die Fehlerbehandlung. Es gilt das Gleiche wie bei der Funktion TSTMP_SECONDS_BETWEEN. Mit einem zusätzlichen Wert "UNCHANGED" kann angegeben werden, dass ein Fehler zur Rückgabe des unveränderten Werts von tstmp führt.

Hinweis

  • tstmp und seconds können nicht als Literale angegeben werden. Das ist nur indirekt mithilfe von Cast-Ausdrücken möglich. Diese Syntax ist z.B. möglich:
tstmp_add_seconds(cast(20200102122345 as abap.dec(15,0)),cast(5 as abap.dec(15,0)), 'FAIL') as demo

Beispiel

Die folgende CDS-View wendet Zeitstempelfunktionen in der SELECT-Liste auf Spalten der DDIC-Datenbanktabelle DEMO_EXPRESSIONS an. Das Programm DEMO_CDS_TIMESTAMP_FUNCTIONS greift mit SELECT auf die View zu. Ein aktueller UTCLONG-Zeitstempel wird erzeugt, Sekunden werden zu einem UTCLONG-Zeitstempel addiert und der Unterschied in Sekunden zwischen zwei UTCLONG-Zeitstempeln wird berechnet. Die Spalte NUM1 der DDIC-Datenbanktabelle wird mit einem Wert versehen, der als Sekunden auf einen Zeitstempel in der Spalte TIMESTAMP1 addiert wird. Zwischen dieser Summe und einem Zeitstempel, der von der Funktion TSTMP_CURRENT_UTCTIMESTAMP auf der Datenbank besorgt wird, wird die Differenz gebildet. Zwischen dem im ABAP-Programm und dem auf der Datenbank erstellten Zeitstempel kann eine Verzögerung wait eingebaut werden.






BAL Application Log Documentation   CL_GUI_FRONTEND_SERVICES - Frontend Services  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 19816 Date: 20240523 Time: 171431     sap01-206 ( 234 ms )