diff --git a/src/objects/zcl_abapgit_object_vcls.clas.abap b/src/objects/zcl_abapgit_object_vcls.clas.abap
index 667c5c47a..bedbe4e17 100644
--- a/src/objects/zcl_abapgit_object_vcls.clas.abap
+++ b/src/objects/zcl_abapgit_object_vcls.clas.abap
@@ -5,10 +5,19 @@ CLASS zcl_abapgit_object_vcls DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
PROTECTED SECTION.
PRIVATE SECTION.
-* See include MTOBJCON:
- CONSTANTS: c_cluster_type TYPE c VALUE 'C'.
- CONSTANTS: c_mode_insert TYPE obj_para-maint_mode VALUE 'I'.
+* See include MTOBJCON:
+ CONSTANTS c_cluster_type TYPE c VALUE 'C' ##NO_TEXT.
+ CONSTANTS c_mode_insert TYPE obj_para-maint_mode VALUE 'I' ##NO_TEXT.
+
+ METHODS check_lock
+ IMPORTING
+ !iv_tabname TYPE tabname
+ !iv_argument TYPE seqg3-garg
+ RETURNING
+ VALUE(rv_is_locked) TYPE abap_bool
+ RAISING
+ zcx_abapgit_exception .
ENDCLASS.
@@ -16,6 +25,26 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_VCLS IMPLEMENTATION.
+ METHOD check_lock.
+
+ DATA:
+ ls_rstable_key TYPE rstable, " Lock argument for table RSTABLE
+ lv_argument TYPE eqegraarg.
+
+ " Set Values for generic table lock
+ ls_rstable_key-tabname = iv_tabname.
+ ls_rstable_key-varkey = iv_argument.
+
+ " include all sub keys
+ lv_argument = ls_rstable_key.
+ lv_argument = lv_argument && '*'.
+
+ rv_is_locked = exists_a_lock_entry_for( iv_lock_object = 'E_TABLEE'
+ iv_argument = lv_argument ).
+
+ ENDMETHOD.
+
+
METHOD zif_abapgit_object~changed_by.
rv_user = c_user_unknown. " todo
ENDMETHOD.
@@ -121,11 +150,6 @@ CLASS ZCL_ABAPGIT_OBJECT_VCLS IMPLEMENTATION.
rv_bool = boolc( sy-subrc = 0 ).
- IF lv_changedate IS INITIAL.
-* same logic as in function module VIEWCLUSTER_GET_DEFINITION
- rv_bool = abap_false.
- ENDIF.
-
ENDMETHOD.
@@ -141,13 +165,44 @@ CLASS ZCL_ABAPGIT_OBJECT_VCLS IMPLEMENTATION.
METHOD zif_abapgit_object~is_active.
- rv_active = is_active( ).
+
+ DATA lv_changedate TYPE vcldir-changedate.
+
+ SELECT SINGLE changedate INTO lv_changedate FROM vcldir
+ WHERE vclname = ms_item-obj_name.
+
+ IF lv_changedate IS NOT INITIAL.
+* see logic in function module VIEWCLUSTER_GET_DEFINITION
+ rv_active = abap_true.
+ ELSE.
+ rv_active = abap_false.
+ ENDIF.
+
ENDMETHOD.
METHOD zif_abapgit_object~is_locked.
- rv_is_locked = abap_false.
+ DATA:
+ ls_vcldir TYPE vcldir,
+ ls_vcldirt TYPE vcldirt,
+
+ lv_argument TYPE seqg3-garg,
+ lv_argument_langu TYPE seqg3-garg.
+
+ lv_argument = me->ms_item-obj_name.
+ lv_argument_langu = |@{ me->ms_item-obj_name }|.
+
+ "Check all relevant maintein tabeles for view clusters
+ IF check_lock( iv_tabname = 'VCLDIR' iv_argument = lv_argument ) = abap_true
+ OR check_lock( iv_tabname = 'VCLDIRT' iv_argument = lv_argument_langu ) = abap_true
+ OR check_lock( iv_tabname = 'VCLSTRUC' iv_argument = lv_argument ) = abap_true
+ OR check_lock( iv_tabname = 'VCLSTRUCT' iv_argument = lv_argument_langu ) = abap_true
+ OR check_lock( iv_tabname = 'VCLSTRUC' iv_argument = lv_argument ) = abap_true
+ OR check_lock( iv_tabname = 'VCLMF' iv_argument = lv_argument ) = abap_true.
+
+ rv_is_locked = abap_true.
+ ENDIF.
ENDMETHOD.
diff --git a/src/objects/zcl_abapgit_object_vcls.clas.xml b/src/objects/zcl_abapgit_object_vcls.clas.xml
index 7dc7faba7..bba6cd2e2 100644
--- a/src/objects/zcl_abapgit_object_vcls.clas.xml
+++ b/src/objects/zcl_abapgit_object_vcls.clas.xml
@@ -12,6 +12,14 @@
X
X
+
+
+ ZCL_ABAPGIT_OBJECT_VCLS
+ CHECK_LOCK
+ E
+ check if lock entry exits
+
+