From eea7f2527a9a1568559a7a1d3f9c384e62095916 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Thu, 18 Feb 2021 00:29:42 -0500 Subject: [PATCH] PARA: Unlock in case of errors (#4526) If a PARA object cannot be deleted, it remains locked. The change unlocks the object in this case. --- src/objects/zcl_abapgit_object_para.clas.abap | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/objects/zcl_abapgit_object_para.clas.abap b/src/objects/zcl_abapgit_object_para.clas.abap index eb99ccfc6..9320c28ae 100644 --- a/src/objects/zcl_abapgit_object_para.clas.abap +++ b/src/objects/zcl_abapgit_object_para.clas.abap @@ -6,6 +6,10 @@ CLASS zcl_abapgit_object_para DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje PROTECTED SECTION. PRIVATE SECTION. + + METHODS unlock + IMPORTING + !iv_paramid TYPE memoryid . ENDCLASS. @@ -13,6 +17,17 @@ ENDCLASS. CLASS zcl_abapgit_object_para IMPLEMENTATION. + METHOD unlock. + + CALL FUNCTION 'RS_ACCESS_PERMISSION' + EXPORTING + mode = 'FREE' + object = iv_paramid + object_class = 'PARA'. + + ENDMETHOD. + + METHOD zif_abapgit_object~changed_by. * looks like "changed by user" is not stored in the database rv_user = c_user_unknown. @@ -54,12 +69,14 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION. SELECT COUNT(*) FROM cross WHERE ( type = 'P' OR type = 'Q' ) AND name = lv_paramid. IF sy-subrc = 0. + unlock( lv_paramid ). zcx_abapgit_exception=>raise( 'PARA: Parameter is still used' ). ELSE. SELECT COUNT(*) FROM dd04l BYPASSING BUFFER WHERE memoryid = lv_paramid AND as4local = 'A'. IF sy-subrc = 0. + unlock( lv_paramid ). zcx_abapgit_exception=>raise( 'PARA: Parameter is still used' ). ENDIF. ENDIF. @@ -89,14 +106,11 @@ CLASS zcl_abapgit_object_para IMPLEMENTATION. type = 'CR'. ENDIF. ELSE. + unlock( lv_paramid ). zcx_abapgit_exception=>raise_t100( ). ENDIF. - CALL FUNCTION 'RS_ACCESS_PERMISSION' - EXPORTING - mode = 'FREE' - object = lv_paramid - object_class = 'PARA'. + unlock( lv_paramid ). ENDMETHOD.