Back to Shorts

How to convert a date (DATS) to a timestamp (TIMESTAMP) in ABAP?

Use the CONVERT DATE ... INTO TIME STAMP statement. Time zone is required.

DATA ld_date TYPE d VALUE '20240315'.
DATA ld_time TYPE t VALUE '093000'.
DATA ld_ts   TYPE timestamp.

CONVERT DATE ld_date
        TIME ld_time
        INTO TIME STAMP ld_ts
        TIME ZONE 'UTC'.

" ld_ts = 20240315093000

TIME is optional — if omitted, defaults to '000000' (midnight).

Check sy-subrc after the statement:

sy-subrcMeaning
0Success
4TIME ZONE was initial — silently fell back to UTC
8Unknown time zone key
12Invalid date or time value

Reverse — timestamp back to date and time:

DATA ld_date_out TYPE d.
DATA ld_time_out TYPE t.

CONVERT TIME STAMP ld_ts
        TIME ZONE 'UTC'
        INTO DATE ld_date_out
             TIME ld_time_out.

Initial date '00000000' is not valid — CONVERT DATE returns sy-subrc = 12. Always check the date is populated before converting.