ABAP: Datum + Zeit addieren
Funktionalität
Mit dem Funktionsbaustein `ADD_TIME_TO_DATE` kann eine Zeitdauer (`I_TIME`) zu einem Datum (`I_IDATE`) addiert werden. Über das Periodenkennzeichen `I_IPRKZ` kann die Maßeinheit (Tag, Woche, Monat, Jahr) der Zeitdauer festgelegt werden.Die zulässigen Periodenkennzeichen finden Sie in Tabelle PRDKZ
.
Mit dem Rundungskennzeichen I_RDMHD
ist es möglich, das Ergebnis auf den ersten oder letzten Tag der gewählten Periode zu runden (d.h. bei Periodenkennzeichen = 'Tag' ist das Rundungskennzeichen wirkungslos).
Beispiele:
Monate
DATA
: lv_time TYPE MARA-MHDHB
, lv_new_date TYPE sy-datum
.
"Add 2 Monate
lv_time = 2.
CALL FUNCTION 'ADD_TIME_TO_DATE'
EXPORTING
I_IDATE = sy-datum
I_TIME = LV_TIME
I_IPRKZ = 'M' "Monate
* I_RDMHD =
IMPORTING
O_IDATE = lv_new_date
EXCEPTIONS
OTHERS = 4
.
RESULTAT:
sy-datum = 21.12.2021
-> lv_new_date = '21.02.2022'
Jahre mit Aufrunden
DATA
: lv_time TYPE MARA-MHDHB
, lv_new_date TYPE sy-datum
.
"Add 3 Jahre
lv_time = 3.
CALL FUNCTION 'ADD_TIME_TO_DATE'
EXPORTING
I_IDATE = sy-datum
I_TIME = LV_TIME
I_IPRKZ = 'J' "Jahre
I_RDMHD = '+' "Aufrunden = +; Abrunden = -
IMPORTING
O_IDATE = lv_new_date
EXCEPTIONS
OTHERS = 4
.
RESULTAT:
sy-datum = 21.10.2021
-> lv_new_date = '31.12.2024'
Tage über Monatswechsel
DATA
: lv_time TYPE MARA-MHDHB
, lv_new_date TYPE sy-datum
.
"Add 5 Tage
lv_time = 5.
CALL FUNCTION 'ADD_TIME_TO_DATE'
EXPORTING
I_IDATE = sy-datum
I_TIME = LV_TIME
I_IPRKZ = 'T' "Tage
* I_RDMHD = ' '
IMPORTING
O_IDATE = lv_new_date
EXCEPTIONS
OTHERS = 4
.
RESULTAT:
sy-datum = 26.02.2021
-> lv_new_date = '03.03.2021'