Ansicht
Dokumentation

ABAPCONVERT_DATE_UTCLONG - CONVERT DATE UTCLONG

ABAPCONVERT_DATE_UTCLONG - CONVERT DATE UTCLONG

CL_GUI_FRONTEND_SERVICES - Frontend Services   Fill RESBD Structure from EBP Component Structure  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CONVERT INTO UTCLONG

Kurzreferenz



CONVERT DATE dat
        TIME tim $[FRACTIONAL SECONDS fs$]
        $[DAYLIGHT SAVING TIME dst$]
        TIME ZONE tz
        INTO UTCLONG time_stamp.


Wirkung

Diese Anweisung konvertiert ein in dat angegebenes Datum, eine in tim angegebene Zeit mit optional in fs angegebenen Sekundenbruchteilen und eine in dst angegebene Sommerzeitmarkierung der in tz angegebenen Zeitzone in einen Zeitstempel und weist das Ergebnis einem Zeitstempelfeld time_stamp zu. Die Konvertierung erfolgt nach dem Regelwerk für Zeitzonen.

Bei dat,tim, fs, dst und tz handelt es sich um funktionale Operandenpositionen.

  • Für dat muss ein Operand vom Typ d angegeben werden, der ein gültiges Datum enthält. Falls dat einen ungültigen Wert enthält, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_CONVERSION_NO_DATE. Die wegen der Umstellung vom Julianischen auf den Gregorianischen Kalender nicht vorhandenen Tage vom 5.10.1582 bis zum 14.10.1582 werden hier als ungültige Werte betrachtet.
  • Für tim muss ein Operand vom Typ t angegeben werden, der eine gültige Zeit enthält. In tim sind nur die Werte 00 bis 23 für die Stunden und 00 bis 59 für die Minuten und Sekunden sowie der Wert 240000 gültig. Falls tim einen ungültigen Wert enthält, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_CONVERSION_NO_TIME. Der Wert 240000 bewirkt, dass das Datum in dat um einen Tag erhöht und die Zeit auf 000000 gesetzt wird.
  • Für fs kann ein Operand vom Typ decfloat34 angegeben werden, der Sekundenbruchteile bis zu sieben Nachkommastellen enthält. Der Wert von fs wird muss im Bereich 0,0000000 bis 0,9999999 liegen, sonst kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_CONVERSION_NO_DATE_TIME. Falls der Zusatz FRACTIONAL SECONDS nicht angegeben ist, wird implizit der Wert 0 verwendet.
  • Für dst kann ein Operand vom Typ c der Länge 1 angegeben werden, der den Wert "X" oder " " enthält, um das Verhalten der Anweisung bezüglich der Sommerzeit zu steuern.
  • Falls dst den Wert "X" hat, wird der Wert von tim als Zeitangabe Sommerzeit aufgefasst.

  • Falls dst den Wert " " hat, wird der Wert von tim als Zeitangabe in Winterzeit aufgefasst.

  • Falls dst weder den Wert "X" noch " " hat, kommt es zu einer behandelbaren Ausnahme der Klasse CX_PARAMETER_INVALID_RANGE.

Falls die in tz angegebene Zeitzone keine Sommerzeitregel hat (z.B. bei Angabe von "UTC") hat der Zusatz DAYLIGHT SAVING TIME keine Wirkung. Falls der Zusatz DAYLIGHT SAVING TIME nicht angegeben ist, wird der Wert von dst implizit auf "X" gesetzt, wenn die Angaben in tim und dat in der Sommerzeit liegen und auf " " bei Angaben in der Winterzeit. In der doppelten Stunde bei der Umstellung von Sommerzeit auf Winterzeit wird die Angabe in tim und dat als Zeitangabe in der Sommerzeit aufgefasst und dst auf den Wert "X" gesetzt. Wenn der Wert in dst nicht zu den Angaben in tim und dat passt, wenn also in der Winterzeit der Wert "X" und in der Sommerzeit der Wert " " angegeben wird, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_CONVERSION_NO_DATE_TIME.
  • Für tz muss ein zeichenartiger Operand angegeben werden, der eine Zeitzone aus der DDIC-Datenbanktabelle TTZZ enthält.
  • Ist tz initial, wird bei der Konvertierung in den Zeitstempel keine Zeitverschiebung berechnet.

  • Wird die angegebene Zeitzone nicht in der DDIC-Datenbanktabelle TTZZ gefunden, kommt es zu einer behandelbaren Ausnahme der Klasse CX_SY_CONVERSION_NO_DATE_TIME.

  • Ist das Regelwerk für die angegebene Zeitzone nicht vollständig, kommt es zu einer unbehandelbaren Ausnahme.

Für time_stamp kann angegeben werden:

  • Eine vorhandene Variable vom Datentyp utclong.

Wenn folgende Kombinationen von Werten für DATE und TIME angegeben werden

  • "00000000" als dat und "000000" als tim
  • "00010101" als dat und "000000" als tim
  • "99991231" als dat und "235959" als tim

wird bei der Erstellung des Zeitstempels keine Zeitverschiebung berechnet.

Wenn dat und tim gültige Werte enthalten, in Kombination mit einer gültigen Zeitzone in tz aber einen ungültigen Zeitstempel ergeben, kommt es zu einer Ausnahme der Klasse CX_SY_CONVERSION_NO_DATE_TIME.

Hinweise

  • Aktuelle benutzerbezogene lokale Zeitangaben und die zugehörige lokale Zeitzone können den Systemfeldern sy-datlo, sy-timlo und sy-zonlo entnommen werden.
  • Mit der Angabe von Sommer- und Winterzeit hinter DAYLIGHT SAVING TIME können aus gleichen lokalen Zeitangaben innerhalb der doppelten Stunde bei der Umstellung von Sommer- auf Winterzeit unterschiedliche UTC-Zeitstempel erstellt werden.
  • Bei der Umstellung von Winter- auf Sommerzeit wird in der Regel eine Stunde ausgelassen. So wird z.B. in der Zeitzone "CET" im Jahr 2009 am 29.03. die Stunde von 2:00 auf 3:00 Uhr ausgelassen. Wird versucht, eine Zeit während dieser fehlenden Stunde zu konvertieren, kommt es zu einer Ausnahme.
  • Aus einer gültigen Datums- und Zeitangabe kann ein ungültiger Zeitstempel in der Regel nur erzeugt werden, indem das erste gültige Datum 00010101 mit Zeitzonen östlich von UTC oder das letzte gültige Datum 99991231 mit Zeitzonen westlich von UTC kombiniert wird.
  • Eine initiale Zeitzone tz entspricht nur dann der Angabe UTC, wenn die Tabellen des Regelwerks für Zeitzonen für die Zeitzone UTC richtig gefüllt sind.
  • Die Anweisung CONVERT INTO UTCLONG setzt nicht den Rückgabewert sy-subrc.

Für die Zeitzone "EST" gelten die im Beispiel zu CONVERT UTCLONG beschriebenen Einstellungen im Regelwerk für Zeitstempel. Aus einer lokalen Zeitangabe werden über die Angabe von Sommer- und Winterzeit zwei unterschiedliche UTC-Zeitstempel 2019-11-03T05:30:00.0000000Z und 2019-11-03T06:30:00.0000000Z erzeugt. Ohne den Zusatz DAYLIGHT SAVING TIME wird der UTC-Zeitstempel 2019-11-03T05:30:00.0000000Z erzeugt.

Für die Zeitzone "EST" gelten die im Beispiel zu CONVERT UTCLONG beschriebenen Einstellungen im Regelwerk für Zeitstempel. Aus einer lokalen Zeitangabe werden über die Angabe von Sommer- und Winterzeit zwei unterschiedliche UTC-Zeitstempel 2019-11-03T05:30:00.0000000Z und 2019-11-03T06:30:00.0000000Z erzeugt. Ohne den Zusatz DAYLIGHT SAVING TIME wird der UTC-Zeitstempel 2019-11-03T05:30:00.0000000Z erzeugt.

Das Beispiel demonstriert die spezielle Behandlung der eigentlich ungültigen Zeit 240000.

Zeitstempel in Zeitstempelfeld konvertieren.

Ausnahmen

Behandelbare Ausnahmen

CX_SY_CONVERSION_NO_DATE

  • Ursache: Für DATE wurde ein ungültiges Datum angegeben.
    Laufzeitfehler: CONVT_INVALID_DATE

CX_SY_CONVERSION_NO_TIME

  • Ursache: Für TIME wurde eine ungültige Zeit angegeben.
    Laufzeitfehler: CONVT_INVALID_TIME

CX_SY_CONVERSION_NO_DATE_TIME

  • Ursache: Für FRACTIONAL SECONDS wurde ein ungültiger Wert angegeben.
    Laufzeitfehler: CONVT_INVALID_FRAC_SEC
  • Ursache: Der Wert für DAYLIGHT SAVING TIME passt nicht zu den Werten für DATE und TIME.
    Laufzeitfehler: INVALID_POINT_IN_TIME
  • Ursache: Es würde ein ungültiger Zeitstempel erzeugt.
    Laufzeitfehler: INVALID_POINT_IN_TIME
  • Ursache: Unzulässige Zeitzone in tz.
    Laufzeitfehler: INVALID_TIME_ZONE

CX_PARAMETER_INVALID_RANGE

  • Ursache: Für DAYLIGHT SAVING TIME wurde ein ungültiger Wert angegeben.
    Laufzeitfehler: PARAMETER_INVALID_RANGE

Unbehandelbare Ausnahmen

  • Ursache: Unvollständiges Regelwerk für die angegebene Zeitzone.
    Laufzeitfehler: CONVERT_TSTMP_INCONSISTENT_TAB
  • Ursache: Es wird ein Operand mit einem falschen Typ verwendet.
    Laufzeitfehler: TCHK_TYPE_LOAD





BAL_S_LOG - Application Log: Log header data   General Data in Customer Master  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 14398 Date: 20240329 Time: 031734     sap01-206 ( 183 ms )