[ABAP] Datumsfeld auf Gültigkeit prüfen

Variante 1 (check_date)

TRY.
    cl_reca_date=>check_date( CONV d( '01.01.1999' ) ).

  CATCH cx_root INTO DATA(e1).
    WRITE: / e1->get_text( ).
ENDTRY.

TRY.
    cl_reca_date=>check_date( CONV d( '19990101' ) ).

  CATCH cx_root INTO DATA(e2).
    WRITE: / e2->get_text( ).
ENDTRY.

TRY.
    cl_reca_date=>check_date( CONV d( '1234' ) ).

  CATCH cx_root INTO DATA(e3).
    WRITE: / e3->get_text( ).
ENDTRY.

Variante 2 (is_date_ok)

IF abap_true = cl_reca_date=>is_date_ok( id_date = sy-datum ).
  WRITE: / 'Ok.'.
ELSE.
  WRITE: / 'Fehlerhaft.'.
ENDIF.

[ABAP] Zeit zwischen zwei Terminen

* Anzahl Tage
DATA(lv_days) = cl_reca_date=>get_days_between_two_dates( EXPORTING
                                                            id_datefrom = '20190101'
                                                            id_dateto   = '20190201' ).

WRITE: / lv_days.

* Anzahl Monate
DATA(lv_months) = cl_reca_date=>months_between_two_dates( EXPORTING
                                                            id_date_from = '20190101'
                                                            id_date_to   = '20190201' ).

WRITE: / lv_months.

* Anzahl Jahre, Monate, Tage
DATA: lv_years TYPE i.
DATA: lv_months TYPE i.
DATA: lv_days TYPE i.

cl_reca_date=>get_date_diff( EXPORTING
                               id_date_from     = '20190101'
                               id_date_to       = '20190201'
                             IMPORTING
                               ed_years         = lv_years
                               ed_months        = lv_months
                               ed_calendar_days = lv_days
                           ).

WRITE: / lv_years.
WRITE: / lv_months.
WRITE: / lv_days.