get_rfc7231_time

in src/zadf/zcl_adf_service_cosmosdb.clas.abap [0:0]


METHOD get_rfc7231_time.
  CONSTANTS : lc_com      TYPE c VALUE ',',
              lc_gmt      TYPE char3 VALUE 'GMT',
              lc_col      TYPE c VALUE ':',
              lc_utc_zone TYPE tznzone VALUE 'UTC'.
  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_tstmp_t  TYPE sy-uzeit,
         lv_datum    TYPE datum.
  FIELD-SYMBOLS <fs_date> TYPE any.
** Get current timestamp
  GET TIME STAMP FIELD lv_tstmp.
  CONVERT TIME STAMP lv_tstmp TIME ZONE lc_utc_zone INTO DATE lv_datum TIME lv_tstmp_t.
  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 RFC7231 format
  CONCATENATE lv_day_name
              lv_date(2)
              lv_date+3(3)
              lv_date+7(4)
              lv_time
              lc_gmt
           INTO rv_timestamp SEPARATED BY space.