mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Enhance 'Transport to ZIP' to process multiple transport requests (#2683)
* New Program : Mass Transport to local zip file Create new program ZMASSGIT in order to convert multiple tranport request to local zip files ( by giving output folder ). Timestamped subfolder will be created in the input folder. * Add files via upload * Update zmassgit.prog.abap * Add files via upload * Add files via upload * Delete zmassgit.prog.xml * Delete zmassgit.prog.abap * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap * Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.xml * Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap * Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.xml * Delete zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipscr.abap * Rename zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipscr.xml to src/zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipscr.xml * Rename zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.abap to src/zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.abap * Rename zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.xml to src/zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2ziptop.xml * Rename zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap to src/zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap * Rename zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.xml to src/zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.xml * Rename zabapgit_masstransp2zip.fugr.xml to src/zabapgit_masstransp2zip.fugr.xml * Rename zabapgit_masstransp2zip.fugr.z_abapgit_transports_2_zip.abap to src/zabapgit_masstransp2zip.fugr.z_abapgit_transports_2_zip.abap * Rename zcl_abapgit_transport_mass.clas.abap to src/zcl_abapgit_transport_mass.clas.abap * Rename zcl_abapgit_transport_mass.clas.xml to src/zcl_abapgit_transport_mass.clas.xml * Delete zcl_abapgit_zip.clas.abap * Delete zcl_abapgit_zip.clas.xml * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Update zcl_abapgit_zip.clas.abap * Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap * Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap * Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipf01.abap * Update zcl_abapgit_transport_mass.clas.xml * Update zcl_abapgit_transport_mass.clas.abap * Update zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap * Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap * Update zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.xml * Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap * Update zabapgit_masstransp2zip.fugr.lzabapgit_masstransp2zipplc.abap * Update zabapgit_masstransp2zip.fugr.saplzabapgit_masstransp2zip.abap * New version without function group * Cleanup * Abaplint * AbapLint Fixes * Remove plugins objects from master * Skip log flag in ZIP export * Popup to ask the Export logic ( FULL / PREFIX ..) * line length for abaplint * Refactoring of code Avoid redundancy of code and remove unused constant. * Reduce line 50 length for abaplint ( < 120 ) * Change by the review of code Refactoring of code * AbapLint Fix
This commit is contained in:
parent
6a25e45d8f
commit
84042f1370
|
@ -647,10 +647,8 @@ CLASS ZCL_ABAPGIT_GUI_ROUTER IMPLEMENTATION.
|
||||||
file_download( iv_package = lv_package
|
file_download( iv_package = lv_package
|
||||||
iv_xstr = lv_xstr ).
|
iv_xstr = lv_xstr ).
|
||||||
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||||
WHEN zif_abapgit_definitions=>c_action-zip_transport. " Export transport as ZIP
|
WHEN zif_abapgit_definitions=>c_action-zip_transport. " Export transports as ZIP
|
||||||
lv_xstr = zcl_abapgit_transport=>zip( ).
|
zcl_abapgit_transport_mass=>run( ).
|
||||||
file_download( iv_package = 'TRANSPORT'
|
|
||||||
iv_xstr = lv_xstr ).
|
|
||||||
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
ev_state = zcl_abapgit_gui=>c_event_state-no_more_act.
|
||||||
WHEN zif_abapgit_definitions=>c_action-zip_object. " Export object as ZIP
|
WHEN zif_abapgit_definitions=>c_action-zip_object. " Export object as ZIP
|
||||||
zcl_abapgit_zip=>export_object( ).
|
zcl_abapgit_zip=>export_object( ).
|
||||||
|
|
|
@ -1,13 +1,16 @@
|
||||||
CLASS zcl_abapgit_transport DEFINITION
|
CLASS zcl_abapgit_transport DEFINITION
|
||||||
PUBLIC
|
PUBLIC
|
||||||
FINAL
|
|
||||||
CREATE PUBLIC .
|
CREATE PUBLIC .
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
|
||||||
CLASS-METHODS zip
|
CLASS-METHODS zip
|
||||||
|
IMPORTING
|
||||||
|
!iv_show_log_popup TYPE abap_bool DEFAULT abap_true
|
||||||
|
!iv_logic TYPE string OPTIONAL
|
||||||
|
!is_trkorr TYPE trwbo_request_header OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_xstr) TYPE xstring
|
VALUE(rv_xstr) TYPE xstring
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS to_tadir
|
CLASS-METHODS to_tadir
|
||||||
|
@ -17,7 +20,7 @@ CLASS zcl_abapgit_transport DEFINITION
|
||||||
VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
PRIVATE SECTION.
|
PROTECTED SECTION.
|
||||||
|
|
||||||
CLASS-METHODS read_requests
|
CLASS-METHODS read_requests
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -38,6 +41,7 @@ CLASS zcl_abapgit_transport DEFINITION
|
||||||
VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
VALUE(rt_tadir) TYPE zif_abapgit_definitions=>ty_tadir_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
PRIVATE SECTION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
@ -168,7 +172,12 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
|
||||||
lt_trkorr TYPE trwbo_request_headers.
|
lt_trkorr TYPE trwbo_request_headers.
|
||||||
|
|
||||||
|
|
||||||
lt_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_transports( ).
|
IF is_trkorr IS SUPPLIED.
|
||||||
|
APPEND is_trkorr TO lt_trkorr.
|
||||||
|
ELSE.
|
||||||
|
lt_trkorr = zcl_abapgit_ui_factory=>get_popups( )->popup_to_select_transports( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
IF lines( lt_trkorr ) = 0.
|
IF lines( lt_trkorr ) = 0.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -188,15 +197,20 @@ CLASS ZCL_ABAPGIT_TRANSPORT IMPLEMENTATION.
|
||||||
ls_data-package = lv_package.
|
ls_data-package = lv_package.
|
||||||
ls_data-dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ).
|
ls_data-dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( )->get_data( ).
|
||||||
|
|
||||||
ls_data-dot_abapgit-folder_logic = zcl_abapgit_ui_factory=>get_popups( )->popup_folder_logic( ).
|
IF iv_logic IS SUPPLIED AND iv_logic IS NOT INITIAL.
|
||||||
|
ls_data-dot_abapgit-folder_logic = iv_logic.
|
||||||
|
ELSE.
|
||||||
|
ls_data-dot_abapgit-folder_logic = zcl_abapgit_ui_factory=>get_popups( )->popup_folder_logic( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
CREATE OBJECT lo_repo
|
CREATE OBJECT lo_repo
|
||||||
EXPORTING
|
EXPORTING
|
||||||
is_data = ls_data.
|
is_data = ls_data.
|
||||||
|
|
||||||
rv_xstr = zcl_abapgit_zip=>export(
|
rv_xstr = zcl_abapgit_zip=>export(
|
||||||
io_repo = lo_repo
|
io_repo = lo_repo
|
||||||
it_filter = lt_tadir ).
|
it_filter = lt_tadir
|
||||||
|
iv_show_log = iv_show_log_popup ).
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
69
src/zcl_abapgit_transport_mass.clas.abap
Normal file
69
src/zcl_abapgit_transport_mass.clas.abap
Normal file
|
@ -0,0 +1,69 @@
|
||||||
|
CLASS zcl_abapgit_transport_mass DEFINITION
|
||||||
|
PUBLIC
|
||||||
|
INHERITING FROM zcl_abapgit_transport
|
||||||
|
FINAL
|
||||||
|
CREATE PUBLIC .
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
CLASS-METHODS run .
|
||||||
|
PROTECTED SECTION.
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
CLASS ZCL_ABAPGIT_TRANSPORT_MASS IMPLEMENTATION.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD run.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lt_trkorr TYPE trwbo_request_headers.
|
||||||
|
|
||||||
|
DATA:
|
||||||
|
lo_transport_zipper TYPE REF TO lcl_transport_zipper,
|
||||||
|
lo_except TYPE REF TO cx_root,
|
||||||
|
lv_folder TYPE string.
|
||||||
|
|
||||||
|
TRY.
|
||||||
|
|
||||||
|
lt_trkorr = lcl_gui=>select_tr_requests( ).
|
||||||
|
|
||||||
|
IF lt_trkorr[] IS NOT INITIAL.
|
||||||
|
|
||||||
|
lv_folder = lcl_gui=>f4_folder( ).
|
||||||
|
|
||||||
|
IF lv_folder IS INITIAL.
|
||||||
|
* Empty folder
|
||||||
|
zcx_abapgit_exception=>raise( 'Empty destination folder' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
* Instantiate transport zipper object that will also create the timestamped output folder
|
||||||
|
CREATE OBJECT lo_transport_zipper TYPE lcl_transport_zipper
|
||||||
|
EXPORTING
|
||||||
|
iv_folder = lv_folder.
|
||||||
|
|
||||||
|
* Generate the local zip files from the given list of transport requests
|
||||||
|
lo_transport_zipper->generate_files(
|
||||||
|
it_trkorr = lt_trkorr
|
||||||
|
iv_logic = zcl_abapgit_ui_factory=>get_popups( )->popup_folder_logic( ) ).
|
||||||
|
|
||||||
|
* Open output folder if user asked it
|
||||||
|
lcl_gui=>open_folder_frontend( lo_transport_zipper->gv_full_folder ).
|
||||||
|
|
||||||
|
ELSE.
|
||||||
|
* No data found for the provided selection criterias
|
||||||
|
zcx_abapgit_exception=>raise( 'No transport requests selected' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CATCH cx_wrong_data
|
||||||
|
zcx_abapgit_exception INTO lo_except.
|
||||||
|
|
||||||
|
MESSAGE lo_except->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
|
||||||
|
|
||||||
|
ENDTRY.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
ENDCLASS.
|
263
src/zcl_abapgit_transport_mass.clas.locals_imp.abap
Normal file
263
src/zcl_abapgit_transport_mass.clas.locals_imp.abap
Normal file
|
@ -0,0 +1,263 @@
|
||||||
|
CLASS lcl_gui DEFINITION FINAL.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
|
||||||
|
CLASS-METHODS f4_folder RETURNING VALUE(rv_folder) TYPE string RAISING zcx_abapgit_exception.
|
||||||
|
CLASS-METHODS open_folder_frontend IMPORTING iv_folder TYPE string.
|
||||||
|
CLASS-METHODS select_tr_requests RETURNING VALUE(rt_trkorr) TYPE trwbo_request_headers.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
CLASS-DATA: gv_last_folder TYPE string.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_gui IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD f4_folder.
|
||||||
|
|
||||||
|
DATA: lv_title TYPE string.
|
||||||
|
|
||||||
|
lv_title = 'Choose the destination folder for the ZIP files'.
|
||||||
|
|
||||||
|
cl_gui_frontend_services=>directory_browse(
|
||||||
|
EXPORTING
|
||||||
|
window_title = lv_title
|
||||||
|
initial_folder = gv_last_folder
|
||||||
|
CHANGING
|
||||||
|
selected_folder = rv_folder
|
||||||
|
EXCEPTIONS
|
||||||
|
cntl_error = 1
|
||||||
|
error_no_gui = 2
|
||||||
|
not_supported_by_gui = 3
|
||||||
|
OTHERS = 4 ).
|
||||||
|
|
||||||
|
IF sy-subrc = 0.
|
||||||
|
gv_last_folder = rv_folder. "Store the last directory for user friendly UI
|
||||||
|
ELSE.
|
||||||
|
zcx_abapgit_exception=>raise( 'Folder matchcode exception' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD open_folder_frontend.
|
||||||
|
|
||||||
|
IF NOT iv_folder IS INITIAL.
|
||||||
|
|
||||||
|
cl_gui_frontend_services=>execute(
|
||||||
|
EXPORTING
|
||||||
|
document = iv_folder
|
||||||
|
EXCEPTIONS
|
||||||
|
cntl_error = 1
|
||||||
|
error_no_gui = 2
|
||||||
|
bad_parameter = 3
|
||||||
|
file_not_found = 4
|
||||||
|
path_not_found = 5
|
||||||
|
file_extension_unknown = 6
|
||||||
|
error_execute_failed = 7
|
||||||
|
OTHERS = 8 ).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
MESSAGE 'Problem when opening output folder' TYPE 'S' DISPLAY LIKE 'E'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD select_tr_requests.
|
||||||
|
|
||||||
|
DATA: ls_popup TYPE strhi_popup,
|
||||||
|
ls_selection TYPE trwbo_selection.
|
||||||
|
|
||||||
|
ls_popup-start_column = 5.
|
||||||
|
ls_popup-start_row = 5.
|
||||||
|
|
||||||
|
*- Prepare the selection ----------------------------------------------*
|
||||||
|
ls_selection-trkorrpattern = space.
|
||||||
|
ls_selection-client = space.
|
||||||
|
ls_selection-stdrequest = space.
|
||||||
|
ls_selection-reqfunctions = 'K'.
|
||||||
|
ls_selection-reqstatus = 'RNODL'.
|
||||||
|
|
||||||
|
*- Call transport selection popup -------------------------------------*
|
||||||
|
CALL FUNCTION 'TRINT_SELECT_REQUESTS'
|
||||||
|
EXPORTING
|
||||||
|
iv_username_pattern = '*'
|
||||||
|
iv_via_selscreen = 'X'
|
||||||
|
is_selection = ls_selection
|
||||||
|
iv_complete_projects = space
|
||||||
|
iv_title = 'ABAPGit Transport Mass Downloader'
|
||||||
|
is_popup = ls_popup
|
||||||
|
IMPORTING
|
||||||
|
et_requests = rt_trkorr
|
||||||
|
EXCEPTIONS
|
||||||
|
action_aborted_by_user = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
CLEAR rt_trkorr.
|
||||||
|
ELSE.
|
||||||
|
SORT rt_trkorr BY trkorr.
|
||||||
|
DELETE ADJACENT DUPLICATES FROM rt_trkorr COMPARING trkorr.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_transport_zipper DEFINITION FINAL.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
* Folder
|
||||||
|
TYPES ty_folder TYPE string.
|
||||||
|
* Filename
|
||||||
|
TYPES ty_filename TYPE string.
|
||||||
|
|
||||||
|
* File extension
|
||||||
|
CONSTANTS gc_zip_ext TYPE string VALUE '.zip' ##NO_TEXT.
|
||||||
|
|
||||||
|
DATA: gv_timestamp TYPE string,
|
||||||
|
gv_separator TYPE c,
|
||||||
|
gv_full_folder TYPE ty_folder READ-ONLY.
|
||||||
|
|
||||||
|
METHODS constructor IMPORTING iv_folder TYPE ty_folder
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
METHODS generate_files IMPORTING it_trkorr TYPE trwbo_request_headers
|
||||||
|
iv_logic TYPE any
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS does_folder_exist IMPORTING iv_folder TYPE string
|
||||||
|
RETURNING VALUE(rv_folder_exist) TYPE abap_bool
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
METHODS get_full_folder IMPORTING iv_folder TYPE ty_folder
|
||||||
|
RETURNING VALUE(rv_full_folder) TYPE ty_folder
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
|
METHODS get_filename IMPORTING is_trkorr TYPE trwbo_request_header
|
||||||
|
RETURNING VALUE(rv_filename) TYPE ty_filename.
|
||||||
|
|
||||||
|
ENDCLASS.
|
||||||
|
|
||||||
|
CLASS lcl_transport_zipper IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD constructor.
|
||||||
|
|
||||||
|
CONCATENATE sy-datlo sy-timlo INTO me->gv_timestamp SEPARATED BY '_'.
|
||||||
|
|
||||||
|
me->gv_full_folder = get_full_folder( iv_folder = iv_folder ).
|
||||||
|
|
||||||
|
cl_gui_frontend_services=>get_file_separator(
|
||||||
|
CHANGING
|
||||||
|
file_separator = gv_separator
|
||||||
|
EXCEPTIONS
|
||||||
|
cntl_error = 1
|
||||||
|
error_no_gui = 2
|
||||||
|
not_supported_by_gui = 3
|
||||||
|
OTHERS = 4 ).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
gv_separator = '\'. "Default MS Windows separator
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD does_folder_exist.
|
||||||
|
|
||||||
|
cl_gui_frontend_services=>directory_exist(
|
||||||
|
EXPORTING
|
||||||
|
directory = iv_folder
|
||||||
|
RECEIVING
|
||||||
|
result = rv_folder_exist
|
||||||
|
EXCEPTIONS
|
||||||
|
cntl_error = 1
|
||||||
|
error_no_gui = 2
|
||||||
|
wrong_parameter = 3
|
||||||
|
not_supported_by_gui = 4
|
||||||
|
OTHERS = 5 ).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( 'Error from cl_gui_frontend_services=>directory_exist' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_full_folder.
|
||||||
|
|
||||||
|
DATA: lv_sep TYPE c,
|
||||||
|
lv_rc TYPE i.
|
||||||
|
|
||||||
|
*-obtain file separator character---------------------------------------
|
||||||
|
cl_gui_frontend_services=>get_file_separator(
|
||||||
|
CHANGING
|
||||||
|
file_separator = lv_sep
|
||||||
|
EXCEPTIONS
|
||||||
|
cntl_error = 1
|
||||||
|
error_no_gui = 2
|
||||||
|
not_supported_by_gui = 3
|
||||||
|
OTHERS = 4 ).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
zcx_abapgit_exception=>raise( 'Internal error getting file separator' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CONCATENATE iv_folder
|
||||||
|
gv_timestamp
|
||||||
|
INTO rv_full_folder SEPARATED BY lv_sep.
|
||||||
|
|
||||||
|
IF does_folder_exist( iv_folder = rv_full_folder ) = abap_false.
|
||||||
|
|
||||||
|
cl_gui_frontend_services=>directory_create(
|
||||||
|
EXPORTING
|
||||||
|
directory = rv_full_folder
|
||||||
|
CHANGING
|
||||||
|
rc = lv_rc " Return Code
|
||||||
|
EXCEPTIONS
|
||||||
|
directory_create_failed = 1
|
||||||
|
cntl_error = 2
|
||||||
|
error_no_gui = 3
|
||||||
|
directory_access_denied = 4
|
||||||
|
directory_already_exists = 5
|
||||||
|
path_not_found = 6
|
||||||
|
unknown_error = 7
|
||||||
|
not_supported_by_gui = 8
|
||||||
|
wrong_parameter = 9
|
||||||
|
OTHERS = 10 ).
|
||||||
|
IF sy-subrc <> 0 AND sy-subrc <> 5.
|
||||||
|
zcx_abapgit_exception=>raise( 'Error from cl_gui_frontend_services=>directory_create' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_filename .
|
||||||
|
|
||||||
|
* Generate filename
|
||||||
|
CONCATENATE is_trkorr-trkorr '_' is_trkorr-as4text '_' gv_timestamp gc_zip_ext
|
||||||
|
INTO rv_filename.
|
||||||
|
|
||||||
|
* Remove reserved characters (for Windows based systems)
|
||||||
|
TRANSLATE rv_filename USING '/ \ : " * > < ? | '.
|
||||||
|
|
||||||
|
CONCATENATE gv_full_folder rv_filename INTO rv_filename SEPARATED BY gv_separator.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD generate_files.
|
||||||
|
|
||||||
|
DATA: ls_trkorr LIKE LINE OF it_trkorr,
|
||||||
|
lv_zipbinstring TYPE xstring.
|
||||||
|
|
||||||
|
LOOP AT it_trkorr INTO ls_trkorr.
|
||||||
|
|
||||||
|
lv_zipbinstring = zcl_abapgit_transport_mass=>zip( is_trkorr = ls_trkorr
|
||||||
|
iv_logic = iv_logic
|
||||||
|
iv_show_log_popup = abap_false ).
|
||||||
|
|
||||||
|
zcl_abapgit_zip=>save_binstring_to_localfile( iv_binstring = lv_zipbinstring
|
||||||
|
iv_filename = get_filename( ls_trkorr ) ).
|
||||||
|
|
||||||
|
ENDLOOP. "it_trkorr
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
ENDCLASS.
|
16
src/zcl_abapgit_transport_mass.clas.xml
Normal file
16
src/zcl_abapgit_transport_mass.clas.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||||
|
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||||
|
<asx:values>
|
||||||
|
<VSEOCLASS>
|
||||||
|
<CLSNAME>ZCL_ABAPGIT_TRANSPORT_MASS</CLSNAME>
|
||||||
|
<LANGU>E</LANGU>
|
||||||
|
<DESCRIPT>Mass Transport to ZIP</DESCRIPT>
|
||||||
|
<STATE>1</STATE>
|
||||||
|
<CLSCCINCL>X</CLSCCINCL>
|
||||||
|
<FIXPT>X</FIXPT>
|
||||||
|
<UNICODE>X</UNICODE>
|
||||||
|
</VSEOCLASS>
|
||||||
|
</asx:values>
|
||||||
|
</asx:abap>
|
||||||
|
</abapGit>
|
|
@ -7,6 +7,7 @@ CLASS zcl_abapgit_zip DEFINITION
|
||||||
CLASS-METHODS export
|
CLASS-METHODS export
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!io_repo TYPE REF TO zcl_abapgit_repo
|
!io_repo TYPE REF TO zcl_abapgit_repo
|
||||||
|
!iv_show_log TYPE abap_bool DEFAULT abap_true
|
||||||
!it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL
|
!it_filter TYPE zif_abapgit_definitions=>ty_tadir_tt OPTIONAL
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_xstr) TYPE xstring
|
VALUE(rv_xstr) TYPE xstring
|
||||||
|
@ -14,13 +15,13 @@ CLASS zcl_abapgit_zip DEFINITION
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS export_object
|
CLASS-METHODS export_object
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS export_package
|
CLASS-METHODS export_package
|
||||||
EXPORTING
|
EXPORTING
|
||||||
!ev_xstr TYPE xstring
|
!ev_xstr TYPE xstring
|
||||||
!ev_package TYPE devclass
|
!ev_package TYPE devclass
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS load
|
CLASS-METHODS load
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_xstr TYPE xstring
|
!iv_xstr TYPE xstring
|
||||||
|
@ -28,6 +29,11 @@ CLASS zcl_abapgit_zip DEFINITION
|
||||||
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt
|
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_files_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
|
CLASS-METHODS save_binstring_to_localfile
|
||||||
|
IMPORTING iv_filename TYPE string
|
||||||
|
iv_binstring TYPE xstring
|
||||||
|
RAISING zcx_abapgit_exception.
|
||||||
|
|
||||||
PROTECTED SECTION.
|
PROTECTED SECTION.
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
|
|
||||||
|
@ -50,7 +56,7 @@ CLASS zcl_abapgit_zip DEFINITION
|
||||||
CHANGING
|
CHANGING
|
||||||
!ct_files TYPE zif_abapgit_definitions=>ty_files_tt
|
!ct_files TYPE zif_abapgit_definitions=>ty_files_tt
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
CLASS-METHODS unzip_file
|
CLASS-METHODS unzip_file
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_xstr TYPE xstring
|
!iv_xstr TYPE xstring
|
||||||
|
@ -104,7 +110,7 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
|
||||||
lt_zip = io_repo->get_files_local( ii_log = li_log
|
lt_zip = io_repo->get_files_local( ii_log = li_log
|
||||||
it_filter = it_filter ).
|
it_filter = it_filter ).
|
||||||
|
|
||||||
IF li_log->count( ) > 0.
|
IF li_log->count( ) > 0 AND iv_show_log = abap_true.
|
||||||
zcl_abapgit_log_viewer=>show_log( iv_header_text = 'Zip Export Log'
|
zcl_abapgit_log_viewer=>show_log( iv_header_text = 'Zip Export Log'
|
||||||
ii_log = li_log ).
|
ii_log = li_log ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -119,7 +125,6 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
|
||||||
DATA: ls_tadir TYPE zif_abapgit_definitions=>ty_tadir,
|
DATA: ls_tadir TYPE zif_abapgit_definitions=>ty_tadir,
|
||||||
lv_folder TYPE string,
|
lv_folder TYPE string,
|
||||||
lv_fullpath TYPE string,
|
lv_fullpath TYPE string,
|
||||||
lt_rawdata TYPE solix_tab,
|
|
||||||
lv_sep TYPE c LENGTH 1,
|
lv_sep TYPE c LENGTH 1,
|
||||||
ls_files_item TYPE zcl_abapgit_objects=>ty_serialization.
|
ls_files_item TYPE zcl_abapgit_objects=>ty_serialization.
|
||||||
|
|
||||||
|
@ -162,43 +167,9 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
|
||||||
LOOP AT ls_files_item-files ASSIGNING <ls_file>.
|
LOOP AT ls_files_item-files ASSIGNING <ls_file>.
|
||||||
CONCATENATE lv_folder lv_sep <ls_file>-filename INTO lv_fullpath.
|
CONCATENATE lv_folder lv_sep <ls_file>-filename INTO lv_fullpath.
|
||||||
|
|
||||||
lt_rawdata = cl_bcs_convert=>xstring_to_solix( <ls_file>-data ).
|
save_binstring_to_localfile( iv_filename = lv_fullpath
|
||||||
|
iv_binstring = <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.
|
|
||||||
zcx_abapgit_exception=>raise( 'error from gui_download' ).
|
|
||||||
ENDIF.
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
@ -305,6 +276,51 @@ CLASS ZCL_ABAPGIT_ZIP IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
|
METHOD save_binstring_to_localfile.
|
||||||
|
|
||||||
|
DATA lt_rawdata TYPE solix_tab.
|
||||||
|
|
||||||
|
lt_rawdata = cl_bcs_convert=>xstring_to_solix( iv_binstring ).
|
||||||
|
|
||||||
|
cl_gui_frontend_services=>gui_download(
|
||||||
|
EXPORTING
|
||||||
|
bin_filesize = xstrlen( iv_binstring )
|
||||||
|
filename = iv_filename
|
||||||
|
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.
|
||||||
|
zcx_abapgit_exception=>raise( 'error from gui_download' ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
||||||
METHOD unzip_file.
|
METHOD unzip_file.
|
||||||
|
|
||||||
DATA: lo_zip TYPE REF TO cl_abap_zip,
|
DATA: lo_zip TYPE REF TO cl_abap_zip,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user