mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 13:03:01 +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.
|
METHOD deserialize_texts.
|
||||||
|
@ -201,47 +201,13 @@ CLASS zcl_abapgit_object_doma IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
* see class CL_WB_DDIC
|
|
||||||
|
|
||||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
IF zif_abapgit_object~exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
|
||||||
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.
|
ENDIF.
|
||||||
|
|
||||||
CATCH cx_sy_dyn_call_param_not_found.
|
delete_ddic( iv_objtype = 'D'
|
||||||
|
iv_no_ask_delete_append = abap_true ).
|
||||||
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_longtexts( c_longtext_id_doma ).
|
delete_longtexts( c_longtext_id_doma ).
|
||||||
|
|
||||||
|
|
|
@ -157,25 +157,12 @@ CLASS ZCL_ABAPGIT_OBJECT_DTEL IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
IF zif_abapgit_object~exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
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 ).
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
delete_ddic( 'E' ).
|
||||||
|
|
||||||
delete_longtexts( c_longtext_id_dtel ).
|
delete_longtexts( c_longtext_id_dtel ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
|
@ -31,25 +31,12 @@ CLASS ZCL_ABAPGIT_OBJECT_ENQU IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
IF zif_abapgit_object~exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
|
||||||
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' ).
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
delete_ddic( 'L' ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,25 +27,12 @@ CLASS ZCL_ABAPGIT_OBJECT_SHLP IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
IF zif_abapgit_object~exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
|
||||||
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' ).
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
delete_ddic( 'H' ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -418,14 +418,14 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
||||||
AND as4vers = '0000'.
|
AND as4vers = '0000'.
|
||||||
IF sy-subrc = 0 AND lv_tabclass = 'TRANSP'.
|
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'
|
CALL FUNCTION 'DB_EXISTS_TABLE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
tabname = lv_objname
|
tabname = lv_objname
|
||||||
IMPORTING
|
IMPORTING
|
||||||
subrc = lv_subrc.
|
subrc = lv_subrc.
|
||||||
IF lv_subrc = 0.
|
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).
|
CREATE DATA lr_data TYPE (lv_objname).
|
||||||
ASSIGN lr_data->* TO <lg_data>.
|
ASSIGN lr_data->* TO <lg_data>.
|
||||||
SELECT SINGLE * FROM (lv_objname) INTO <lg_data>.
|
SELECT SINGLE * FROM (lv_objname) INTO <lg_data>.
|
||||||
|
@ -435,19 +435,8 @@ CLASS ZCL_ABAPGIT_OBJECT_TABL IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
CALL FUNCTION 'RS_DD_DELETE_OBJ'
|
delete_ddic( iv_objtype = 'T'
|
||||||
EXPORTING
|
iv_no_ask = lv_no_ask ).
|
||||||
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_longtexts( c_longtext_id_tabl ).
|
delete_longtexts( c_longtext_id_tabl ).
|
||||||
|
|
||||||
|
|
|
@ -27,27 +27,11 @@ CLASS ZCL_ABAPGIT_OBJECT_TTYP IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
|
||||||
|
|
||||||
IF zif_abapgit_object~exists( ) = abap_false.
|
IF zif_abapgit_object~exists( ) = abap_false.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lv_objname = ms_item-obj_name.
|
delete_ddic( 'A' ).
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CLASS zcl_abapgit_object_type IMPLEMENTATION.
|
CLASS ZCL_ABAPGIT_OBJECT_TYPE IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
METHOD create.
|
METHOD create.
|
||||||
|
@ -103,27 +103,12 @@ CLASS zcl_abapgit_object_type IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
IF zif_abapgit_object~exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
|
||||||
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' ).
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
delete_ddic( 'G' ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,35 @@ ENDCLASS.
|
||||||
CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
|
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.
|
METHOD zif_abapgit_object~changed_by.
|
||||||
|
|
||||||
SELECT SINGLE as4user FROM dd25l INTO rv_user
|
SELECT SINGLE as4user FROM dd25l INTO rv_user
|
||||||
|
@ -61,25 +90,12 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD zif_abapgit_object~delete.
|
METHOD zif_abapgit_object~delete.
|
||||||
|
|
||||||
DATA: lv_objname TYPE rsedd0-ddobjname.
|
IF zif_abapgit_object~exists( ) = abap_false.
|
||||||
|
RETURN.
|
||||||
|
|
||||||
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' ).
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
delete_ddic( 'V' ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
@ -298,33 +314,4 @@ CLASS ZCL_ABAPGIT_OBJECT_VIEW IMPLEMENTATION.
|
||||||
iv_name = 'DD28V_TABLE' ).
|
iv_name = 'DD28V_TABLE' ).
|
||||||
|
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
|
@ -84,7 +84,13 @@ CLASS zcl_abapgit_objects_super DEFINITION PUBLIC ABSTRACT.
|
||||||
VALUE(rv_active) TYPE abap_bool
|
VALUE(rv_active) TYPE abap_bool
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
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.
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -160,6 +166,54 @@ CLASS ZCL_ABAPGIT_OBJECTS_SUPER IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
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.
|
METHOD delete_longtexts.
|
||||||
|
|
||||||
zcl_abapgit_factory=>get_longtexts( )->delete(
|
zcl_abapgit_factory=>get_longtexts( )->delete(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user