mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Improvements for uninstall (#3959)
* Improvements for uninstall Uninstall now catches exceptions and tries up to 3 times to remove an object. Exceptions are only raised if after 3 tries some objects still remain. Tested with https://github.com/larshp/abapPGP Closes https://github.com/abapGit/abapGit/issues/379 and https://github.com/abapGit/abapGit/issues/3949, and probably #3228 * Add SHLP also ordered when by priority * Conflict * Move counter Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
a49b68efa7
commit
24436879b6
|
@ -475,6 +475,7 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
||||||
lt_tadir LIKE it_tadir,
|
lt_tadir LIKE it_tadir,
|
||||||
lt_items TYPE zif_abapgit_definitions=>ty_items_tt,
|
lt_items TYPE zif_abapgit_definitions=>ty_items_tt,
|
||||||
lx_error TYPE REF TO zcx_abapgit_exception,
|
lx_error TYPE REF TO zcx_abapgit_exception,
|
||||||
|
lv_count TYPE i,
|
||||||
lv_text TYPE string.
|
lv_text TYPE string.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir.
|
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF it_tadir.
|
||||||
|
@ -495,28 +496,44 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
||||||
check_objects_locked( iv_language = zif_abapgit_definitions=>c_english
|
check_objects_locked( iv_language = zif_abapgit_definitions=>c_english
|
||||||
it_items = lt_items ).
|
it_items = lt_items ).
|
||||||
|
|
||||||
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
|
||||||
li_progress->show( iv_current = sy-tabix
|
|
||||||
iv_text = |Delete { <ls_tadir>-obj_name }| ).
|
|
||||||
|
|
||||||
CLEAR ls_item.
|
|
||||||
ls_item-obj_type = <ls_tadir>-object.
|
|
||||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
|
||||||
delete_obj(
|
|
||||||
iv_package = <ls_tadir>-devclass
|
|
||||||
is_item = ls_item ).
|
|
||||||
|
|
||||||
* make sure to save object deletions
|
|
||||||
COMMIT WORK.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
CATCH zcx_abapgit_exception INTO lx_error.
|
CATCH zcx_abapgit_exception INTO lx_error.
|
||||||
zcl_abapgit_default_transport=>get_instance( )->reset( ).
|
zcl_abapgit_default_transport=>get_instance( )->reset( ).
|
||||||
RAISE EXCEPTION lx_error.
|
RAISE EXCEPTION lx_error.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
|
lv_count = 1.
|
||||||
|
DO 3 TIMES.
|
||||||
|
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
||||||
|
li_progress->show( iv_current = lv_count
|
||||||
|
iv_text = |Delete { <ls_tadir>-obj_name }| ).
|
||||||
|
|
||||||
|
CLEAR ls_item.
|
||||||
|
ls_item-obj_type = <ls_tadir>-object.
|
||||||
|
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
delete_obj(
|
||||||
|
iv_package = <ls_tadir>-devclass
|
||||||
|
is_item = ls_item ).
|
||||||
|
|
||||||
|
DELETE lt_tadir.
|
||||||
|
lv_count = lv_count + 1.
|
||||||
|
|
||||||
|
" make sure to save object deletions
|
||||||
|
COMMIT WORK.
|
||||||
|
CATCH zcx_abapgit_exception INTO lx_error ##NO_HANDLER.
|
||||||
|
" ignore errors inside the loops and raise it later
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDLOOP.
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
zcl_abapgit_default_transport=>get_instance( )->reset( ).
|
zcl_abapgit_default_transport=>get_instance( )->reset( ).
|
||||||
|
|
||||||
|
IF lx_error IS BOUND AND lines( lt_tadir ) > 0.
|
||||||
|
RAISE EXCEPTION lx_error.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,7 @@ CLASS ZCL_ABAPGIT_DEPENDENCIES IMPLEMENTATION.
|
||||||
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF ct_tadir.
|
FIELD-SYMBOLS: <ls_tadir> LIKE LINE OF ct_tadir.
|
||||||
|
|
||||||
" misuse field KORRNUM to fix deletion sequence
|
" misuse field KORRNUM to fix deletion sequence
|
||||||
|
" higher value means later deletion
|
||||||
|
|
||||||
LOOP AT ct_tadir ASSIGNING <ls_tadir>.
|
LOOP AT ct_tadir ASSIGNING <ls_tadir>.
|
||||||
CASE <ls_tadir>-object.
|
CASE <ls_tadir>-object.
|
||||||
|
@ -86,18 +87,9 @@ CLASS ZCL_ABAPGIT_DEPENDENCIES IMPLEMENTATION.
|
||||||
<ls_tadir>-korrnum = '810000'.
|
<ls_tadir>-korrnum = '810000'.
|
||||||
WHEN 'DTEL'.
|
WHEN 'DTEL'.
|
||||||
<ls_tadir>-korrnum = '800000'.
|
<ls_tadir>-korrnum = '800000'.
|
||||||
WHEN 'DCLS'.
|
WHEN 'SHLP'.
|
||||||
" AUTH and SUSO after DCLS
|
" SHLP after TABL
|
||||||
<ls_tadir>-korrnum = '705000'.
|
<ls_tadir>-korrnum = '760000'.
|
||||||
WHEN 'SUSO'.
|
|
||||||
" SUSO after DCLS
|
|
||||||
<ls_tadir>-korrnum = '710000'.
|
|
||||||
WHEN 'AUTH'.
|
|
||||||
" AUTH after DCLS
|
|
||||||
<ls_tadir>-korrnum = '715000'.
|
|
||||||
WHEN 'DDLS'.
|
|
||||||
" DDLS after DCLS but before other DDIC
|
|
||||||
<ls_tadir>-korrnum = '720000'.
|
|
||||||
WHEN 'TTYP' OR 'TABL' OR 'VIEW'.
|
WHEN 'TTYP' OR 'TABL' OR 'VIEW'.
|
||||||
SELECT SINGLE tabclass FROM dd02l
|
SELECT SINGLE tabclass FROM dd02l
|
||||||
INTO lv_tabclass
|
INTO lv_tabclass
|
||||||
|
@ -110,6 +102,18 @@ CLASS ZCL_ABAPGIT_DEPENDENCIES IMPLEMENTATION.
|
||||||
ELSE.
|
ELSE.
|
||||||
<ls_tadir>-korrnum = '750000'.
|
<ls_tadir>-korrnum = '750000'.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
WHEN 'DDLS'.
|
||||||
|
" DDLS after DCLS but before other DDIC
|
||||||
|
<ls_tadir>-korrnum = '720000'.
|
||||||
|
WHEN 'AUTH'.
|
||||||
|
" AUTH after DCLS
|
||||||
|
<ls_tadir>-korrnum = '715000'.
|
||||||
|
WHEN 'SUSO'.
|
||||||
|
" SUSO after DCLS
|
||||||
|
<ls_tadir>-korrnum = '710000'.
|
||||||
|
WHEN 'DCLS'.
|
||||||
|
" AUTH and SUSO after DCLS
|
||||||
|
<ls_tadir>-korrnum = '705000'.
|
||||||
WHEN 'IASP'.
|
WHEN 'IASP'.
|
||||||
<ls_tadir>-korrnum = '552000'.
|
<ls_tadir>-korrnum = '552000'.
|
||||||
WHEN 'IARP'.
|
WHEN 'IARP'.
|
||||||
|
@ -130,7 +134,7 @@ CLASS ZCL_ABAPGIT_DEPENDENCIES IMPLEMENTATION.
|
||||||
IF sy-subrc = 0.
|
IF sy-subrc = 0.
|
||||||
<ls_tadir>-korrnum = '200000'.
|
<ls_tadir>-korrnum = '200000'.
|
||||||
ELSE.
|
ELSE.
|
||||||
<ls_tadir>-korrnum = '100000'.
|
<ls_tadir>-korrnum = '180000'.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
WHEN 'IDOC'.
|
WHEN 'IDOC'.
|
||||||
<ls_tadir>-korrnum = '200000'.
|
<ls_tadir>-korrnum = '200000'.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user