diff --git a/src/persist/zcl_abapgit_persistence_repo.clas.abap b/src/persist/zcl_abapgit_persistence_repo.clas.abap
index 18a64b041..a524dc98d 100644
--- a/src/persist/zcl_abapgit_persistence_repo.clas.abap
+++ b/src/persist/zcl_abapgit_persistence_repo.clas.abap
@@ -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.
diff --git a/src/ui/zcl_abapgit_gui_page_repo_sett.clas.abap b/src/ui/zcl_abapgit_gui_page_repo_sett.clas.abap
index 551ee6780..a69df90a5 100644
--- a/src/ui/zcl_abapgit_gui_page_repo_sett.clas.abap
+++ b/src/ui/zcl_abapgit_gui_page_repo_sett.clas.abap
@@ -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
| ).
diff --git a/src/zabapgit_forms.prog.abap b/src/zabapgit_forms.prog.abap
index 7564c52e9..ddc865295 100644
--- a/src/zabapgit_forms.prog.abap
+++ b/src/zabapgit_forms.prog.abap
@@ -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.
diff --git a/src/zcl_abapgit_environment.clas.abap b/src/zcl_abapgit_environment.clas.abap
index 97c85d3b3..fc5bd8a55 100644
--- a/src/zcl_abapgit_environment.clas.abap
+++ b/src/zcl_abapgit_environment.clas.abap
@@ -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.
@@ -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.