namespace class: ABAP Cloud compatibility (#6513)

This commit is contained in:
Lars Hvam 2023-09-29 18:29:52 +02:00 committed by GitHub
parent 02dfc77129
commit cc4ac1142d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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 <lg_obj> 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 <lg_obj>.
lo_obj = <lg_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 <lg_obj> 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 <lg_obj>.
lo_obj = <lg_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.