diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 991ea4333..075f6415e 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -160,6 +160,7 @@ CONSTANTS: BEGIN OF gc_action, zip_export TYPE string VALUE 'zip_export', zip_package TYPE string VALUE 'zip_package', zip_transport TYPE string VALUE 'zip_transport', + zip_object TYPE string VALUE 'zip_object', git_pull TYPE string VALUE 'git_pull', git_reset TYPE string VALUE 'git_reset', diff --git a/src/zabapgit_gui_router.prog.abap b/src/zabapgit_gui_router.prog.abap index f28481242..b540f923e 100644 --- a/src/zabapgit_gui_router.prog.abap +++ b/src/zabapgit_gui_router.prog.abap @@ -158,6 +158,9 @@ CLASS lcl_gui_router IMPLEMENTATION. WHEN gc_action-zip_transport. " Export transport as ZIP lcl_transport=>zip( ). ev_state = gc_event_state-no_more_act. + WHEN gc_action-zip_object. " Export object as ZIP + lcl_zip=>export_object( ). + ev_state = gc_event_state-no_more_act. " Remote origin manipulations WHEN gc_action-repo_remote_attach. " Remote attach diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 075ee918f..43855a673 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -204,6 +204,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. lo_betasub->add( iv_txt = 'Database util' iv_act = gc_action-go_db ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT. + lo_betasub->add( iv_txt = 'Object to zip' iv_act = gc_action-zip_object ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT. lo_betasub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT. diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index e0f6d7535..bdb88aa44 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -18,7 +18,10 @@ CLASS lcl_popups DEFINITION. CLASS-METHODS: popup_package_export RETURNING VALUE(rv_package) TYPE devclass - RAISING lcx_exception, + RAISING lcx_exception, + popup_object + RETURNING VALUE(rs_tadir) TYPE tadir + RAISING lcx_exception, create_branch_popup EXPORTING ev_name TYPE string ev_cancel TYPE abap_bool @@ -43,19 +46,19 @@ CLASS lcl_popups DEFINITION. iv_freeze_package TYPE abap_bool OPTIONAL iv_freeze_url TYPE abap_bool OPTIONAL iv_title TYPE clike DEFAULT 'Clone repository ...' - RETURNING VALUE(rs_popup) TYPE ty_popup + RETURNING VALUE(rs_popup) TYPE ty_popup RAISING lcx_exception ##NO_TEXT, popup_to_confirm IMPORTING - titlebar TYPE clike - text_question TYPE clike - text_button_1 TYPE clike DEFAULT 'Yes' - icon_button_1 TYPE ICON-NAME DEFAULT space - text_button_2 TYPE clike DEFAULT 'No' - icon_button_2 TYPE ICON-NAME DEFAULT space - default_button TYPE char1 DEFAULT '1' - display_cancel_button TYPE char1 DEFAULT abap_true - RETURNING VALUE(rv_answer) TYPE char1 + titlebar TYPE clike + text_question TYPE clike + text_button_1 TYPE clike DEFAULT 'Yes' + icon_button_1 TYPE icon-name DEFAULT space + text_button_2 TYPE clike DEFAULT 'No' + icon_button_2 TYPE icon-name DEFAULT space + default_button TYPE char1 DEFAULT '1' + display_cancel_button TYPE char1 DEFAULT abap_true + RETURNING VALUE(rv_answer) TYPE char1 RAISING lcx_exception. ENDCLASS. @@ -72,6 +75,51 @@ CLASS lcl_popups IMPLEMENTATION. END-OF-DEFINITION. + METHOD popup_object. + + DATA: lv_returncode TYPE c, + lt_fields TYPE TABLE OF sval. + + FIELD-SYMBOLS: LIKE LINE OF lt_fields. + + " TAB FLD LABEL DEF ATTR + _add_dialog_fld 'TADIR' 'OBJECT' 'Type' '' ''. + _add_dialog_fld 'TADIR' 'OBJ_NAME' 'Name' '' ''. + + CALL FUNCTION 'POPUP_GET_VALUES' + EXPORTING + no_value_check = abap_true + popup_title = 'Object' "#EC NOTEXT + IMPORTING + returncode = lv_returncode + TABLES + fields = lt_fields + EXCEPTIONS + error_in_fields = 1 + OTHERS = 2. + IF sy-subrc <> 0. + lcx_exception=>raise( 'Error from POPUP_GET_VALUES' ). + ENDIF. + + IF lv_returncode = 'A'. + RETURN. + ENDIF. + + READ TABLE lt_fields INDEX 1 ASSIGNING . + ASSERT sy-subrc = 0. + TRANSLATE -value TO UPPER CASE. + rs_tadir-object = -value. + + READ TABLE lt_fields INDEX 2 ASSIGNING . + ASSERT sy-subrc = 0. + TRANSLATE -value TO UPPER CASE. + rs_tadir-obj_name = -value. + + rs_tadir = lcl_tadir=>read_single( iv_object = rs_tadir-object + iv_obj_name = rs_tadir-obj_name ). + + ENDMETHOD. + METHOD popup_package_export. DATA: lv_returncode TYPE c, diff --git a/src/zabapgit_zip.prog.abap b/src/zabapgit_zip.prog.abap index d3754257e..942d95961 100644 --- a/src/zabapgit_zip.prog.abap +++ b/src/zabapgit_zip.prog.abap @@ -22,6 +22,9 @@ CLASS lcl_zip DEFINITION FINAL. CLASS-METHODS export_package RAISING lcx_exception lcx_cancel. + CLASS-METHODS export_object + RAISING lcx_exception lcx_cancel. + PRIVATE SECTION. CLASS-METHODS file_upload RETURNING VALUE(rv_xstr) TYPE xstring @@ -455,4 +458,32 @@ CLASS lcl_zip IMPLEMENTATION. ENDMETHOD. "export_package + METHOD export_object. + + DATA: lo_repo TYPE REF TO lcl_repo_offline, + ls_data TYPE lcl_persistence_repo=>ty_repo, + lt_tadir TYPE scts_tadir, + ls_tadir TYPE tadir. + + + ls_tadir = lcl_popups=>popup_object( ). + IF ls_tadir IS INITIAL. + RAISE EXCEPTION TYPE lcx_cancel. + ENDIF. + + ls_data-key = 'TZIP'. + ls_data-package = ls_tadir-devclass. + ls_data-master_language = sy-langu. + + CREATE OBJECT lo_repo + EXPORTING + is_data = ls_data. + + APPEND ls_tadir TO lt_tadir. + + lcl_zip=>export( io_repo = lo_repo + it_filter = lt_tadir ). + + ENDMETHOD. "export_package + ENDCLASS. "lcl_zip IMPLEMENTATION \ No newline at end of file