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.
This commit is contained in:
Marc Bernard 2021-02-18 00:29:42 -05:00 committed by GitHub
parent 5d1aaa4eba
commit eea7f2527a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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