Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x | 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.
|