abapGit/src/cts/zcl_abapgit_transport_mass.clas.locals_imp.abap
francisco-milan 7bff32b718
Fix typos and adjust comments within source code. (#6778)
Co-authored-by: Lars Hvam <larshp@hotmail.com>
2024-01-28 09:21:14 +01:00

214 lines
5.6 KiB
ABAP

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
RAISING
zcx_abapgit_exception.
CLASS-METHODS select_tr_requests
RETURNING
VALUE(rt_trkorr) TYPE trwbo_request_headers.
ENDCLASS.
CLASS lcl_gui IMPLEMENTATION.
METHOD f4_folder.
DATA: lv_title TYPE string,
lo_fe_serv TYPE REF TO zif_abapgit_frontend_services.
lo_fe_serv = zcl_abapgit_ui_factory=>get_frontend_services( ).
lv_title = 'Choose the destination folder for the ZIP files'.
lo_fe_serv->directory_browse(
EXPORTING
iv_window_title = lv_title
CHANGING
cv_selected_folder = rv_folder ).
ENDMETHOD.
METHOD open_folder_frontend.
IF iv_folder IS INITIAL.
RETURN.
ENDIF.
zcl_abapgit_ui_factory=>get_frontend_services( )->execute( iv_document = iv_folder ).
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.
TYPES ty_folder TYPE string.
TYPES ty_filename TYPE string.
CONSTANTS c_zip_ext TYPE string VALUE '.zip'.
METHODS constructor
IMPORTING
iv_folder TYPE ty_folder
RAISING
zcx_abapgit_exception.
METHODS generate_files
IMPORTING
it_trkorr TYPE trwbo_request_headers
ig_logic TYPE any
RAISING
zcx_abapgit_exception.
METHODS get_folder
RETURNING
VALUE(rv_full_folder) TYPE ty_folder.
CLASS-METHODS does_folder_exist
IMPORTING
iv_folder TYPE string
RETURNING
VALUE(rv_folder_exist) TYPE abap_bool
RAISING
zcx_abapgit_exception.
PRIVATE SECTION.
DATA: mv_timestamp TYPE string,
mv_separator TYPE c,
mv_full_folder TYPE ty_folder.
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.
DATA lo_fe_serv TYPE REF TO zif_abapgit_frontend_services.
lo_fe_serv = zcl_abapgit_ui_factory=>get_frontend_services( ).
mv_timestamp = |{ sy-datlo }_{ sy-timlo }|.
mv_full_folder = get_full_folder( iv_folder ).
TRY.
lo_fe_serv->get_file_separator( CHANGING cv_file_separator = mv_separator ).
CATCH zcx_abapgit_exception.
"Default MS Windows separator
mv_separator = '\'.
ENDTRY.
ENDMETHOD.
METHOD get_folder.
rv_full_folder = mv_full_folder.
ENDMETHOD.
METHOD does_folder_exist.
rv_folder_exist = zcl_abapgit_ui_factory=>get_frontend_services( )->directory_exist( iv_folder ).
ENDMETHOD.
METHOD get_full_folder.
DATA: lv_sep TYPE c,
lv_rc TYPE i,
lo_fe_serv TYPE REF TO zif_abapgit_frontend_services.
lo_fe_serv = zcl_abapgit_ui_factory=>get_frontend_services( ).
lo_fe_serv->get_file_separator( CHANGING cv_file_separator = lv_sep ).
rv_full_folder = |{ iv_folder }{ lv_sep }{ mv_timestamp }|.
IF does_folder_exist( rv_full_folder ) = abap_false.
lo_fe_serv->directory_create(
EXPORTING
iv_directory = rv_full_folder
CHANGING
cv_rc = lv_rc ).
ENDIF.
ENDMETHOD.
METHOD get_filename.
" Generate filename
rv_filename = |{ is_trkorr-trkorr }_{ is_trkorr-as4text }_{ mv_timestamp }{ c_zip_ext }|.
" Remove reserved characters (for Windows based systems)
TRANSLATE rv_filename USING '/ \ : " * > < ? | '.
rv_filename = |{ mv_full_folder }{ mv_separator }{ rv_filename }|.
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 = ig_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.
ENDMETHOD.
ENDCLASS.