From a4b4b9474581a18c050a4e2dddd5f26a1891a851 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sat, 30 Sep 2023 08:20:49 +0200 Subject: [PATCH 1/5] update --- ...t_abap_language_vers.clas.testclasses.abap | 33 ++++-- cloud/zcl_abapgit_sap_namespace.clas.abap | 58 ++++++++-- ...bapgit_sap_namespace.clas.testclasses.abap | 108 ++++++++++++++++++ cloud/zcl_abapgit_sap_namespace.clas.xml | 5 +- open/zcl_abapgit_sap_namespace.clas.abap | 58 ++++++++-- ...bapgit_sap_namespace.clas.testclasses.abap | 108 ++++++++++++++++++ open/zcl_abapgit_sap_namespace.clas.xml | 5 +- replace/zcl_abapgit_sap_namespace.clas.abap | 54 --------- run.sh | 3 +- 9 files changed, 344 insertions(+), 88 deletions(-) create mode 100644 cloud/zcl_abapgit_sap_namespace.clas.testclasses.abap create mode 100644 open/zcl_abapgit_sap_namespace.clas.testclasses.abap delete mode 100644 replace/zcl_abapgit_sap_namespace.clas.abap diff --git a/cloud/zcl_abapgit_abap_language_vers.clas.testclasses.abap b/cloud/zcl_abapgit_abap_language_vers.clas.testclasses.abap index 5c09a58..db83af5 100644 --- a/cloud/zcl_abapgit_abap_language_vers.clas.testclasses.abap +++ b/cloud/zcl_abapgit_abap_language_vers.clas.testclasses.abap @@ -77,11 +77,12 @@ CLASS ltcl_abap_language_version DEFINITION FOR TESTING RISK LEVEL HARMLESS CONSTANTS c_cloud_package TYPE I_CustABAPObjDirectoryEntry-ABAPPackage VALUE 'TEST_LANGUAGE_VERSION_SCP'. DATA: - mt_versions TYPE string_table, - mo_environment TYPE REF TO lcl_environment, - mi_persistency TYPE REF TO zif_abapgit_persist_settings, - mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit, - mo_cut TYPE REF TO zcl_abapgit_abap_language_vers. + mt_versions TYPE string_table, + mv_has_cloud_package TYPE abap_bool, + mo_environment TYPE REF TO lcl_environment, + mi_persistency TYPE REF TO zif_abapgit_persist_settings, + mo_dot_abapgit TYPE REF TO zcl_abapgit_dot_abapgit, + mo_cut TYPE REF TO zcl_abapgit_abap_language_vers. METHODS: setup, @@ -134,6 +135,8 @@ CLASS ltcl_abap_language_version IMPLEMENTATION. APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-standard TO mt_versions. APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-key_user TO mt_versions. APPEND zif_abapgit_dot_abapgit=>c_abap_language_version-cloud_development TO mt_versions. + + mv_has_cloud_package = zcl_abapgit_factory=>get_sap_package( c_cloud_package )->exists( ). ENDMETHOD. METHOD init. @@ -257,6 +260,10 @@ CLASS ltcl_abap_language_version IMPLEMENTATION. msg = |ABAP Language Version: { iv_version }, On-prem| ). " Assume cloud platform + IF mv_has_cloud_package = abap_false. + RETURN. + ENDIF. + set_environment( abap_true ). " source code @@ -342,9 +349,11 @@ CLASS ltcl_abap_language_version IMPLEMENTATION. act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package exp = iv_standard ). - cl_abap_unit_assert=>assert_equals( - act = mo_cut->is_import_allowed( c_cloud_package ) " existing cloud package - exp = iv_cloud ). + IF mv_has_cloud_package = abap_true. + cl_abap_unit_assert=>assert_equals( + act = mo_cut->is_import_allowed( c_cloud_package ) " existing cloud package + exp = iv_cloud ). + ENDIF. cl_abap_unit_assert=>assert_equals( act = mo_cut->is_import_allowed( 'Z_FOO_BAR' ) " non-existing package @@ -357,9 +366,11 @@ CLASS ltcl_abap_language_version IMPLEMENTATION. act = mo_cut->is_import_allowed( '$TMP' ) " existing standard package exp = iv_standard ). - cl_abap_unit_assert=>assert_equals( - act = mo_cut->is_import_allowed( c_cloud_package ) " existing cloud package - exp = iv_cloud ). + IF mv_has_cloud_package = abap_true. + cl_abap_unit_assert=>assert_equals( + act = mo_cut->is_import_allowed( c_cloud_package ) " existing cloud package + exp = iv_cloud ). + ENDIF. cl_abap_unit_assert=>assert_equals( act = mo_cut->is_import_allowed( 'Z_FOO_BAR' ) " non-existing package diff --git a/cloud/zcl_abapgit_sap_namespace.clas.abap b/cloud/zcl_abapgit_sap_namespace.clas.abap index 37d8b1d..1fcdc66 100644 --- a/cloud/zcl_abapgit_sap_namespace.clas.abap +++ b/cloud/zcl_abapgit_sap_namespace.clas.abap @@ -13,16 +13,59 @@ ENDCLASS. CLASS zcl_abapgit_sap_namespace IMPLEMENTATION. + METHOD zif_abapgit_sap_namespace~exists. - rv_yes = abap_true. + DATA lv_editflag TYPE abap_bool. + DATA lo_obj TYPE REF TO object. + DATA lo_nsp TYPE REF TO object. + FIELD-SYMBOLS TYPE any. + TRY. + SELECT SINGLE editflag FROM ('TRNSPACE') WHERE namespace = @iv_namespace INTO @lv_editflag. + rv_yes = boolc( sy-subrc = 0 ). + CATCH cx_sy_dynamic_osql_error. + ASSIGN ('XCO_CP_SYSTEM=>NAMESPACE') TO . + lo_obj = . + CALL METHOD lo_obj->('IF_XCO_CP_NAMESPACE_FACTORY~FOR') + EXPORTING + iv_value = iv_namespace + RECEIVING + ro_namespace = lo_nsp. + CALL METHOD lo_nsp->('IF_XCO_CP_NAMESPACE~EXISTS') + RECEIVING + rv_exists = rv_yes. + ENDTRY. + ENDMETHOD. + + + METHOD zif_abapgit_sap_namespace~is_editable. + DATA lv_editflag TYPE abap_bool. + DATA lo_obj TYPE REF TO object. + DATA lo_nsp TYPE REF TO object. + FIELD-SYMBOLS TYPE any. + TRY. + SELECT SINGLE editflag FROM ('TRNSPACE') WHERE namespace = @iv_namespace INTO @lv_editflag. + rv_yes = boolc( sy-subrc = 0 AND lv_editflag = 'X' ). + CATCH cx_sy_dynamic_osql_error. + ASSIGN ('XCO_CP_SYSTEM=>NAMESPACE') TO . + lo_obj = . + CALL METHOD lo_obj->('IF_XCO_CP_NAMESPACE_FACTORY~FOR') + EXPORTING + iv_value = iv_namespace + RECEIVING + ro_namespace = lo_nsp. + CALL METHOD lo_nsp->('IF_XCO_CP_NAMESPACE~IS_CHANGEABLE') + RECEIVING + rv_exists = rv_yes. + ENDTRY. ENDMETHOD. + METHOD zif_abapgit_sap_namespace~split_by_name. * use this method instead of function module RS_NAME_SPLIT_NAMESPACE - DATA lv_regex TYPE string. + DATA lv_regex TYPE string. DATA lv_object TYPE string. DATA lv_length TYPE i. - DATA lr_ex TYPE REF TO cx_root. + DATA lr_ex TYPE REF TO cx_root. lv_regex = '^\/[^\/]{1,8}\/'. @@ -43,12 +86,9 @@ CLASS zcl_abapgit_sap_namespace IMPLEMENTATION. ENDIF. IF iv_allow_slash_in_name = abap_false AND rs_obj_namespace-obj_without_namespace CA '/'. - zcx_abapgit_exception=>raise( |Object without namespace { rs_obj_namespace-obj_without_namespace } contains a '/'| ). + zcx_abapgit_exception=>raise( + |Object without namespace { rs_obj_namespace-obj_without_namespace } contains a '/'| ). ENDIF. ENDMETHOD. - METHOD zif_abapgit_sap_namespace~is_editable. - rv_yes = abap_true. - ENDMETHOD. - -ENDCLASS. \ No newline at end of file +ENDCLASS. diff --git a/cloud/zcl_abapgit_sap_namespace.clas.testclasses.abap b/cloud/zcl_abapgit_sap_namespace.clas.testclasses.abap new file mode 100644 index 0000000..a81c587 --- /dev/null +++ b/cloud/zcl_abapgit_sap_namespace.clas.testclasses.abap @@ -0,0 +1,108 @@ +CLASS ltcl_check_split_by_name DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. + PRIVATE SECTION. + METHODS check_with_namespace FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_without_namespace FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_exc_starts_with_slash FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_exc_slash_in_name_w_ns FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_exc_slash_in_name_wo_ns FOR TESTING RAISING zcx_abapgit_exception. +ENDCLASS. + +CLASS ltcl_check_split_by_name IMPLEMENTATION. + + METHOD check_with_namespace. + + DATA lv_obj_with_namespace TYPE I_CustABAPObjDirectoryEntry-ABAPObject. + DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace. + DATA lr_ex TYPE REF TO zcx_abapgit_exception. + + lv_obj_with_namespace = '/BLA12345/TEST/123'. + + TRY. + ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ). + + CATCH zcx_abapgit_exception INTO lr_ex. + cl_abap_unit_assert=>fail( lr_ex->get_text( ) ). + ENDTRY. + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-namespace + exp = '/BLA12345/' ). + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-obj_without_namespace + exp = 'TEST/123' ). + + + ENDMETHOD. + METHOD check_without_namespace. + + DATA lv_obj_with_namespace TYPE I_CustABAPObjDirectoryEntry-ABAPObject. + DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace. + DATA lr_ex TYPE REF TO zcx_abapgit_exception. + + lv_obj_with_namespace = 'ZCL_ABAPGIT_SAP_NAMESP'. + + TRY. + ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ). + CATCH zcx_abapgit_exception INTO lr_ex. + cl_abap_unit_assert=>fail( lr_ex->get_text( ) ). + ENDTRY. + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-namespace + exp = '' ). + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-obj_without_namespace + exp = 'ZCL_ABAPGIT_SAP_NAMESP' ). + + ENDMETHOD. + + METHOD check_exc_starts_with_slash. + + DATA lv_obj_with_namespace TYPE I_CustABAPObjDirectoryEntry-ABAPObject. + lv_obj_with_namespace = '/TEST12345/BLA'. + + TRY. + zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ). + + CATCH zcx_abapgit_exception. + RETURN. + ENDTRY. + + cl_abap_unit_assert=>fail( 'No Exception raised' ). + ENDMETHOD. + + METHOD check_exc_slash_in_name_w_ns. + DATA lv_obj_with_namespace TYPE I_CustABAPObjDirectoryEntry-ABAPObject. + lv_obj_with_namespace = '/TEST/TEST/TEST'. + + TRY. + zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( + iv_obj_with_namespace = lv_obj_with_namespace + iv_allow_slash_in_name = abap_false ). + + CATCH zcx_abapgit_exception. + RETURN. + ENDTRY. + + cl_abap_unit_assert=>fail( 'No Exception raised' ). + ENDMETHOD. + + METHOD check_exc_slash_in_name_wo_ns. + DATA lv_obj_with_namespace TYPE I_CustABAPObjDirectoryEntry-ABAPObject. + lv_obj_with_namespace = 'TEST/TEST'. + + TRY. + zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( + iv_obj_with_namespace = lv_obj_with_namespace + iv_allow_slash_in_name = abap_false ). + + CATCH zcx_abapgit_exception. + RETURN. + ENDTRY. + + cl_abap_unit_assert=>fail( 'No Exception raised' ). + ENDMETHOD. + +ENDCLASS. diff --git a/cloud/zcl_abapgit_sap_namespace.clas.xml b/cloud/zcl_abapgit_sap_namespace.clas.xml index edeb8ba..8a7ab48 100644 --- a/cloud/zcl_abapgit_sap_namespace.clas.xml +++ b/cloud/zcl_abapgit_sap_namespace.clas.xml @@ -1,15 +1,16 @@ - + ZCL_ABAPGIT_SAP_NAMESPACE E - abapGit + abapGit - SAP Namespace 1 X X X + X diff --git a/open/zcl_abapgit_sap_namespace.clas.abap b/open/zcl_abapgit_sap_namespace.clas.abap index 37d8b1d..5254924 100644 --- a/open/zcl_abapgit_sap_namespace.clas.abap +++ b/open/zcl_abapgit_sap_namespace.clas.abap @@ -13,16 +13,59 @@ ENDCLASS. CLASS zcl_abapgit_sap_namespace IMPLEMENTATION. + METHOD zif_abapgit_sap_namespace~exists. - rv_yes = abap_true. + DATA lv_editflag TYPE abap_bool. + DATA lo_obj TYPE REF TO object. + DATA lo_nsp TYPE REF TO object. + FIELD-SYMBOLS TYPE any. + TRY. + SELECT SINGLE editflag FROM ('TRNSPACE') INTO lv_editflag WHERE namespace = iv_namespace. + rv_yes = boolc( sy-subrc = 0 ). + CATCH cx_sy_dynamic_osql_error. + ASSIGN ('XCO_CP_SYSTEM=>NAMESPACE') TO . + lo_obj = . + CALL METHOD lo_obj->('IF_XCO_CP_NAMESPACE_FACTORY~FOR') + EXPORTING + iv_value = iv_namespace + RECEIVING + ro_namespace = lo_nsp. + CALL METHOD lo_nsp->('IF_XCO_CP_NAMESPACE~EXISTS') + RECEIVING + rv_exists = rv_yes. + ENDTRY. + ENDMETHOD. + + + METHOD zif_abapgit_sap_namespace~is_editable. + DATA lv_editflag TYPE abap_bool. + DATA lo_obj TYPE REF TO object. + DATA lo_nsp TYPE REF TO object. + FIELD-SYMBOLS TYPE any. + TRY. + SELECT SINGLE editflag FROM ('TRNSPACE') INTO lv_editflag WHERE namespace = iv_namespace. + rv_yes = boolc( sy-subrc = 0 AND lv_editflag = 'X' ). + CATCH cx_sy_dynamic_osql_error. + ASSIGN ('XCO_CP_SYSTEM=>NAMESPACE') TO . + lo_obj = . + CALL METHOD lo_obj->('IF_XCO_CP_NAMESPACE_FACTORY~FOR') + EXPORTING + iv_value = iv_namespace + RECEIVING + ro_namespace = lo_nsp. + CALL METHOD lo_nsp->('IF_XCO_CP_NAMESPACE~IS_CHANGEABLE') + RECEIVING + rv_exists = rv_yes. + ENDTRY. ENDMETHOD. + METHOD zif_abapgit_sap_namespace~split_by_name. * use this method instead of function module RS_NAME_SPLIT_NAMESPACE - DATA lv_regex TYPE string. + DATA lv_regex TYPE string. DATA lv_object TYPE string. DATA lv_length TYPE i. - DATA lr_ex TYPE REF TO cx_root. + DATA lr_ex TYPE REF TO cx_root. lv_regex = '^\/[^\/]{1,8}\/'. @@ -43,12 +86,9 @@ CLASS zcl_abapgit_sap_namespace IMPLEMENTATION. ENDIF. IF iv_allow_slash_in_name = abap_false AND rs_obj_namespace-obj_without_namespace CA '/'. - zcx_abapgit_exception=>raise( |Object without namespace { rs_obj_namespace-obj_without_namespace } contains a '/'| ). + zcx_abapgit_exception=>raise( + |Object without namespace { rs_obj_namespace-obj_without_namespace } contains a '/'| ). ENDIF. ENDMETHOD. - METHOD zif_abapgit_sap_namespace~is_editable. - rv_yes = abap_true. - ENDMETHOD. - -ENDCLASS. \ No newline at end of file +ENDCLASS. diff --git a/open/zcl_abapgit_sap_namespace.clas.testclasses.abap b/open/zcl_abapgit_sap_namespace.clas.testclasses.abap new file mode 100644 index 0000000..1c2cfe4 --- /dev/null +++ b/open/zcl_abapgit_sap_namespace.clas.testclasses.abap @@ -0,0 +1,108 @@ +CLASS ltcl_check_split_by_name DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL. + PRIVATE SECTION. + METHODS check_with_namespace FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_without_namespace FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_exc_starts_with_slash FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_exc_slash_in_name_w_ns FOR TESTING RAISING zcx_abapgit_exception. + METHODS check_exc_slash_in_name_wo_ns FOR TESTING RAISING zcx_abapgit_exception. +ENDCLASS. + +CLASS ltcl_check_split_by_name IMPLEMENTATION. + + METHOD check_with_namespace. + + DATA lv_obj_with_namespace TYPE tadir-obj_name. + DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace. + DATA lr_ex TYPE REF TO zcx_abapgit_exception. + + lv_obj_with_namespace = '/BLA12345/TEST/123'. + + TRY. + ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ). + + CATCH zcx_abapgit_exception INTO lr_ex. + cl_abap_unit_assert=>fail( lr_ex->get_text( ) ). + ENDTRY. + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-namespace + exp = '/BLA12345/' ). + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-obj_without_namespace + exp = 'TEST/123' ). + + + ENDMETHOD. + METHOD check_without_namespace. + + DATA lv_obj_with_namespace TYPE tadir-obj_name. + DATA ls_obj_with_namespace TYPE zif_abapgit_definitions=>ty_obj_namespace. + DATA lr_ex TYPE REF TO zcx_abapgit_exception. + + lv_obj_with_namespace = 'ZCL_ABAPGIT_SAP_NAMESP'. + + TRY. + ls_obj_with_namespace = zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ). + CATCH zcx_abapgit_exception INTO lr_ex. + cl_abap_unit_assert=>fail( lr_ex->get_text( ) ). + ENDTRY. + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-namespace + exp = '' ). + + cl_abap_unit_assert=>assert_equals( + act = ls_obj_with_namespace-obj_without_namespace + exp = 'ZCL_ABAPGIT_SAP_NAMESP' ). + + ENDMETHOD. + + METHOD check_exc_starts_with_slash. + + DATA lv_obj_with_namespace TYPE tadir-obj_name. + lv_obj_with_namespace = '/TEST12345/BLA'. + + TRY. + zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( lv_obj_with_namespace ). + + CATCH zcx_abapgit_exception. + RETURN. + ENDTRY. + + cl_abap_unit_assert=>fail( 'No Exception raised' ). + ENDMETHOD. + + METHOD check_exc_slash_in_name_w_ns. + DATA lv_obj_with_namespace TYPE tadir-obj_name. + lv_obj_with_namespace = '/TEST/TEST/TEST'. + + TRY. + zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( + iv_obj_with_namespace = lv_obj_with_namespace + iv_allow_slash_in_name = abap_false ). + + CATCH zcx_abapgit_exception. + RETURN. + ENDTRY. + + cl_abap_unit_assert=>fail( 'No Exception raised' ). + ENDMETHOD. + + METHOD check_exc_slash_in_name_wo_ns. + DATA lv_obj_with_namespace TYPE tadir-obj_name. + lv_obj_with_namespace = 'TEST/TEST'. + + TRY. + zcl_abapgit_factory=>get_sap_namespace( )->split_by_name( + iv_obj_with_namespace = lv_obj_with_namespace + iv_allow_slash_in_name = abap_false ). + + CATCH zcx_abapgit_exception. + RETURN. + ENDTRY. + + cl_abap_unit_assert=>fail( 'No Exception raised' ). + ENDMETHOD. + +ENDCLASS. diff --git a/open/zcl_abapgit_sap_namespace.clas.xml b/open/zcl_abapgit_sap_namespace.clas.xml index edeb8ba..8a7ab48 100644 --- a/open/zcl_abapgit_sap_namespace.clas.xml +++ b/open/zcl_abapgit_sap_namespace.clas.xml @@ -1,15 +1,16 @@ - + ZCL_ABAPGIT_SAP_NAMESPACE E - abapGit + abapGit - SAP Namespace 1 X X X + X diff --git a/replace/zcl_abapgit_sap_namespace.clas.abap b/replace/zcl_abapgit_sap_namespace.clas.abap deleted file mode 100644 index 37d8b1d..0000000 --- a/replace/zcl_abapgit_sap_namespace.clas.abap +++ /dev/null @@ -1,54 +0,0 @@ -CLASS zcl_abapgit_sap_namespace DEFINITION - PUBLIC - FINAL - CREATE PUBLIC . - - PUBLIC SECTION. - INTERFACES zif_abapgit_sap_namespace. - PROTECTED SECTION. - PRIVATE SECTION. -ENDCLASS. - - - -CLASS zcl_abapgit_sap_namespace IMPLEMENTATION. - - METHOD zif_abapgit_sap_namespace~exists. - rv_yes = abap_true. - ENDMETHOD. - - METHOD zif_abapgit_sap_namespace~split_by_name. -* use this method instead of function module RS_NAME_SPLIT_NAMESPACE - DATA lv_regex TYPE string. - DATA lv_object TYPE string. - DATA lv_length TYPE i. - DATA lr_ex TYPE REF TO cx_root. - - lv_regex = '^\/[^\/]{1,8}\/'. - - TRY. - FIND REGEX lv_regex IN iv_obj_with_namespace MATCH LENGTH lv_length. - CATCH cx_root INTO lr_ex. - zcx_abapgit_exception=>raise( lr_ex->get_text( ) ). - ENDTRY. - - IF sy-subrc = 0 AND lv_length > 1. - rs_obj_namespace-namespace = iv_obj_with_namespace(lv_length). - rs_obj_namespace-obj_without_namespace = iv_obj_with_namespace+lv_length. - ELSE. - IF iv_obj_with_namespace(1) = '/'. - zcx_abapgit_exception=>raise( |The object { iv_obj_with_namespace } has an invalid namespace| ). - ENDIF. - rs_obj_namespace-obj_without_namespace = iv_obj_with_namespace. - ENDIF. - - IF iv_allow_slash_in_name = abap_false AND rs_obj_namespace-obj_without_namespace CA '/'. - zcx_abapgit_exception=>raise( |Object without namespace { rs_obj_namespace-obj_without_namespace } contains a '/'| ). - ENDIF. - ENDMETHOD. - - METHOD zif_abapgit_sap_namespace~is_editable. - rv_yes = abap_true. - ENDMETHOD. - -ENDCLASS. \ No newline at end of file diff --git a/run.sh b/run.sh index 0971cdf..91bf730 100644 --- a/run.sh +++ b/run.sh @@ -119,6 +119,7 @@ cp abapGit/src/ui/zcl_abapgit_ui_injector* open cp abapGit/src/ui/zif_abapgit_frontend_services* open cp abapGit/src/ui/zif_abapgit_popups* open cp abapGit/src/objects/sap/zif_abapgit_* open +cp abapGit/src/objects/sap/zcl_abapgit_sap_namespace* open cp abapGit/src/objects/zcl_abapgit_objects_factory* open cp abapGit/src/utils/zcl_abapgit_log* open cp abapGit/src/utils/zcl_abapgit_news* open @@ -186,6 +187,7 @@ sed -i 's/ TYPE sci_chkv/ TYPE char30/ig' ./open/*.abap # if_satc_api_factory= sed -i 's/ TYPE trobj_name/ TYPE char120/ig' ./open/*.abap sed -i 's/ OF namespace/ OF char10/ig' ./open/*.abap sed -i 's/ TYPE trnspace-namespace/ TYPE char10/ig' ./open/*.abap +sed -i 's/ TYPE trnspace-editflag/ TYPE abap_bool/ig' ./open/*.abap sed -i 's/ TYPE trnspace/ TYPE char10/ig' ./open/*.abap sed -i 's/ TYPE ABAPTXT255_TAB/ TYPE string_table/ig' ./open/*.abap sed -i "s/ zcl_abapgit_gui_page_repo_view=>c_actions-change_dir / 'decoupled' /ig" ./open/zcl_abapgit_gui_chunk_lib.clas.abap @@ -230,7 +232,6 @@ cp replace/zcl_abapgit_http* open cp replace/zcl_abapgit_tadir.clas* open cp replace/zcl_abapgit_transport* open cp replace/zcl_abapgit_progress* open -cp replace/zcl_abapgit_sap_namespace* open #### https://github.com/abapGit/abapGit/pull/6513 cp replace/zcl_abapgit_log_viewer* open cp replace/zcl_abapgit_environment* open cp replace/zcl_abapgit_objects_activation* open From a3df382c94bda04064bab65f417525f40c603da6 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sat, 30 Sep 2023 08:27:52 +0200 Subject: [PATCH 2/5] update --- cloud/zcl_abapgit_html_action_utils.clas.abap | 48 ++++++++++++++----- cloud/zcl_abapgit_html_action_utils.clas.xml | 1 + cloud/zcl_abapgit_http_utility.clas.abap | 25 ---------- cloud/zcl_abapgit_http_utility.clas.xml | 16 ------- open/zcl_abapgit_html_action_utils.clas.abap | 48 ++++++++++++++----- open/zcl_abapgit_html_action_utils.clas.xml | 1 + open/zcl_abapgit_http_utility.clas.abap | 25 ---------- open/zcl_abapgit_http_utility.clas.xml | 16 ------- replace/zcl_abapgit_http_utility.clas.abap | 25 ---------- replace/zcl_abapgit_http_utility.clas.xml | 16 ------- run.sh | 4 +- 11 files changed, 77 insertions(+), 148 deletions(-) delete mode 100644 cloud/zcl_abapgit_http_utility.clas.abap delete mode 100644 cloud/zcl_abapgit_http_utility.clas.xml delete mode 100644 open/zcl_abapgit_http_utility.clas.abap delete mode 100644 open/zcl_abapgit_http_utility.clas.xml delete mode 100644 replace/zcl_abapgit_http_utility.clas.abap delete mode 100644 replace/zcl_abapgit_http_utility.clas.xml diff --git a/cloud/zcl_abapgit_html_action_utils.clas.abap b/cloud/zcl_abapgit_html_action_utils.clas.abap index 276ac85..55348d8 100644 --- a/cloud/zcl_abapgit_html_action_utils.clas.abap +++ b/cloud/zcl_abapgit_html_action_utils.clas.abap @@ -49,6 +49,12 @@ TYPES tihttpnvp TYPE STANDARD TABLE OF ty WITH DEFAULT KEY. !ig_field TYPE any CHANGING !ct_field TYPE tihttpnvp . + + CLASS-METHODS fields_to_string + IMPORTING + !it_fields TYPE tihttpnvp + RETURNING + VALUE(rv_string) TYPE string. ENDCLASS. @@ -82,31 +88,52 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. METHOD dbkey_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'TYPE' ig_field = is_key-type CHANGING ct_field = lt_fields ). add_field( EXPORTING iv_name = 'VALUE' ig_field = is_key-value CHANGING ct_field = lt_fields ). - rv_string = zcl_abapgit_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. METHOD dir_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'PATH' ig_field = iv_path CHANGING ct_field = lt_fields ). - rv_string = zcl_abapgit_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). + + ENDMETHOD. + + + METHOD fields_to_string. + +* There is no equivalent to cl_web_http_utility=>fields_to_string released in ABAP Cloud, +* see cl_web_http_utility + + DATA lt_tab TYPE STANDARD TABLE OF string WITH DEFAULT KEY. + DATA lv_str TYPE string. + DATA ls_field LIKE LINE OF it_fields. + + LOOP AT it_fields INTO ls_field. + ls_field-value = cl_web_http_utility=>escape_url( ls_field-value ). + lv_str = ls_field-name && '=' && ls_field-value. + APPEND lv_str TO lt_tab. + ENDLOOP. + rv_string = concat_lines_of( + table = lt_tab + sep = '&' ). ENDMETHOD. METHOD file_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'KEY' @@ -116,14 +143,14 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. add_field( EXPORTING iv_name = 'FILENAME' ig_field = ig_file CHANGING ct_field = lt_fields ). - rv_string = zcl_abapgit_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. METHOD jump_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'TYPE' @@ -136,14 +163,14 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. ig_field = iv_filename CHANGING ct_field = lt_fields ). ENDIF. - rv_string = zcl_abapgit_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. METHOD obj_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'KEY' @@ -153,8 +180,7 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. add_field( EXPORTING iv_name = 'OBJ_NAME' ig_field = ig_object CHANGING ct_field = lt_fields ). - rv_string = zcl_abapgit_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. - ENDCLASS. diff --git a/cloud/zcl_abapgit_html_action_utils.clas.xml b/cloud/zcl_abapgit_html_action_utils.clas.xml index 9e8aa84..223fd4e 100644 --- a/cloud/zcl_abapgit_html_action_utils.clas.xml +++ b/cloud/zcl_abapgit_html_action_utils.clas.xml @@ -10,6 +10,7 @@ X X X + X diff --git a/cloud/zcl_abapgit_http_utility.clas.abap b/cloud/zcl_abapgit_http_utility.clas.abap deleted file mode 100644 index 0dce5ed..0000000 --- a/cloud/zcl_abapgit_http_utility.clas.abap +++ /dev/null @@ -1,25 +0,0 @@ -CLASS zcl_abapgit_http_utility DEFINITION PUBLIC CREATE PUBLIC. - PUBLIC SECTION. - TYPES: BEGIN OF ty, - name TYPE string, - value TYPE string, - END OF ty. -* TIHTTPNVP is actually released, but the structure it refers is not - TYPES tihttpnvp TYPE STANDARD TABLE OF ty WITH DEFAULT KEY. - - CLASS-METHODS - fields_to_string - IMPORTING - it_fields TYPE tihttpnvp - RETURNING - VALUE(str) TYPE string. -ENDCLASS. - - -CLASS zcl_abapgit_http_utility IMPLEMENTATION. - - METHOD fields_to_string. - ASSERT 1 = 'todo'. - ENDMETHOD. - -ENDCLASS. diff --git a/cloud/zcl_abapgit_http_utility.clas.xml b/cloud/zcl_abapgit_http_utility.clas.xml deleted file mode 100644 index 886467a..0000000 --- a/cloud/zcl_abapgit_http_utility.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - ZCL_ABAPGIT_HTTP_UTILITY - E - abapGit - 1 - X - X - X - - - - diff --git a/open/zcl_abapgit_html_action_utils.clas.abap b/open/zcl_abapgit_html_action_utils.clas.abap index 099866c..646adf0 100644 --- a/open/zcl_abapgit_html_action_utils.clas.abap +++ b/open/zcl_abapgit_html_action_utils.clas.abap @@ -49,6 +49,12 @@ TYPES tihttpnvp TYPE STANDARD TABLE OF ty WITH DEFAULT KEY. !ig_field TYPE any CHANGING !ct_field TYPE tihttpnvp . + + CLASS-METHODS fields_to_string + IMPORTING + !it_fields TYPE tihttpnvp + RETURNING + VALUE(rv_string) TYPE string. ENDCLASS. @@ -82,31 +88,52 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. METHOD dbkey_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'TYPE' ig_field = is_key-type CHANGING ct_field = lt_fields ). add_field( EXPORTING iv_name = 'VALUE' ig_field = is_key-value CHANGING ct_field = lt_fields ). - rv_string = cl_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. METHOD dir_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'PATH' ig_field = iv_path CHANGING ct_field = lt_fields ). - rv_string = cl_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). + + ENDMETHOD. + + + METHOD fields_to_string. + +* There is no equivalent to cl_http_utility=>fields_to_string released in ABAP Cloud, +* see cl_web_http_utility + + DATA lt_tab TYPE STANDARD TABLE OF string WITH DEFAULT KEY. + DATA lv_str TYPE string. + DATA ls_field LIKE LINE OF it_fields. + + LOOP AT it_fields INTO ls_field. + ls_field-value = cl_http_utility=>escape_url( ls_field-value ). + lv_str = ls_field-name && '=' && ls_field-value. + APPEND lv_str TO lt_tab. + ENDLOOP. + rv_string = concat_lines_of( + table = lt_tab + sep = '&' ). ENDMETHOD. METHOD file_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'KEY' @@ -116,14 +143,14 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. add_field( EXPORTING iv_name = 'FILENAME' ig_field = ig_file CHANGING ct_field = lt_fields ). - rv_string = cl_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. METHOD jump_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'TYPE' @@ -136,14 +163,14 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. ig_field = iv_filename CHANGING ct_field = lt_fields ). ENDIF. - rv_string = cl_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. METHOD obj_encode. - DATA: lt_fields TYPE tihttpnvp. + DATA lt_fields TYPE tihttpnvp. add_field( EXPORTING iv_name = 'KEY' @@ -153,8 +180,7 @@ CLASS zcl_abapgit_html_action_utils IMPLEMENTATION. add_field( EXPORTING iv_name = 'OBJ_NAME' ig_field = ig_object CHANGING ct_field = lt_fields ). - rv_string = cl_http_utility=>fields_to_string( lt_fields ). + rv_string = fields_to_string( lt_fields ). ENDMETHOD. - ENDCLASS. diff --git a/open/zcl_abapgit_html_action_utils.clas.xml b/open/zcl_abapgit_html_action_utils.clas.xml index 9e8aa84..223fd4e 100644 --- a/open/zcl_abapgit_html_action_utils.clas.xml +++ b/open/zcl_abapgit_html_action_utils.clas.xml @@ -10,6 +10,7 @@ X X X + X diff --git a/open/zcl_abapgit_http_utility.clas.abap b/open/zcl_abapgit_http_utility.clas.abap deleted file mode 100644 index 0dce5ed..0000000 --- a/open/zcl_abapgit_http_utility.clas.abap +++ /dev/null @@ -1,25 +0,0 @@ -CLASS zcl_abapgit_http_utility DEFINITION PUBLIC CREATE PUBLIC. - PUBLIC SECTION. - TYPES: BEGIN OF ty, - name TYPE string, - value TYPE string, - END OF ty. -* TIHTTPNVP is actually released, but the structure it refers is not - TYPES tihttpnvp TYPE STANDARD TABLE OF ty WITH DEFAULT KEY. - - CLASS-METHODS - fields_to_string - IMPORTING - it_fields TYPE tihttpnvp - RETURNING - VALUE(str) TYPE string. -ENDCLASS. - - -CLASS zcl_abapgit_http_utility IMPLEMENTATION. - - METHOD fields_to_string. - ASSERT 1 = 'todo'. - ENDMETHOD. - -ENDCLASS. diff --git a/open/zcl_abapgit_http_utility.clas.xml b/open/zcl_abapgit_http_utility.clas.xml deleted file mode 100644 index 886467a..0000000 --- a/open/zcl_abapgit_http_utility.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - ZCL_ABAPGIT_HTTP_UTILITY - E - abapGit - 1 - X - X - X - - - - diff --git a/replace/zcl_abapgit_http_utility.clas.abap b/replace/zcl_abapgit_http_utility.clas.abap deleted file mode 100644 index 0dce5ed..0000000 --- a/replace/zcl_abapgit_http_utility.clas.abap +++ /dev/null @@ -1,25 +0,0 @@ -CLASS zcl_abapgit_http_utility DEFINITION PUBLIC CREATE PUBLIC. - PUBLIC SECTION. - TYPES: BEGIN OF ty, - name TYPE string, - value TYPE string, - END OF ty. -* TIHTTPNVP is actually released, but the structure it refers is not - TYPES tihttpnvp TYPE STANDARD TABLE OF ty WITH DEFAULT KEY. - - CLASS-METHODS - fields_to_string - IMPORTING - it_fields TYPE tihttpnvp - RETURNING - VALUE(str) TYPE string. -ENDCLASS. - - -CLASS zcl_abapgit_http_utility IMPLEMENTATION. - - METHOD fields_to_string. - ASSERT 1 = 'todo'. - ENDMETHOD. - -ENDCLASS. diff --git a/replace/zcl_abapgit_http_utility.clas.xml b/replace/zcl_abapgit_http_utility.clas.xml deleted file mode 100644 index 886467a..0000000 --- a/replace/zcl_abapgit_http_utility.clas.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - ZCL_ABAPGIT_HTTP_UTILITY - E - abapGit - 1 - X - X - X - - - - diff --git a/run.sh b/run.sh index 91bf730..2ccd257 100644 --- a/run.sh +++ b/run.sh @@ -264,8 +264,6 @@ cp abapGit/src/http/zcl_abapgit_proxy_auth* open cp abapGit/src/ui/zcl_abapgit_password_dialog* open # replace or rewrite most of the code, -# cp replace/zcl_abapgit_convert* cloud -cp replace/zcl_abapgit_http_utility* cloud cp replace/zcl_abapgit_xml_pretty* cloud rm cloud/*.w3mi.* rm cloud/zcl_abapgit_data_deserializer.clas.testclasses.abap # uses T100 db table @@ -291,7 +289,6 @@ sed -i 's/ TYPE filetable/ TYPE string/ig' ./cloud/*.abap sed -i 's/ TYPE wwwdatatab-objid/ TYPE char40/ig' ./cloud/*.abap sed -i 's/ DEFAULT if_salv_c_selection_mode=>multiple/ OPTIONAL/ig' ./cloud/*.intf.abap sed -i 's/ TYPE tdevc-dlvunit/ TYPE c LENGTH 30/ig' ./cloud/*.intf.abap -sed -i 's/ cl_http_utility=>fields_to_string/ zcl_abapgit_http_utility=>fields_to_string/ig' ./cloud/*.abap sed -i "s/GET PARAMETER ID 'DBT' FIELD lv_mode.//ig" ./cloud/*.abap sed -i "s/ TYPE REF TO cl_gui_container DEFAULT cl_gui_container=>screen0/ TYPE REF TO object OPTIONAL/ig" ./cloud/*.abap sed -i "s/ li_stream_factory->create_istream_string( iv_xml )/ li_stream_factory->create_istream_xstring( zcl_abapgit_convert=>string_to_xstring_utf8( iv_xml ) )/ig" ./cloud/*xml*.abap @@ -299,6 +296,7 @@ sed -i "s/ li_ostream = li_streamfactory->create_ostream_cstring( rv_xml )./ DAT sed -i "s/ li_istream->close( )./ /ig" ./cloud/*xml*.abap sed -i "s/ SUBMIT (sy-cprog)./ ASSERT 1 = 'non_cloud'./ig" ./cloud/zcl_abapgit_services_repo.clas.abap sed -i "s/IN UPDATE TASK//ig" ./cloud/zcl_abapgit_persistence_db.clas.abap +sed -i "s/cl_http_utility=>/cl_web_http_utility=>/ig" ./cloud/zcl_abapgit_html_action_utils.clas.abap sed -i "s/cl_http_utility=>/cl_web_http_utility=>/ig" ./cloud/zcl_abapgit_convert.clas.abap sed -i "s/cl_gui_cfw=>compute_pixel_from_metric( x_or_y = 'X'//ig" ./cloud/zcl_abapgit_html.clas.abap From a8eb374495096d75cef94946c8b987720d4908b2 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sat, 30 Sep 2023 08:30:20 +0200 Subject: [PATCH 3/5] update --- run.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/run.sh b/run.sh index 2ccd257..331add2 100644 --- a/run.sh +++ b/run.sh @@ -163,7 +163,6 @@ sed -i "s/ CREATE OBJECT ls_code_inspector-instance TYPE zcl_abapgit_code_inspec sed -i "s/ CREATE OBJECT gi_html_viewer TYPE zcl_abapgit_html_viewer_gui/ CREATE OBJECT gi_html_viewer TYPE ('DECOUPLED')/ig" ./open/zcl_abapgit_ui_factory.clas.abap sed -i "s/ zcl_abapgit_code_inspector=>validate_check_variant( lv_check_variant )./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_page_sett_locl.clas.abap sed -i "s/ zcl_abapgit_transport=>validate_transport_request( lv_transport_request )./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_page_sett_locl.clas.abap -# sed -i "s/ cl_gui_cfw=>flush( )./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_services_basis.clas.abap sed -i 's/ TYPE trobjtype/ TYPE tadir-object/ig' ./open/*.abap sed -i 's/ TYPE sobj_name/ TYPE tadir-obj_name/ig' ./open/*.abap @@ -182,7 +181,6 @@ sed -i 's/ TYPE namespace/ TYPE char10/ig' ./open/*.abap sed -i 's/ TYPE parentcl/ TYPE devclass/ig' ./open/*.abap sed -i 's/ TYPE tcode/ TYPE string/ig' ./open/zcl_abapgit_gui_page_repo_view.clas.abap sed -i 's/ TYPE scit_alvlist/ TYPE string_table/ig' ./open/*.abap -sed -i 's/ TYPE tdevc-as4user/ TYPE usnam/ig' ./open/*.abap # https://github.com/abapGit/abapGit/pull/6514 sed -i 's/ TYPE sci_chkv/ TYPE char30/ig' ./open/*.abap # if_satc_api_factory=>ty_check_variant_name sed -i 's/ TYPE trobj_name/ TYPE char120/ig' ./open/*.abap sed -i 's/ OF namespace/ OF char10/ig' ./open/*.abap From e5dd9078a1fdbbc187fcfdf8e9d69c5f040bb5a5 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sat, 30 Sep 2023 08:33:12 +0200 Subject: [PATCH 4/5] update --- run.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/run.sh b/run.sh index 331add2..4ec39b2 100644 --- a/run.sh +++ b/run.sh @@ -283,7 +283,6 @@ sed -i 's/ TYPE tadir-delflag/ TYPE abap_bool/ig' ./cloud/*.abap sed -i 's/ TYPE tadir-genflag/ TYPE abap_bool/ig' ./cloud/*.abap sed -i 's/ TYPE scompkdtln-devclass/ TYPE devclass/ig' ./cloud/zcl_abapgit_services_repo.clas.abap sed -i 's/ TYPE seoclsname/ TYPE char30/ig' ./cloud/*.abap -sed -i 's/ TYPE filetable/ TYPE string/ig' ./cloud/*.abap sed -i 's/ TYPE wwwdatatab-objid/ TYPE char40/ig' ./cloud/*.abap sed -i 's/ DEFAULT if_salv_c_selection_mode=>multiple/ OPTIONAL/ig' ./cloud/*.intf.abap sed -i 's/ TYPE tdevc-dlvunit/ TYPE c LENGTH 30/ig' ./cloud/*.intf.abap From 18bdc371e6d3b59f59a19f204873a9d3081f17b7 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Sat, 30 Sep 2023 08:33:47 +0200 Subject: [PATCH 5/5] cleanup --- run.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/run.sh b/run.sh index 4ec39b2..9cc0dc2 100644 --- a/run.sh +++ b/run.sh @@ -192,8 +192,6 @@ sed -i "s/ zcl_abapgit_gui_page_repo_view=>c_actions-change_dir / 'decoupled' /i sed -i "s/ SET LOCALE LANGUAGE lv_main_language./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_page_repo_view.clas.abap sed -i "s/ SET LOCALE LANGUAGE lv_save_sy_langu./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_page_repo_view.clas.abap sed -i "s/ READ LINE lv_line LINE VALUE INTO lv_text./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_page_run_bckg.clas.abap -#sed -i "s/ SELECT SINGLE editflag FROM trnspace INTO ls_trnspace-editflag WHERE namespace = lv_namespace./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_file_status.clas.abap -#sed -i "s/ ELSEIF ls_trnspace-editflag <> 'X'./ ELSEIF ls_trnspace <> 'X'./ig" ./open/zcl_abapgit_file_status.clas.abap sed -i "s/ rs_handled-page = zcl_abapgit_gui_page_debuginfo=>create( )./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_router.clas.abap sed -i "s/ rs_handled-page = zcl_abapgit_gui_page_sett_repo=>create( lo_repo )./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_router.clas.abap sed -i "s/ zcl_abapgit_transport_mass=>run( )./ ASSERT 1 = 'decoupled'./ig" ./open/zcl_abapgit_gui_router.clas.abap