Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added client check to add the ability to run abapGit in production/QA environments #2668

Merged
merged 4 commits into from
May 15, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/persist/zcl_abapgit_persistence_repo.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,10 @@ CLASS ZCL_ABAPGIT_PERSISTENCE_REPO IMPLEMENTATION.

LOOP AT lt_content INTO ls_content.
MOVE-CORRESPONDING from_xml( ls_content-data_str ) TO ls_repo.
IF ls_repo-local_settings-write_protected = abap_false AND
zcl_abapgit_environment=>is_repo_object_changes_allowed( ) = abap_false.
ls_repo-local_settings-write_protected = abap_true.
ENDIF.
ls_repo-key = ls_content-value.
INSERT ls_repo INTO TABLE rt_repos.
ENDLOOP.
Expand Down
6 changes: 5 additions & 1 deletion src/ui/zcl_abapgit_gui_page_repo_sett.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,11 @@ CLASS ZCL_ABAPGIT_GUI_PAGE_REPO_SETT IMPLEMENTATION.

CLEAR lv_checked.
IF ls_settings-write_protected = abap_true.
lv_checked = | checked|.
IF zcl_abapgit_environment=>is_repo_object_changes_allowed( ) = abap_true.
lv_checked = | checked|.
ELSE.
lv_checked = | checked disabled|.
ENDIF.
ENDIF.
io_html->add( |Write protected <input name="write_protected" type="checkbox"{ lv_checked }><br>| ).

Expand Down
10 changes: 0 additions & 10 deletions src/zabapgit_forms.prog.abap
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,6 @@ FORM run.
DATA: lx_exception TYPE REF TO zcx_abapgit_exception,
lv_ind TYPE t000-ccnocliind.


SELECT SINGLE ccnocliind FROM t000 INTO lv_ind
WHERE mandt = sy-mandt.
IF sy-subrc = 0
AND lv_ind <> ' '
AND lv_ind <> '1'. " check changes allowed
WRITE: / 'Wrong client, changes to repository objects not allowed'. "#EC NOTEXT
RETURN.
ENDIF.

TRY.
zcl_abapgit_migrations=>run( ).
PERFORM open_gui.
Expand Down
60 changes: 40 additions & 20 deletions src/zcl_abapgit_environment.clas.abap
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,25 @@ CLASS zcl_abapgit_environment DEFINITION

CLASS-METHODS is_sap_cloud_platform
RETURNING
VALUE(rv_cloud) TYPE abap_bool .
VALUE(rv_cloud) TYPE abap_bool.

CLASS-METHODS is_merged
RETURNING
VALUE(rv_is_merged) TYPE abap_bool .
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_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.
CLASS ZCL_ABAPGIT_ENVIRONMENT IMPLEMENTATION.


METHOD is_merged.
Expand All @@ -59,4 +46,37 @@ CLASS zcl_abapgit_environment IMPLEMENTATION.

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.