in src/zadf/zcl_adf_service_oms_la.clas.abap [0:0]
METHOD get_rfc1123_time.
CONSTANTS : lc_com TYPE c VALUE ',',
lc_gmt TYPE char3 VALUE 'GMT',
lc_col TYPE c VALUE ':'.
DATA : lv_day_name TYPE char4,
lv_date TYPE char12,
lv_day TYPE sc_day_txt,
lv_time TYPE string,
lv_tstmp TYPE timestamp,
lv_tstmp_s TYPE string,
lv_datum TYPE datum.
FIELD-SYMBOLS <fs_date> TYPE any.
** Get current GMT timestamp
GET TIME STAMP FIELD lv_tstmp.
lv_tstmp_s = lv_tstmp.
lv_datum = lv_tstmp_s(8).
** Convert date format
CALL FUNCTION 'CONVERSION_EXIT_SDATE_OUTPUT'
EXPORTING
input = lv_datum
IMPORTING
output = lv_date.
** get the day of the month
CALL FUNCTION 'DATE_COMPUTE_DAY_ENHANCED'
EXPORTING
date = lv_datum
IMPORTING
weekday = lv_day.
** get time separated by :
CONCATENATE lv_tstmp_s+8(2) lv_tstmp_s+10(2) lv_tstmp_s+12(2) INTO lv_time SEPARATED BY lc_col.
** Capitalise the first letter of month and day
ASSIGN lv_day(1) TO <fs_date>.
IF <fs_date> IS ASSIGNED.
TRANSLATE <fs_date> TO UPPER CASE.
UNASSIGN <fs_date>.
ENDIF.
ASSIGN lv_date(1) TO <fs_date>.
IF <fs_date> IS ASSIGNED.
TRANSLATE <fs_date> TO UPPER CASE.
UNASSIGN <fs_date>.
ENDIF.
ASSIGN lv_date+1(2) TO <fs_date>.
IF <fs_date> IS ASSIGNED.
TRANSLATE <fs_date> TO LOWER CASE.
UNASSIGN <fs_date>.
ENDIF.
ASSIGN lv_day+1(2) TO <fs_date>.
IF <fs_date> IS ASSIGNED.
TRANSLATE <fs_date> TO LOWER CASE.
UNASSIGN <fs_date>.
ENDIF.
** Add ',' to day
CONCATENATE lv_day(3) lc_com INTO lv_day_name.
CONDENSE lv_day_name.
** make timestamp in RFC1123
CONCATENATE lv_day_name
lv_date+4(2)
lv_date(3)
lv_date+7(4)
lv_time
lc_gmt
INTO ev_timestamp SEPARATED BY space.