diff --git a/src/objects/sap/zcl_abapgit_sap_namespace.clas.abap b/src/objects/sap/zcl_abapgit_sap_namespace.clas.abap index 00a987ba6..ffb81f3a9 100644 --- a/src/objects/sap/zcl_abapgit_sap_namespace.clas.abap +++ b/src/objects/sap/zcl_abapgit_sap_namespace.clas.abap @@ -16,26 +16,58 @@ CLASS zcl_abapgit_sap_namespace IMPLEMENTATION. METHOD zif_abapgit_sap_namespace~exists. DATA lv_editflag TYPE trnspace-editflag. - SELECT SINGLE editflag FROM trnspace INTO lv_editflag WHERE namespace = iv_namespace. - rv_yes = boolc( sy-subrc = 0 ). + 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 trnspace-editflag. - SELECT SINGLE editflag FROM trnspace INTO lv_editflag WHERE namespace = iv_namespace. - rv_yes = boolc( sy-subrc = 0 AND lv_editflag = 'X' ). + 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}\/'. + lv_regex = '^\/[^\/]{1,8}\/'. TRY. FIND REGEX lv_regex IN iv_obj_with_namespace MATCH LENGTH lv_length.