mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Improved error message when uninstalling DDIC objects (#3562)
* Update zcl_abapgit_object_doma.clas.abap * Uninstall DDIC * DDIC uninstall * Pretty print * DOMA delete append Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
e0c93b0d7c
commit
4f0a5480a1
|
@ -38,7 +38,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_object_doma IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_OBJECT_DOMA IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD deserialize_texts.
|
||||
|
@ -201,47 +201,13 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
* see class CL_WB_DDIC
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
TRY.
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'D'
|
||||
no_ask_delete_append = abap_true
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, DOMA' ).
|
||||
ENDIF.
|
||||
|
||||
CATCH cx_sy_dyn_call_param_not_found.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'D'
|
||||
* no_ask_delete_append = abap_true parameter not available in lower NW versions
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, DOMA' ).
|
||||
ENDIF.
|
||||
|
||||
ENDTRY.
|
||||
delete_ddic( iv_objtype = 'D'
|
||||
iv_no_ask_delete_append = abap_true ).
|
||||
|
||||
delete_longtexts( c_longtext_id_doma ).
|
||||
|
||||
|
|
|
@ -157,25 +157,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'E'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, DTEL,' && sy-subrc ).
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
delete_ddic( 'E' ).
|
||||
|
||||
delete_longtexts( c_longtext_id_dtel ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -31,25 +31,12 @@ CLASS ZCL_ABAPGIT_OBJECT_ENQU IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'L'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, ENQU' ).
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
delete_ddic( 'L' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -27,25 +27,12 @@ CLASS ZCL_ABAPGIT_OBJECT_SHLP IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'H'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, SHLP' ).
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
delete_ddic( 'H' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -418,14 +418,14 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
|||
AND as4vers = '0000'.
|
||||
IF sy-subrc = 0 AND lv_tabclass = 'TRANSP'.
|
||||
|
||||
* Avoid dump in dynamic SELECT in case the table does not exist on database
|
||||
" Avoid dump in dynamic SELECT in case the table does not exist on database
|
||||
CALL FUNCTION 'DB_EXISTS_TABLE'
|
||||
EXPORTING
|
||||
tabname = lv_objname
|
||||
IMPORTING
|
||||
subrc = lv_subrc.
|
||||
IF lv_subrc = 0.
|
||||
* it cannot delete table with table without asking
|
||||
" it cannot delete table with data without asking
|
||||
CREATE DATA lr_data TYPE (lv_objname).
|
||||
ASSIGN lr_data->* TO <lg_data>.
|
||||
SELECT SINGLE * FROM (lv_objname) INTO <lg_data>.
|
||||
|
@ -435,19 +435,8 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = lv_no_ask
|
||||
objname = lv_objname
|
||||
objtype = 'T'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, TABL,' && sy-subrc ).
|
||||
ENDIF.
|
||||
delete_ddic( iv_objtype = 'T'
|
||||
iv_no_ask = lv_no_ask ).
|
||||
|
||||
delete_longtexts( c_longtext_id_tabl ).
|
||||
|
||||
|
|
|
@ -27,27 +27,11 @@ CLASS ZCL_ABAPGIT_OBJECT_TTYP IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'A'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
ENDIF.
|
||||
delete_ddic( 'A' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_object_type IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_OBJECT_TYPE IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD create.
|
||||
|
@ -103,27 +103,12 @@ CLASS zcl_abapgit_object_type IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'G'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4
|
||||
dialog_needed = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error deleting TYPE' ).
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
delete_ddic( 'G' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
|
|
@ -46,6 +46,35 @@ ENDCLASS.
|
|||
CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD read_view.
|
||||
|
||||
DATA: lv_name TYPE ddobjname.
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_VIEW_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
state = 'A'
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd25v_wa = es_dd25v
|
||||
dd09l_wa = es_dd09l
|
||||
TABLES
|
||||
dd26v_tab = et_dd26v
|
||||
dd27p_tab = et_dd27p
|
||||
dd28j_tab = et_dd28j
|
||||
dd28v_tab = et_dd28v
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from DDIF_VIEW_GET' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
|
||||
SELECT SINGLE as4user FROM dd25l INTO rv_user
|
||||
|
@ -61,25 +90,12 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
|
|||
|
||||
METHOD zif_abapgit_object~delete.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
||||
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = abap_true
|
||||
objname = lv_objname
|
||||
objtype = 'V'
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from RS_DD_DELETE_OBJ, VIEW' ).
|
||||
IF zif_abapgit_object~exists( ) = abap_false.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
delete_ddic( 'V' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -298,33 +314,4 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
|
|||
iv_name = 'DD28V_TABLE' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD read_view.
|
||||
|
||||
DATA: lv_name TYPE ddobjname.
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
CALL FUNCTION 'DDIF_VIEW_GET'
|
||||
EXPORTING
|
||||
name = lv_name
|
||||
state = 'A'
|
||||
langu = mv_language
|
||||
IMPORTING
|
||||
dd25v_wa = es_dd25v
|
||||
dd09l_wa = es_dd09l
|
||||
TABLES
|
||||
dd26v_tab = et_dd26v
|
||||
dd27p_tab = et_dd27p
|
||||
dd28j_tab = et_dd28j
|
||||
dd28v_tab = et_dd28v
|
||||
EXCEPTIONS
|
||||
illegal_input = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from DDIF_VIEW_GET' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -84,7 +84,13 @@ CLASS zcl_abapgit_objects_super DEFINITION PUBLIC ABSTRACT.
|
|||
VALUE(rv_active) TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
|
||||
METHODS delete_ddic
|
||||
IMPORTING
|
||||
VALUE(iv_objtype) TYPE string
|
||||
VALUE(iv_no_ask) TYPE abap_bool DEFAULT abap_true
|
||||
VALUE(iv_no_ask_delete_append) TYPE abap_bool DEFAULT abap_false
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
PRIVATE SECTION.
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -160,6 +166,54 @@ CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD delete_ddic.
|
||||
|
||||
DATA: lv_objname TYPE rsedd0-ddobjname,
|
||||
lv_objtype TYPE rsedd0-ddobjtype.
|
||||
|
||||
lv_objname = ms_item-obj_name.
|
||||
lv_objtype = iv_objtype.
|
||||
|
||||
TRY.
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = iv_no_ask
|
||||
objname = lv_objname
|
||||
objtype = lv_objtype
|
||||
no_ask_delete_append = iv_no_ask_delete_append
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4
|
||||
dialog_needed = 5
|
||||
OTHERS = 6.
|
||||
CATCH cx_sy_dyn_call_param_not_found.
|
||||
" no_ask_delete_append not available in lower releases
|
||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
||||
EXPORTING
|
||||
no_ask = iv_no_ask
|
||||
objname = lv_objname
|
||||
objtype = lv_objtype
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
object_not_found = 2
|
||||
object_not_specified = 3
|
||||
permission_failure = 4
|
||||
dialog_needed = 5
|
||||
OTHERS = 6.
|
||||
ENDTRY.
|
||||
|
||||
IF sy-subrc = 5.
|
||||
zcx_abapgit_exception=>raise( |Object { ms_item-obj_type } { ms_item-obj_name
|
||||
} has dependencies and must be deleted manually| ).
|
||||
ELSEIF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error deleting { ms_item-obj_type } { ms_item-obj_name }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD delete_longtexts.
|
||||
|
||||
zcl_abapgit_factory=>get_longtexts( )->delete(
|
||||
|
|
Loading…
Reference in New Issue
Block a user