From 96edce7e964244f980f581a58d387f74c53d9bc1 Mon Sep 17 00:00:00 2001 From: GoWale Date: Thu, 31 Jan 2019 10:41:33 +0100 Subject: [PATCH] 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 --- src/objects/zcl_abapgit_object_vcls.clas.abap | 75 ++++++++++++++++--- src/objects/zcl_abapgit_object_vcls.clas.xml | 8 ++ 2 files changed, 73 insertions(+), 10 deletions(-) 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 + +