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/YYYYWRITE: '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/2025WRITE lv_date TO lv_date_txt YYYY-MM-DD. " 2025-03-07WRITE 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?
Scenario | Recommended Method |
---|---|
Format as DD/MM/YYYY , MM/DD/YYYY , etc. | WRITE ... TO ... |
Convert SAP date to user-friendly format | CONVERT_DATE_TO_EXTERNAL |
Convert user input to SAP date (YYYYMMDD ) | CONVERT_DATE_TO_INTERNAL |
Use modern approach | CL_ABAP_DATFM=>FORMAT_DATE |