abapGit/src/zcl_abapgit_environment.clas.abap
Srinivasu Reddy d1c5e332d4 Added client check to add the ability to run abapGit in production/QA environments (#2668)
* Added client check 

Check if repository objects are modifiable in client. If not make write_protected setting active for all repos and make this setting disabled in repo setting page.

* fix abaplint errors

fix for abaplint errors

* code changes as suggested in review

1) Remove zcl_abapgit_client_check class
2) Add is_repo_object_changes_allowed method to zcl_abapgit_environment class

* Delete zcl_abapgit_client_check class

Delete zcl_abapgit_client_check class
2019-05-15 11:32:56 -07:00

83 lines
1.9 KiB
ABAP

CLASS zcl_abapgit_environment DEFINITION
PUBLIC
CREATE PUBLIC .
PUBLIC SECTION.
CLASS-METHODS is_sap_cloud_platform
RETURNING
VALUE(rv_cloud) TYPE abap_bool.
CLASS-METHODS is_merged
RETURNING
VALUE(rv_is_merged) TYPE abap_bool.
CLASS-METHODS is_repo_object_changes_allowed
RETURNING VALUE(rv_allowed) TYPE abap_bool.
PROTECTED SECTION.
CLASS-DATA gv_cloud TYPE abap_bool VALUE abap_undefined ##NO_TEXT.
CLASS-DATA gv_is_merged TYPE abap_bool VALUE abap_undefined ##NO_TEXT.
CLASS-DATA gv_client_modifiable TYPE abap_bool VALUE abap_undefined.
PRIVATE SECTION.
ENDCLASS.
CLASS ZCL_ABAPGIT_ENVIRONMENT IMPLEMENTATION.
METHOD is_merged.
DATA lo_marker TYPE REF TO data ##NEEDED.
IF gv_is_merged = abap_undefined.
TRY.
CREATE DATA lo_marker TYPE REF TO ('LIF_ABAPMERGE_MARKER') ##no_text.
"No exception --> marker found
gv_is_merged = abap_true.
CATCH cx_sy_create_data_error.
gv_is_merged = abap_false.
ENDTRY.
ENDIF.
rv_is_merged = gv_is_merged.
ENDMETHOD.
METHOD is_repo_object_changes_allowed.
DATA lv_ind TYPE t000-ccnocliind.
IF gv_client_modifiable = abap_undefined.
SELECT SINGLE ccnocliind FROM t000 INTO lv_ind
WHERE mandt = sy-mandt.
IF sy-subrc = 0
AND ( lv_ind = ' ' OR lv_ind = '1' ). "check changes allowed
gv_client_modifiable = abap_true.
ELSE.
gv_client_modifiable = abap_false.
ENDIF.
ENDIF.
rv_allowed = gv_client_modifiable.
ENDMETHOD.
METHOD is_sap_cloud_platform.
IF gv_cloud = abap_undefined.
TRY.
CALL METHOD ('CL_COS_UTILITIES')=>('IS_SAP_CLOUD_PLATFORM')
RECEIVING
rv_is_sap_cloud_platform = gv_cloud.
CATCH cx_sy_dyn_call_illegal_method.
gv_cloud = abap_false.
ENDTRY.
ENDIF.
rv_cloud = gv_cloud.
ENDMETHOD.
ENDCLASS.