diff --git a/src/ui/zcl_abapgit_html_action_utils.clas.abap b/src/ui/zcl_abapgit_html_action_utils.clas.abap index a8f0c9b5f..abb3cc344 100644 --- a/src/ui/zcl_abapgit_html_action_utils.clas.abap +++ b/src/ui/zcl_abapgit_html_action_utils.clas.abap @@ -16,10 +16,11 @@ CLASS zcl_abapgit_html_action_utils DEFINITION VALUE(rt_fields) TYPE tihttpnvp . CLASS-METHODS get_field IMPORTING - !iv_name TYPE string - !it_field TYPE tihttpnvp + !iv_name TYPE string + !it_field TYPE tihttpnvp + !iv_decode TYPE abap_bool DEFAULT abap_false CHANGING - !cg_field TYPE any . + !cg_field TYPE any . CLASS-METHODS jump_encode IMPORTING !iv_obj_type TYPE tadir-object @@ -49,13 +50,13 @@ CLASS zcl_abapgit_html_action_utils DEFINITION CLASS-METHODS file_encode IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !ig_file TYPE any "assuming ty_file + !ig_file TYPE any RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS obj_encode IMPORTING !iv_key TYPE zif_abapgit_persistence=>ty_repo-key - !ig_object TYPE any "assuming ty_item + !ig_object TYPE any RETURNING VALUE(rv_string) TYPE string . CLASS-METHODS file_obj_decode @@ -63,8 +64,8 @@ CLASS zcl_abapgit_html_action_utils DEFINITION !iv_string TYPE clike EXPORTING !ev_key TYPE zif_abapgit_persistence=>ty_repo-key - !eg_file TYPE any "assuming ty_file - !eg_object TYPE any "assuming ty_item + !eg_file TYPE any "assuming ty_file + !eg_object TYPE any "assuming ty_item RAISING zcx_abapgit_exception . CLASS-METHODS dbkey_encode @@ -219,7 +220,8 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION. IF eg_object IS SUPPLIED. get_field( EXPORTING iv_name = 'OBJ_TYPE' it_field = lt_fields CHANGING cg_field = eg_object ). - get_field( EXPORTING iv_name = 'OBJ_NAME' it_field = lt_fields CHANGING cg_field = eg_object ). + get_field( EXPORTING iv_name = 'OBJ_NAME' it_field = lt_fields iv_decode = abap_true + CHANGING cg_field = eg_object ). ENDIF. ENDMETHOD. @@ -227,6 +229,8 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION. METHOD get_field. + DATA: lv_value TYPE string. + FIELD-SYMBOLS: LIKE LINE OF it_field, TYPE any. @@ -236,13 +240,20 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION. RETURN. ENDIF. + lv_value = -value. + + IF iv_decode = abap_true. +* URL decode, not sure why some are decoded automatically + REPLACE ALL OCCURRENCES OF '%3d' IN lv_value WITH '='. + ENDIF. + CASE cl_abap_typedescr=>describe_by_data( cg_field )->kind. WHEN cl_abap_typedescr=>kind_elem. - cg_field = -value. + cg_field = lv_value. WHEN cl_abap_typedescr=>kind_struct. ASSIGN COMPONENT iv_name OF STRUCTURE cg_field TO . ASSERT IS ASSIGNED. - = -value. + = lv_value. WHEN OTHERS. ASSERT 0 = 1. ENDCASE.