Converting String to Date in SAP ABAP

In SAP ABAP, converting a string (STRING or CHAR) to a date (DATS) requires parsing and formatting, as ABAP does not automatically recognize string-based dates.


If the string is in YYYYMMDD format, you can directly convert it:

DATA: lv_string TYPE string VALUE '20250302', " YYYYMMDD format
lv_date TYPE d.
lv_date = lv_string.
WRITE: lv_date. " Output: 02.03.2025 (formatted automatically)

2. Using CONVERT DATE for Different Formats

If the date format is not YYYYMMDD, use CONVERT DATE:

DATA: lv_string TYPE string VALUE '02.03.2025', " DD.MM.YYYY format
lv_date TYPE d.
CALL FUNCTION 'CONVERT_DATE_INPUT'
EXPORTING
input = lv_string
IMPORTING
output = lv_date.
WRITE: lv_date. " Output: 02.03.2025

3. Using DATE_CONVERT_TO_INTERNAL (Flexible Formatting)

For different input formats like DD/MM/YYYY, use DATE_CONVERT_TO_INTERNAL:

DATA: lv_string TYPE string VALUE '02/03/2025',
lv_date TYPE d,
lv_result TYPE sy-subrc.
CALL FUNCTION 'DATE_CONVERT_TO_INTERNAL'
EXPORTING
date_external = lv_string
IMPORTING
date_internal = lv_date
EXCEPTIONS
OTHERS = 1.
IF lv_result = 0.
WRITE: lv_date. " Output: 02.03.2025
ELSE.
WRITE: 'Invalid date format'.
ENDIF.

4. Using SCAN to Extract Date from a String

If a date is embedded in a larger string, extract it first:

DATA: lv_text TYPE string VALUE 'Order date: 02/03/2025',
lv_date TYPE d.
FIND FIRST OCCURRENCE OF REGEX '\d{2}/\d{2}/\d{4}' IN lv_text MATCH OFFSET DATA(lv_offset) MATCH LENGTH DATA(lv_length).
IF sy-subrc = 0.
lv_date = lv_text+lv_offset(lv_length). " Extract and assign date
ENDIF.
WRITE: lv_date. " Output: 02.03.2025

5. Handling Invalid Dates

Always validate before conversion:

DATA: lv_string TYPE string VALUE '32/03/2025', " Invalid day
lv_date TYPE d.
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
EXPORTING
date = lv_string
IMPORTING
plausibility = sy-subrc.
IF sy-subrc = 0.
WRITE: 'Valid Date'.
ELSE.
WRITE: 'Invalid Date!'.
ENDIF.

🚀 Summary: Best Methods to Convert String to Date

MethodUse Case
lv_date = lv_stringWorks only for YYYYMMDD format
CONVERT_DATE_INPUTHandles user-defined formats
DATE_CONVERT_TO_INTERNALConverts DD/MM/YYYY, MM-DD-YYYY, etc.
REGEX (FIND FIRST OCCURRENCE)Extracts date from a longer string
DATE_CHECK_PLAUSIBILITYChecks if the date is valid