Variante 1 (cl_reca_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 (cl_reca_date)
IF abap_true = cl_reca_date=>is_date_ok( id_date = sy-datum ).
WRITE: / 'Ok.'.
ELSE.
WRITE: / 'Fehlerhaft.'.
ENDIF.
Variante 3 (cl_rs_time_service)
IF abap_true = cl_rs_time_service=>is_valid_date( '20250131' ).
WRITE: / 'Datum ok.'.
ELSE.
WRITE: / 'Datum fehlerhaft.'.
ENDIF.