SAP ABAP Date Formatting

SAP stores dates in YYYYMMDD (DATS type), but you can format them as DD/MM/YYYY, MM-DD-YYYY, or any other format using different methods.


1. Convert Date to Different Formats (WRITE Statement)

You can use the WRITE statement with formatting options.

DATA: lv_date TYPE sy-datum,
lv_date_txt TYPE char10.
lv_date = sy-datum. " Current date
WRITE lv_date TO lv_date_txt DD/MM/YYYY. " Format as DD/MM/YYYY
WRITE: 'Formatted Date:', lv_date_txt.

✅ Simple & effective ✅ Supports different formats like MM/DD/YYYY, YYYY-MM-DD

Other formats using WRITE

WRITE lv_date TO lv_date_txt MM/DD/YYYY. " 03/07/2025
WRITE lv_date TO lv_date_txt YYYY-MM-DD. " 2025-03-07
WRITE lv_date TO lv_date_txt DD.MM.YYYY. " 07.03.2025

2. Convert Date to String Using Function Module

If you need custom formats, use the function module CONVERT_DATE_TO_EXTERNAL.

DATA: lv_date TYPE sy-datum,
lv_formatted TYPE char10.
lv_date = sy-datum.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = lv_date
IMPORTING
date_external = lv_formatted.
WRITE: 'Formatted Date:', lv_formatted.

✅ Uses user-specific date format (based on SAP settings)


3. Using CL_ABAP_DATFM Class (Newer Approach)

For a modern approach, use the class CL_ABAP_DATFM.

DATA: lv_date TYPE sy-datum,
lv_formatted TYPE string.
lv_date = sy-datum.
lv_formatted = cl_abap_datfm=>format_date(
EXPORTING
date = lv_date
format = 'DD/MM/YYYY' " Change to needed format
).
WRITE: 'Formatted Date:', lv_formatted.

✅ Supports multiple formats ✅ Good for dynamic formatting


4. Convert String to SAP Date (YYYYMMDD)

If you have a date string like "07/03/2025" and need it in SAP format (YYYYMMDD), use CONVERT_DATE_TO_INTERNAL.

DATA: lv_date_txt TYPE char10,
lv_date TYPE sy-datum.
lv_date_txt = '07/03/2025'. " DD/MM/YYYY format
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = lv_date_txt
IMPORTING
date_internal = lv_date.
WRITE: 'SAP Date:', lv_date. " Output: 20250307

✅ Useful when importing dates from external sources


5. Display Date in User-Specific Format

SAP users can have different date formats based on their settings (e.g., US users use MM/DD/YYYY, European users use DD.MM.YYYY).

Use:

WRITE lv_date USING EDIT MASK '__/__/____'.

✅ Displays based on user preferences


Best Method to Use?

ScenarioRecommended Method
Format as DD/MM/YYYY, MM/DD/YYYY, etc.WRITE ... TO ...
Convert SAP date to user-friendly formatCONVERT_DATE_TO_EXTERNAL
Convert user input to SAP date (YYYYMMDD)CONVERT_DATE_TO_INTERNAL
Use modern approachCL_ABAP_DATFM=>FORMAT_DATE