SOTR: Fix uninstall (#5558)

After all OTR usage has been removed, uninstall will now also delete the TADIR entry for SOTR. This is necessary in order to delete the corresponding package.
This commit is contained in:
Marc Bernard 2022-06-04 13:41:50 +02:00 committed by GitHub
parent 0ab3ee0a06
commit 2415a5c0c0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -186,6 +186,7 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION.
METHOD delete_sotr_package.
DATA lt_sotr_head TYPE STANDARD TABLE OF sotr_head WITH DEFAULT KEY.
DATA lv_obj_name TYPE tadir-obj_name.
FIELD-SYMBOLS <ls_sotr_head> LIKE LINE OF lt_sotr_head.
@ -211,6 +212,43 @@ CLASS zcl_abapgit_sotr_handler IMPLEMENTATION.
ENDLOOP.
" Nothing left, then delete SOTR from TADIR
SELECT * FROM sotr_head INTO TABLE lt_sotr_head WHERE paket = iv_package.
IF sy-subrc <> 0.
SELECT SINGLE obj_name FROM tadir INTO lv_obj_name
WHERE pgmid = 'R3TR' AND object = 'SOTR' AND obj_name = iv_package.
IF sy-subrc = 0.
CALL FUNCTION 'TR_TADIR_INTERFACE'
EXPORTING
wi_delete_tadir_entry = abap_true
wi_test_modus = abap_false
wi_tadir_pgmid = 'R3TR'
wi_tadir_object = 'SOTR'
wi_tadir_obj_name = lv_obj_name
EXCEPTIONS
OTHERS = 1 ##FM_SUBRC_OK.
IF zcl_abapgit_factory=>get_sap_package( iv_package )->are_changes_recorded_in_tr_req( ) = abap_true.
CALL FUNCTION 'RS_CORR_INSERT'
EXPORTING
object = lv_obj_name
object_class = 'SOTR'
mode = 'D'
global_lock = abap_true
devclass = iv_package
suppress_dialog = abap_true
EXCEPTIONS
cancelled = 1
permission_failure = 2
unknown_objectclass = 3
OTHERS = 4.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDMETHOD.