diff --git a/src/objects/zcl_abapgit_objects_program.clas.abap b/src/objects/zcl_abapgit_objects_program.clas.abap index d4b802fbf..02c4fe12c 100644 --- a/src/objects/zcl_abapgit_objects_program.clas.abap +++ b/src/objects/zcl_abapgit_objects_program.clas.abap @@ -148,6 +148,12 @@ CLASS zcl_abapgit_objects_program DEFINITION PUBLIC INHERITING FROM zcl_abapgit_ it_spaces TYPE ty_spaces_tt RETURNING VALUE(rt_flow) TYPE swydyflow. + CLASS-METHODS auto_correct_cua_adm + IMPORTING + is_cua TYPE zcl_abapgit_objects_program=>ty_cua + CHANGING + cs_adm TYPE rsmpe_adm. + ENDCLASS. @@ -765,7 +771,8 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION. METHOD deserialize_cua. - DATA: ls_tr_key TYPE trkey. + DATA: ls_tr_key TYPE trkey, + ls_adm TYPE rsmpe_adm. IF lines( is_cua-sta ) = 0 @@ -796,13 +803,17 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION. ls_tr_key-sub_type = 'CUAD'. ls_tr_key-sub_name = iv_program_name. + + ls_adm = is_cua-adm. + auto_correct_cua_adm( EXPORTING is_cua = is_cua CHANGING cs_adm = ls_adm ). + sy-tcode = 'SE41' ##write_ok. " evil hack, workaround to handle fixes in note 2159455 CALL FUNCTION 'RS_CUA_INTERNAL_WRITE' EXPORTING program = iv_program_name language = mv_language tr_key = ls_tr_key - adm = is_cua-adm + adm = ls_adm state = 'I' TABLES sta = is_cua-sta @@ -906,4 +917,36 @@ CLASS zcl_abapgit_objects_program IMPLEMENTATION. ENDMETHOD. + + METHOD auto_correct_cua_adm. + " issue #1807 automatic correction of CUA interfaces saved incorrectly in the past (ADM was not saved in the XML) + FIELD-SYMBOLS: + TYPE rsmpe_pfk, + TYPE rsmpe_act, + TYPE rsmpe_men. + + IF cs_adm IS NOT INITIAL. + RETURN. + ENDIF. + + LOOP AT is_cua-act ASSIGNING . + IF -code+6(14) IS INITIAL AND -code(6) CO '0123456789'. + cs_adm-actcode = -code. + ENDIF. + ENDLOOP. + + LOOP AT is_cua-men ASSIGNING . + IF -code+6(14) IS INITIAL AND -code(6) CO '0123456789'. + cs_adm-mencode = -code. + ENDIF. + ENDLOOP. + + LOOP AT is_cua-pfk ASSIGNING . + IF -code+6(14) IS INITIAL AND -code(6) CO '0123456789'. + cs_adm-pfkcode = -code. + ENDIF. + ENDLOOP. + + ENDMETHOD. + ENDCLASS.