From 2415a5c0c0907af0f49bb373f1fa67d737c45f27 Mon Sep 17 00:00:00 2001 From: Marc Bernard <59966492+mbtools@users.noreply.github.com> Date: Sat, 4 Jun 2022 13:41:50 +0200 Subject: [PATCH] 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. --- .../texts/zcl_abapgit_sotr_handler.clas.abap | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap b/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap index bc68e9ce9..7e2044f34 100644 --- a/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap +++ b/src/objects/texts/zcl_abapgit_sotr_handler.clas.abap @@ -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 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.