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.
1. Using CONVERT DATE
(Recommended for Standard Formats)
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)
- Works only for YYYYMMDD format.
- ABAP automatically formats the output.
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
- This function handles various date formats automatically.
- Works for user-defined formats like
DD/MM/YYYY
,MM-DD-YYYY
, etc.
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.2025ELSE. WRITE: 'Invalid date format'.ENDIF.
- Converts various external formats (
DD/MM/YYYY
,MM-DD-YYYY
, etc.). - Ensures date validation.
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 dateENDIF.
WRITE: lv_date. " Output: 02.03.2025
- Uses regular expressions (
REGEX
) to extract a date. - Works when the date is part of a larger text.
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.
- Ensures the date is valid before conversion.
🚀 Summary: Best Methods to Convert String to Date
Method | Use Case |
---|---|
lv_date = lv_string | Works only for YYYYMMDD format |
CONVERT_DATE_INPUT | Handles user-defined formats |
DATE_CONVERT_TO_INTERNAL | Converts DD/MM/YYYY, MM-DD-YYYY, etc. |
REGEX (FIND FIRST OCCURRENCE ) | Extracts date from a longer string |
DATE_CHECK_PLAUSIBILITY | Checks if the date is valid |