mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
rework "object to zip" to files
for cherry picking objects, without exporting the entire package previous implementation was too slow, as it had to serialize the entire package, and just needed files for one object
This commit is contained in:
parent
0ca5363f25
commit
32cac9d00e
|
@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100.
|
|||
* See http://www.abapgit.org
|
||||
|
||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.18.5'. "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.18.6'. "#EC NOTEXT
|
||||
|
||||
********************************************************************************
|
||||
* The MIT License (MIT)
|
||||
|
|
|
@ -104,9 +104,9 @@ CLASS lcl_html_action_utils IMPLEMENTATION.
|
|||
|
||||
DATA ls_field LIKE LINE OF ct.
|
||||
|
||||
FIELD-SYMBOLS <src> TYPE any.
|
||||
FIELD-SYMBOLS <src> TYPE any.
|
||||
|
||||
ls_field-name = name.
|
||||
ls_field-name = name.
|
||||
|
||||
CASE cl_abap_typedescr=>describe_by_data( iv )->kind.
|
||||
WHEN cl_abap_typedescr=>kind_elem.
|
||||
|
@ -116,7 +116,7 @@ CLASS lcl_html_action_utils IMPLEMENTATION.
|
|||
ASSERT <src> IS ASSIGNED.
|
||||
ls_field-value = <src>.
|
||||
WHEN OTHERS.
|
||||
ASSERT 2 = 1.
|
||||
ASSERT 0 = 1.
|
||||
ENDCASE.
|
||||
|
||||
APPEND ls_field TO ct.
|
||||
|
@ -125,8 +125,8 @@ CLASS lcl_html_action_utils IMPLEMENTATION.
|
|||
|
||||
METHOD get_field.
|
||||
|
||||
FIELD-SYMBOLS <ls_field> LIKE LINE OF it.
|
||||
FIELD-SYMBOLS <dest> TYPE any.
|
||||
FIELD-SYMBOLS: <ls_field> LIKE LINE OF it,
|
||||
<dest> TYPE any.
|
||||
|
||||
|
||||
READ TABLE it ASSIGNING <ls_field> WITH KEY name = name.
|
||||
|
@ -142,7 +142,7 @@ CLASS lcl_html_action_utils IMPLEMENTATION.
|
|||
ASSERT <dest> IS ASSIGNED.
|
||||
<dest> = <ls_field>-value.
|
||||
WHEN OTHERS.
|
||||
ASSERT 2 = 1.
|
||||
ASSERT 0 = 1.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "get_field
|
||||
|
|
|
@ -83,7 +83,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
lcl_app=>user( )->set_repo_show( lv_key ).
|
||||
TRY.
|
||||
lcl_app=>repo_srv( )->get( lv_key )->refresh( ).
|
||||
CATCH lcx_exception.
|
||||
CATCH lcx_exception ##NO_HANDLER.
|
||||
ENDTRY.
|
||||
|
||||
ev_state = gc_event_state-re_render.
|
||||
|
@ -176,7 +176,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 = 'Object to files' 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.
|
||||
|
||||
|
|
|
@ -6,15 +6,15 @@ TABLES sscrfields.
|
|||
SELECTION-SCREEN BEGIN OF SCREEN 1002 TITLE s_title.
|
||||
SELECTION-SCREEN BEGIN OF LINE.
|
||||
SELECTION-SCREEN COMMENT 1(10) s_url FOR FIELD p_url.
|
||||
PARAMETERS: p_url TYPE string LOWER CASE VISIBLE LENGTH 40.
|
||||
PARAMETERS: p_url TYPE string LOWER CASE VISIBLE LENGTH 40 ##SEL_WRONG.
|
||||
SELECTION-SCREEN END OF LINE.
|
||||
SELECTION-SCREEN BEGIN OF LINE.
|
||||
SELECTION-SCREEN COMMENT 1(10) s_user FOR FIELD p_user.
|
||||
PARAMETERS: p_user TYPE string LOWER CASE VISIBLE LENGTH 40.
|
||||
PARAMETERS: p_user TYPE string LOWER CASE VISIBLE LENGTH 40 ##SEL_WRONG.
|
||||
SELECTION-SCREEN END OF LINE.
|
||||
SELECTION-SCREEN BEGIN OF LINE.
|
||||
SELECTION-SCREEN COMMENT 1(10) s_pass FOR FIELD p_pass.
|
||||
PARAMETERS: p_pass TYPE string LOWER CASE VISIBLE LENGTH 40.
|
||||
PARAMETERS: p_pass TYPE string LOWER CASE VISIBLE LENGTH 40 ##SEL_WRONG.
|
||||
SELECTION-SCREEN END OF LINE.
|
||||
SELECTION-SCREEN END OF SCREEN 1002.
|
||||
|
||||
|
|
|
@ -27,12 +27,12 @@ CLASS lcl_zip DEFINITION FINAL.
|
|||
|
||||
PRIVATE SECTION.
|
||||
CLASS-METHODS file_upload
|
||||
RETURNING VALUE(rv_xstr) TYPE xstring
|
||||
RETURNING value(rv_xstr) TYPE xstring
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS unzip_file
|
||||
IMPORTING iv_xstr TYPE xstring
|
||||
RETURNING VALUE(rt_files) TYPE ty_files_tt
|
||||
RETURNING value(rt_files) TYPE ty_files_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS normalize_path
|
||||
|
@ -52,11 +52,11 @@ CLASS lcl_zip DEFINITION FINAL.
|
|||
|
||||
CLASS-METHODS encode_files
|
||||
IMPORTING it_files TYPE ty_files_item_tt
|
||||
RETURNING VALUE(rv_xstr) TYPE xstring
|
||||
RETURNING value(rv_xstr) TYPE xstring
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS get_message
|
||||
RETURNING VALUE(rv_message) TYPE string
|
||||
RETURNING value(rv_message) TYPE string
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_zip DEFINITION
|
||||
|
@ -337,7 +337,7 @@ CLASS lcl_zip IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
ENDMETHOD. "normalize_path
|
||||
|
||||
METHOD unzip_file.
|
||||
|
||||
|
@ -460,10 +460,17 @@ CLASS lcl_zip IMPLEMENTATION.
|
|||
|
||||
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.
|
||||
DATA: ls_tadir TYPE tadir,
|
||||
ls_item TYPE ty_item,
|
||||
lv_folder TYPE string,
|
||||
lv_fullpath TYPE string,
|
||||
lt_rawdata TYPE solix_tab,
|
||||
lv_sep TYPE c LENGTH 1,
|
||||
lt_files TYPE ty_files_tt.
|
||||
|
||||
STATICS: lv_prev TYPE string.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files.
|
||||
|
||||
|
||||
ls_tadir = lcl_popups=>popup_object( ).
|
||||
|
@ -471,18 +478,74 @@ CLASS lcl_zip IMPLEMENTATION.
|
|||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
ENDIF.
|
||||
|
||||
ls_data-key = 'TZIP'.
|
||||
ls_data-package = ls_tadir-devclass.
|
||||
ls_data-master_language = sy-langu.
|
||||
ls_item-obj_type = ls_tadir-object.
|
||||
ls_item-obj_name = ls_tadir-obj_name.
|
||||
|
||||
CREATE OBJECT lo_repo
|
||||
lt_files = lcl_objects=>serialize(
|
||||
is_item = ls_item
|
||||
iv_language = sy-langu ).
|
||||
|
||||
IF lines( lt_files ) = 0.
|
||||
MESSAGE 'Empty' TYPE 'S'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
cl_gui_frontend_services=>directory_browse(
|
||||
EXPORTING
|
||||
is_data = ls_data.
|
||||
initial_folder = lv_prev
|
||||
CHANGING
|
||||
selected_folder = lv_folder ).
|
||||
IF lv_folder IS INITIAL.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
APPEND ls_tadir TO lt_tadir.
|
||||
lv_prev = lv_folder.
|
||||
|
||||
lcl_zip=>export( io_repo = lo_repo
|
||||
it_filter = lt_tadir ).
|
||||
cl_gui_frontend_services=>get_file_separator(
|
||||
CHANGING
|
||||
file_separator = lv_sep ).
|
||||
|
||||
LOOP AT lt_files ASSIGNING <ls_file>.
|
||||
CONCATENATE lv_folder lv_sep <ls_file>-filename INTO lv_fullpath.
|
||||
|
||||
lt_rawdata = cl_bcs_convert=>xstring_to_solix( <ls_file>-data ).
|
||||
|
||||
cl_gui_frontend_services=>gui_download(
|
||||
EXPORTING
|
||||
bin_filesize = xstrlen( <ls_file>-data )
|
||||
filename = lv_fullpath
|
||||
filetype = 'BIN'
|
||||
CHANGING
|
||||
data_tab = lt_rawdata
|
||||
EXCEPTIONS
|
||||
file_write_error = 1
|
||||
no_batch = 2
|
||||
gui_refuse_filetransfer = 3
|
||||
invalid_type = 4
|
||||
no_authority = 5
|
||||
unknown_error = 6
|
||||
header_not_allowed = 7
|
||||
separator_not_allowed = 8
|
||||
filesize_not_allowed = 9
|
||||
header_too_long = 10
|
||||
dp_error_create = 11
|
||||
dp_error_send = 12
|
||||
dp_error_write = 13
|
||||
unknown_dp_error = 14
|
||||
access_denied = 15
|
||||
dp_out_of_memory = 16
|
||||
disk_full = 17
|
||||
dp_timeout = 18
|
||||
file_not_found = 19
|
||||
dataprovider_exception = 20
|
||||
control_flush_error = 21
|
||||
not_supported_by_gui = 22
|
||||
error_no_gui = 23
|
||||
OTHERS = 24 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from gui_download' ).
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "export_package
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user