From 9b3e33ac15284a11a262cfde9f05c3809698bff8 Mon Sep 17 00:00:00 2001 From: Lars Hvam Date: Thu, 27 Nov 2014 14:08:32 +0100 Subject: [PATCH] handle delete on more objects --- zabapgit.abap | 176 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 155 insertions(+), 21 deletions(-) diff --git a/zabapgit.abap b/zabapgit.abap index 6b1ddbbf3..d293a919a 100644 --- a/zabapgit.abap +++ b/zabapgit.abap @@ -2,7 +2,8 @@ REPORT zabapgit. * See https://github.com/larshp/abapGit/ -CONSTANTS: gc_version TYPE string VALUE 'v0.2-alpha'. "#EC NOTEXT +CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v0.3'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) @@ -556,7 +557,7 @@ CLASS lcl_xml IMPLEMENTATION. mi_root = mi_xml_doc->find_from_name( depth = 0 name = 'abapGit' ). ELSEIF iv_empty = abap_false. mi_root = mi_xml_doc->create_element( 'abapGit' ). - mi_root->set_attribute( name = 'version' value = gc_version ). "#EC NOTEXT + mi_root->set_attribute( name = 'version' value = gc_xml_version ). "#EC NOTEXT mi_xml_doc->append_child( mi_root ). ENDIF. @@ -1428,7 +1429,27 @@ ENDCLASS. "lcl_serialize_doma DEFINITION CLASS lcl_serialize_doma IMPLEMENTATION. METHOD delete. - _raise 'todo, delete, doma'. +* see class CL_WB_DDIC + + DATA: lv_objname TYPE rsedd0-ddobjname. + + + lv_objname = is_item-obj_name. + + CALL FUNCTION 'RS_DD_DELETE_OBJ' + EXPORTING + no_ask = abap_true + objname = lv_objname + objtype = 'D' + EXCEPTIONS + not_executed = 1 + object_not_found = 2 + object_not_specified = 3 + permission_failure = 4. + IF sy-subrc <> 0. + _raise 'error from RS_DD_DELETE_OBJ, DOMA'. + ENDIF. + ENDMETHOD. "delete METHOD serialize. @@ -1460,8 +1481,6 @@ CLASS lcl_serialize_doma IMPLEMENTATION. RETURN. " does not exist ENDIF. -* todo, translated texts? - CLEAR: ls_dd01v-as4user, ls_dd01v-as4date, ls_dd01v-as4time. @@ -1554,7 +1573,24 @@ CLASS lcl_serialize_dtel IMPLEMENTATION. METHOD delete. - _raise 'todo, delete dtel'. + DATA: lv_objname TYPE rsedd0-ddobjname. + + + lv_objname = is_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. + _raise 'error from RS_DD_DELETE_OBJ, DTEL'. + ENDIF. ENDMETHOD. "delete @@ -1586,8 +1622,6 @@ CLASS lcl_serialize_dtel IMPLEMENTATION. RETURN. " does not exist ENDIF. -* todo, translated texts? - CLEAR: ls_dd04v-as4user, ls_dd04v-as4date, ls_dd04v-as4time. @@ -2328,9 +2362,27 @@ CLASS lcl_serialize_ssfo IMPLEMENTATION. METHOD delete. -* fm FB_DELETE_FORM + DATA: lv_formname TYPE tdsfname. - _raise 'todo, delete ssfo'. + + lv_formname = is_item-obj_name. + + CALL FUNCTION 'FB_DELETE_FORM' + EXPORTING + i_formname = lv_formname + i_with_dialog = abap_false + i_with_confirm_dialog = abap_false + EXCEPTIONS + no_name = 1 + no_form = 2 + form_locked = 3 + no_access_permission = 4 + illegal_language = 5 + illegal_formtype = 6 + OTHERS = 7. + IF sy-subrc <> 0. + _raise 'Error from FB_DELETE_FORM'. + ENDIF. ENDMETHOD. "delete @@ -2496,7 +2548,24 @@ CLASS lcl_serialize_tabl IMPLEMENTATION. METHOD delete. - _raise 'todo, delete tabl'. + DATA: lv_objname TYPE rsedd0-ddobjname. + + + lv_objname = is_item-obj_name. + + CALL FUNCTION 'RS_DD_DELETE_OBJ' + EXPORTING + no_ask = abap_true + objname = lv_objname + objtype = 'T' + EXCEPTIONS + not_executed = 1 + object_not_found = 2 + object_not_specified = 3 + permission_failure = 4. + IF sy-subrc <> 0. + _raise 'error from RS_DD_DELETE_OBJ, TABL'. + ENDIF. ENDMETHOD. "delete @@ -2716,7 +2785,24 @@ CLASS lcl_serialize_enqu IMPLEMENTATION. METHOD delete. - _raise 'todo delete enqu'. + DATA: lv_objname TYPE rsedd0-ddobjname. + + + lv_objname = is_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. + _raise 'error from RS_DD_DELETE_OBJ, ENQU'. + ENDIF. ENDMETHOD. "delete @@ -2844,7 +2930,24 @@ CLASS lcl_serialize_shlp IMPLEMENTATION. METHOD delete. - _raise 'todo, delete shlp'. + DATA: lv_objname TYPE rsedd0-ddobjname. + + + lv_objname = is_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. + _raise 'error from RS_DD_DELETE_OBJ, SHLP'. + ENDIF. ENDMETHOD. "delete @@ -2982,7 +3085,24 @@ CLASS lcl_serialize_view IMPLEMENTATION. METHOD delete. - _raise 'todo, delete view'. + DATA: lv_objname TYPE rsedd0-ddobjname. + + + lv_objname = is_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. + _raise 'error from RS_DD_DELETE_OBJ, VIEW'. + ENDIF. ENDMETHOD. "delete @@ -3140,7 +3260,24 @@ CLASS lcl_serialize_ttyp IMPLEMENTATION. METHOD delete. - _raise 'todo, delete ttyp'. + DATA: lv_objname TYPE rsedd0-ddobjname. + + + lv_objname = is_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. + _raise 'error from RS_DD_DELETE_OBJ, TTYP'. + ENDIF. ENDMETHOD. "delete @@ -4015,8 +4152,6 @@ CLASS lcl_serialize IMPLEMENTATION. DELETE ADJACENT DUPLICATES FROM rt_results COMPARING obj_type obj_name filename. -* todo, how to handle deleted in repo? - ENDMETHOD. "status METHOD deserialize. @@ -5482,7 +5617,7 @@ CLASS lcl_transport IMPLEMENTATION. is_repo-branch_name && get_null( ) && ` ` && - 'report-status agent=abapGit/' && gc_version && + 'report-status agent=abapGit/' && gc_abap_version && gc_newline. "#EC NOTEXT lv_cmd_pkt = pkt_string( lv_line ). @@ -5590,7 +5725,7 @@ CLASS lcl_transport IMPLEMENTATION. ` ` && ev_branch && ` ` && - 'side-band-64k no-progress agent=abapGit/' && gc_version + 'side-band-64k no-progress agent=abapGit/' && gc_abap_version && gc_newline. "#EC NOTEXT lv_pkt = pkt_string( lv_line ). @@ -6414,7 +6549,6 @@ CLASS lcl_gui IMPLEMENTATION. ls_comment TYPE st_comment, lv_branch TYPE t_sha1, ls_repo TYPE st_repo, - lt_fields TYPE TABLE OF sval, lt_spopli TYPE TABLE OF spopli, lv_answer TYPE c. @@ -6731,7 +6865,7 @@ CLASS lcl_gui IMPLEMENTATION. rv_html = rv_html && '


abapGit Version: ' && - gc_version && + gc_abap_version && ' d

'. "#EC NOTEXT rv_html = rv_html && ''.