fix for serialize view cluster inactive/not exits (#2339)

* add missing functions in plugin VCLS

* fix pretty print

* fix check usage for abaplint

* adjust detection of locks

* german type
This commit is contained in:
GoWale 2019-01-31 10:41:33 +01:00 committed by Lars Hvam
parent ad7809e4f2
commit 96edce7e96
2 changed files with 73 additions and 10 deletions

View File

@ -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.

View File

@ -12,6 +12,14 @@
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
</VSEOCLASS>
<DESCRIPTIONS>
<SEOCOMPOTX>
<CLSNAME>ZCL_ABAPGIT_OBJECT_VCLS</CLSNAME>
<CMPNAME>CHECK_LOCK</CMPNAME>
<LANGU>E</LANGU>
<DESCRIPT>check if lock entry exits</DESCRIPT>
</SEOCOMPOTX>
</DESCRIPTIONS>
</asx:values>
</asx:abap>
</abapGit>