decode object name #2504 (#2507)

* decode object name #2504

* fix

* fix
This commit is contained in:
Lars Hvam 2019-03-14 00:21:02 -07:00 committed by GitHub
parent 22fbd9cdfe
commit 13213e2f2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -18,6 +18,7 @@ CLASS zcl_abapgit_html_action_utils DEFINITION
IMPORTING
!iv_name TYPE string
!it_field TYPE tihttpnvp
!iv_decode TYPE abap_bool DEFAULT abap_false
CHANGING
!cg_field TYPE any .
CLASS-METHODS jump_encode
@ -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
@ -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: <ls_field> LIKE LINE OF it_field,
<lg_dest> TYPE any.
@ -236,13 +240,20 @@ CLASS ZCL_ABAPGIT_HTML_ACTION_UTILS IMPLEMENTATION.
RETURN.
ENDIF.
lv_value = <ls_field>-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 = <ls_field>-value.
cg_field = lv_value.
WHEN cl_abap_typedescr=>kind_struct.
ASSIGN COMPONENT iv_name OF STRUCTURE cg_field TO <lg_dest>.
ASSERT <lg_dest> IS ASSIGNED.
<lg_dest> = <ls_field>-value.
<lg_dest> = lv_value.
WHEN OTHERS.
ASSERT 0 = 1.
ENDCASE.