diff --git a/src/objects/zcl_abapgit_object_doma.clas.abap b/src/objects/zcl_abapgit_object_doma.clas.abap index 6367baabd..eb634be79 100644 --- a/src/objects/zcl_abapgit_object_doma.clas.abap +++ b/src/objects/zcl_abapgit_object_doma.clas.abap @@ -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 ). diff --git a/src/objects/zcl_abapgit_object_dtel.clas.abap b/src/objects/zcl_abapgit_object_dtel.clas.abap index 824045d23..5879f1b3d 100644 --- a/src/objects/zcl_abapgit_object_dtel.clas.abap +++ b/src/objects/zcl_abapgit_object_dtel.clas.abap @@ -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. diff --git a/src/objects/zcl_abapgit_object_enqu.clas.abap b/src/objects/zcl_abapgit_object_enqu.clas.abap index dc32286a6..26a1aca6a 100644 --- a/src/objects/zcl_abapgit_object_enqu.clas.abap +++ b/src/objects/zcl_abapgit_object_enqu.clas.abap @@ -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. diff --git a/src/objects/zcl_abapgit_object_shlp.clas.abap b/src/objects/zcl_abapgit_object_shlp.clas.abap index 7c6793b42..4afb4eedc 100644 --- a/src/objects/zcl_abapgit_object_shlp.clas.abap +++ b/src/objects/zcl_abapgit_object_shlp.clas.abap @@ -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. diff --git a/src/objects/zcl_abapgit_object_tabl.clas.abap b/src/objects/zcl_abapgit_object_tabl.clas.abap index f11227d16..6e343a771 100644 --- a/src/objects/zcl_abapgit_object_tabl.clas.abap +++ b/src/objects/zcl_abapgit_object_tabl.clas.abap @@ -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 . SELECT SINGLE * FROM (lv_objname) INTO . @@ -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 ). diff --git a/src/objects/zcl_abapgit_object_ttyp.clas.abap b/src/objects/zcl_abapgit_object_ttyp.clas.abap index adb8a601b..b814e91d7 100644 --- a/src/objects/zcl_abapgit_object_ttyp.clas.abap +++ b/src/objects/zcl_abapgit_object_ttyp.clas.abap @@ -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. diff --git a/src/objects/zcl_abapgit_object_type.clas.abap b/src/objects/zcl_abapgit_object_type.clas.abap index d3b33b212..236fcbb97 100644 --- a/src/objects/zcl_abapgit_object_type.clas.abap +++ b/src/objects/zcl_abapgit_object_type.clas.abap @@ -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. diff --git a/src/objects/zcl_abapgit_object_view.clas.abap b/src/objects/zcl_abapgit_object_view.clas.abap index 8f091a8cb..ac535d1a0 100644 --- a/src/objects/zcl_abapgit_object_view.clas.abap +++ b/src/objects/zcl_abapgit_object_view.clas.abap @@ -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. diff --git a/src/objects/zcl_abapgit_objects_super.clas.abap b/src/objects/zcl_abapgit_objects_super.clas.abap index 31deb4343..320671b0a 100644 --- a/src/objects/zcl_abapgit_objects_super.clas.abap +++ b/src/objects/zcl_abapgit_objects_super.clas.abap @@ -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(