in src/zgoog_cl_content_repo_gcs.clas.abap [0:0]
METHOD url_hex_decode.
DATA lv_pos TYPE i.
DATA lv_len TYPE i.
DATA lv_c TYPE c LENGTH 1.
DATA lv_rest TYPE i.
DATA lv_x TYPE x LENGTH 1.
IF NOT iv_value CA '%'.
rv_result = iv_value.
EXIT.
ENDIF.
lv_pos = 0.
lv_len = strlen( iv_value ).
CLEAR rv_result.
WHILE lv_pos < lv_len.
lv_c = iv_value+lv_pos(1).
IF lv_c = '%'.
lv_pos = lv_pos + 1.
lv_rest = lv_len - lv_pos.
IF lv_rest < 2.
gs_error-status_code = '400'.
EXIT.
ENDIF.
lv_x = iv_value+lv_pos(2).
lv_pos = lv_pos + 2.
CALL FUNCTION 'SCMS_BIN_TO_TEXT'
EXPORTING
bin_line = lv_x
IMPORTING
text_line = lv_c
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
gs_error-status_code = 500.
ENDIF.
ELSE.
lv_pos = lv_pos + 1.
ENDIF.
IF lv_c IS INITIAL.
CONCATENATE rv_result gv_sp INTO rv_result.
ELSE.
CONCATENATE rv_result lv_c INTO rv_result.
ENDIF.
ENDWHILE.