[ABAP] Mit Zeitstempel rechnen

Variante 1 (cl_abap_tstmp)

DATA: l_ts TYPE timestamp.
DATA: l_ts_out TYPE timestamp.

GET TIME STAMP FIELD l_ts.

* 3600s zum Zeitstempel hinzurechnen
l_ts_out = cl_abap_tstmp=>add( tstmp = l_ts
                               secs = 3600 ).

WRITE: / l_ts TIME ZONE sy-zonlo.
WRITE: / l_ts_out TIME ZONE sy-zonlo.

Variante 2 (cl_hrpad_date_computations)

* add_weeks_to_date             -> Addiert Anzahl Wochen zum Datum
* add_months_to_date            -> Addiert Anzahl Monate zum Datum
* add_years_to_date             -> Addiert Anzahl Jahre zum Datum
* subtract_weeks_from_date      -> Subtrahiert Anzahl Wochen vom Datum
* subtract_months_from_date     -> Subtrahiert Anzahl Monate vom Datum
* subtract_years_from_date      -> Subtrahiert Anzahl Jahre vom Datum
* get_weekday_number            -> Ermittelt Nummer des Wochentags
* get_weekday_number_shifted    -> Ermittelt Nummer des Wochentags (verschoben)
* get_first_day_calendar_week   -> Ermittelt den ersten Tag einer Kalenderwoche für best. Jahr
* get_last_weekday_number       -> Bestimmt Nummer des letzten Wochentags
* get_first_day_in_week         -> Ermittelt den ersten Tag einer Woche
* get_first_day_in_shifted_week -> Ermittelt den ersten Tag einer Woche (verschoben)
* get_first_day_previous_month  -> Ermittelt den ersten Tag im davorliegenden Monat
* get_week                      -> Ermittelt die Woche in der das Datum liegt (verschoben)
* get_shifted_week              -> Ermittelt die Woche in der das Datum liegt (verschoben)
* get_last_day_in_month         -> Berechnet den letzten Tag des laufenden Monats
* get_last_day_previous_month   -> Ermittelt den letzten Tag des davorliegenden Monats
* get_days_per_year             -> Ermittelt Anzahl der Tage pro Jahr

Variante 3 (cl_bs_period_toolset_basics)

* erster Tag des aktuellen Monats
DATA(lv_first_day) = cl_bs_period_toolset_basics=>get_first_day_in_month( iv_date = sy-datum ).
WRITE: / lv_first_day.

* erster Tag des vorherigen Monats
DATA(lv_first_day) = cl_bs_period_toolset_basics=>get_first_day_prev_month( iv_date = sy-datum ).
WRITE: / lv_first_day.

* letzter Tag des vorherigen Monats
DATA(lv_last_day) = cl_bs_period_toolset_basics=>get_last_day_prev_month( iv_date = sy-datum ).
WRITE: / lv_last_day.

* letzter Tag des aktuellen Monats
DATA(lv_last_day) = cl_bs_period_toolset_basics=>get_last_day_in_month( iv_date = sy-datum ).
WRITE: / lv_last_day.

* 60 Minuten zu Zeit und Datum hinzurechnen
cl_bs_period_toolset_basics=>add_minutes_to_date( EXPORTING
                                                    iv_date    = sy-datum
                                                    iv_time    = sy-uzeit
                                                    iv_minutes = 60
                                                  IMPORTING
                                                    ev_date    = DATA(lv_date_new)
                                                    ev_time    = DATA(lv_time_new) ).

WRITE: / lv_date_new, lv_time_new.