in src/zgoog_cl_content_repo_gcs.clas.abap [0:0]
METHOD url_hex_decode_x.
DATA lo_convout TYPE REF TO cl_abap_conv_out_ce.
DATA: lv_buffer TYPE string,
lv_hex TYPE c LENGTH 2,
lv_x TYPE x,
lv_c TYPE c.
CLEAR rv_out.
lv_buffer = iv_in.
lo_convout = cl_abap_conv_out_ce=>create( encoding = '1100' ).
WHILE lv_buffer IS NOT INITIAL.
IF lv_buffer(1) = '%'.
SHIFT lv_buffer LEFT BY 1 PLACES.
lv_hex = lv_buffer.
IF lv_hex CO '0123456789abcdefABCDEF'.
lv_x = lv_hex.
CONCATENATE rv_out lv_x INTO rv_out IN BYTE MODE.
ENDIF.
SHIFT lv_buffer LEFT BY 2 PLACES.
ELSE.
lv_c = lv_buffer(1).
lo_convout->write( data = lv_c ).
lv_x = lo_convout->get_buffer( ).
lo_convout->reset( ).
CONCATENATE rv_out lv_x INTO rv_out IN BYTE MODE.
SHIFT lv_buffer LEFT BY 1 PLACES.
ENDIF.
ENDWHILE.