Zum Hauptinhalt springen

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'