diff --git a/src/cts/zcl_abapgit_transport_mass.clas.locals_imp.abap b/src/cts/zcl_abapgit_transport_mass.clas.locals_imp.abap index 3947526e5..2b2e4eb79 100644 --- a/src/cts/zcl_abapgit_transport_mass.clas.locals_imp.abap +++ b/src/cts/zcl_abapgit_transport_mass.clas.locals_imp.abap @@ -1,13 +1,21 @@ 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. + 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. PRIVATE SECTION. - CLASS-DATA: gv_last_folder TYPE string. + CLASS-DATA gv_last_folder TYPE string. ENDCLASS. @@ -15,52 +23,30 @@ CLASS lcl_gui IMPLEMENTATION. METHOD f4_folder. - DATA: lv_title TYPE string. + 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'. - cl_gui_frontend_services=>directory_browse( + lo_fe_serv->directory_browse( EXPORTING - window_title = lv_title - initial_folder = gv_last_folder + iv_window_title = lv_title + iv_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 ). + cv_selected_folder = rv_folder ). - 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. + "Store the last directory for user friendly UI + gv_last_folder = rv_folder. 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. - + IF iv_folder IS INITIAL. + RETURN. ENDIF. + zcl_abapgit_ui_factory=>get_frontend_services( )->execute( iv_document = iv_folder ). ENDMETHOD. METHOD select_tr_requests. @@ -71,14 +57,14 @@ CLASS lcl_gui IMPLEMENTATION. ls_popup-start_column = 5. ls_popup-start_row = 5. -*- Prepare the selection ----------------------------------------------* + " 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 transport selection popup CALL FUNCTION 'TRINT_SELECT_REQUESTS' EXPORTING iv_username_pattern = '*' @@ -104,61 +90,74 @@ CLASS lcl_gui IMPLEMENTATION. ENDCLASS. CLASS lcl_transport_zipper DEFINITION FINAL. - PUBLIC SECTION. TYPES ty_folder TYPE string. TYPES ty_filename TYPE string. -* File extension CONSTANTS c_zip_ext TYPE string VALUE '.zip'. - METHODS constructor IMPORTING iv_folder TYPE ty_folder - RAISING zcx_abapgit_exception. + 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 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. + 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. + 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_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. + 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. - CONCATENATE sy-datlo sy-timlo INTO mv_timestamp SEPARATED BY '_'. + lo_fe_serv = zcl_abapgit_ui_factory=>get_frontend_services( ). + mv_timestamp = |{ sy-datlo }_{ sy-timlo }|. mv_full_folder = get_full_folder( iv_folder ). - cl_gui_frontend_services=>get_file_separator( - CHANGING - file_separator = mv_separator - EXCEPTIONS - cntl_error = 1 - error_no_gui = 2 - not_supported_by_gui = 3 - OTHERS = 4 ). - IF sy-subrc <> 0. - mv_separator = '\'. "Default MS Windows separator - ENDIF. - + 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. @@ -166,82 +165,38 @@ CLASS lcl_transport_zipper IMPLEMENTATION. 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. - + rv_folder_exist = zcl_abapgit_ui_factory=>get_frontend_services( )->directory_exist( iv_directory = iv_folder ). ENDMETHOD. METHOD get_full_folder. - DATA: lv_sep TYPE c, - lv_rc TYPE i. + DATA: lv_sep TYPE c, + lv_rc TYPE i, + lo_fe_serv TYPE REF TO zif_abapgit_frontend_services. -*-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. + lo_fe_serv = zcl_abapgit_ui_factory=>get_frontend_services( ). - CONCATENATE iv_folder - mv_timestamp - INTO rv_full_folder SEPARATED BY lv_sep. + 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. - - cl_gui_frontend_services=>directory_create( + lo_fe_serv->directory_create( EXPORTING - directory = rv_full_folder + iv_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. - + cv_rc = lv_rc ). ENDIF. - ENDMETHOD. METHOD get_filename. -* Generate filename - CONCATENATE is_trkorr-trkorr '_' is_trkorr-as4text '_' mv_timestamp c_zip_ext - INTO rv_filename. + " Generate filename + rv_filename = |{ is_trkorr-trkorr }_{ is_trkorr-as4text }_{ mv_timestamp }{ c_zip_ext }|. -* Remove reserved characters (for Windows based systems) + " Remove reserved characters (for Windows based systems) TRANSLATE rv_filename USING '/ \ : " * > < ? | '. - CONCATENATE mv_full_folder rv_filename INTO rv_filename SEPARATED BY mv_separator. + rv_filename = |{ mv_full_folder }{ mv_separator }{ rv_filename }|. ENDMETHOD. diff --git a/src/ui/zcl_abapgit_frontend_services.clas.abap b/src/ui/zcl_abapgit_frontend_services.clas.abap index b2a3cc28f..dfa0308c9 100644 --- a/src/ui/zcl_abapgit_frontend_services.clas.abap +++ b/src/ui/zcl_abapgit_frontend_services.clas.abap @@ -299,4 +299,43 @@ CLASS ZCL_ABAPGIT_FRONTEND_SERVICES IMPLEMENTATION. ENDIF. ENDMETHOD. + METHOD zif_abapgit_frontend_services~directory_exist. + cl_gui_frontend_services=>directory_exist( + EXPORTING + directory = iv_directory + RECEIVING + result = rv_exists + 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_t100( ). + ENDIF. + ENDMETHOD. + + METHOD zif_abapgit_frontend_services~directory_create. + cl_gui_frontend_services=>directory_create( + EXPORTING + directory = iv_directory + CHANGING + rc = cv_rc + 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. + zcx_abapgit_exception=>raise_t100( ). + ENDIF. + ENDMETHOD. + ENDCLASS. diff --git a/src/ui/zif_abapgit_frontend_services.intf.abap b/src/ui/zif_abapgit_frontend_services.intf.abap index f54c39cb9..38943c48c 100644 --- a/src/ui/zif_abapgit_frontend_services.intf.abap +++ b/src/ui/zif_abapgit_frontend_services.intf.abap @@ -8,7 +8,7 @@ INTERFACE zif_abapgit_frontend_services PUBLIC. RETURNING VALUE(rv_xstr) TYPE xstring RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. METHODS file_download IMPORTING !iv_path TYPE string @@ -23,7 +23,7 @@ INTERFACE zif_abapgit_frontend_services PUBLIC. RETURNING VALUE(rv_path) TYPE string RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. METHODS show_file_open_dialog IMPORTING !iv_title TYPE string @@ -32,7 +32,7 @@ INTERFACE zif_abapgit_frontend_services PUBLIC. RETURNING VALUE(rv_path) TYPE string RAISING - zcx_abapgit_exception . + zcx_abapgit_exception. METHODS clipboard_export IMPORTING @@ -82,4 +82,20 @@ INTERFACE zif_abapgit_frontend_services PUBLIC. RAISING zcx_abapgit_exception. + METHODS directory_exist + IMPORTING + iv_directory TYPE string + RETURNING + VALUE(rv_exists) TYPE abap_bool + RAISING + zcx_abapgit_exception. + + METHODS directory_create + IMPORTING + iv_directory TYPE string + CHANGING + cv_rc TYPE i + RAISING + zcx_abapgit_exception. + ENDINTERFACE.