mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Decouple last direct usage of CL_GUI_FRONTEND_SERVICES
(#5145)
* Add new methods directory_create and directory_exis * clean up whitespace * normalize whitespace, formatting, comments * decouple direct usage of cl_gui_frontend_services * downport + concatenate to string template * move param to single line Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
928300a5c2
commit
510441d486
|
@ -1,13 +1,21 @@
|
||||||
CLASS lcl_gui DEFINITION FINAL.
|
CLASS lcl_gui DEFINITION FINAL.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
CLASS-METHODS f4_folder
|
||||||
CLASS-METHODS f4_folder RETURNING VALUE(rv_folder) TYPE string RAISING zcx_abapgit_exception.
|
RETURNING
|
||||||
CLASS-METHODS open_folder_frontend IMPORTING iv_folder TYPE string.
|
VALUE(rv_folder) TYPE string
|
||||||
CLASS-METHODS select_tr_requests RETURNING VALUE(rt_trkorr) TYPE trwbo_request_headers.
|
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.
|
PRIVATE SECTION.
|
||||||
CLASS-DATA: gv_last_folder TYPE string.
|
CLASS-DATA gv_last_folder TYPE string.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
|
@ -15,52 +23,30 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD f4_folder.
|
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'.
|
lv_title = 'Choose the destination folder for the ZIP files'.
|
||||||
|
|
||||||
cl_gui_frontend_services=>directory_browse(
|
lo_fe_serv->directory_browse(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
window_title = lv_title
|
iv_window_title = lv_title
|
||||||
initial_folder = gv_last_folder
|
iv_initial_folder = gv_last_folder
|
||||||
CHANGING
|
CHANGING
|
||||||
selected_folder = rv_folder
|
cv_selected_folder = rv_folder ).
|
||||||
EXCEPTIONS
|
|
||||||
cntl_error = 1
|
|
||||||
error_no_gui = 2
|
|
||||||
not_supported_by_gui = 3
|
|
||||||
OTHERS = 4 ).
|
|
||||||
|
|
||||||
IF sy-subrc = 0.
|
"Store the last directory for user friendly UI
|
||||||
gv_last_folder = rv_folder. "Store the last directory for user friendly UI
|
gv_last_folder = rv_folder.
|
||||||
ELSE.
|
|
||||||
zcx_abapgit_exception=>raise( 'Folder matchcode exception' ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD open_folder_frontend.
|
METHOD open_folder_frontend.
|
||||||
|
IF iv_folder IS INITIAL.
|
||||||
IF NOT iv_folder IS INITIAL.
|
RETURN.
|
||||||
|
|
||||||
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.
|
ENDIF.
|
||||||
|
|
||||||
|
zcl_abapgit_ui_factory=>get_frontend_services( )->execute( iv_document = iv_folder ).
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD select_tr_requests.
|
METHOD select_tr_requests.
|
||||||
|
@ -71,14 +57,14 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
ls_popup-start_column = 5.
|
ls_popup-start_column = 5.
|
||||||
ls_popup-start_row = 5.
|
ls_popup-start_row = 5.
|
||||||
|
|
||||||
*- Prepare the selection ----------------------------------------------*
|
" Prepare the selection
|
||||||
ls_selection-trkorrpattern = space.
|
ls_selection-trkorrpattern = space.
|
||||||
ls_selection-client = space.
|
ls_selection-client = space.
|
||||||
ls_selection-stdrequest = space.
|
ls_selection-stdrequest = space.
|
||||||
ls_selection-reqfunctions = 'K'.
|
ls_selection-reqfunctions = 'K'.
|
||||||
ls_selection-reqstatus = 'RNODL'.
|
ls_selection-reqstatus = 'RNODL'.
|
||||||
|
|
||||||
*- Call transport selection popup -------------------------------------*
|
" Call transport selection popup
|
||||||
CALL FUNCTION 'TRINT_SELECT_REQUESTS'
|
CALL FUNCTION 'TRINT_SELECT_REQUESTS'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
iv_username_pattern = '*'
|
iv_username_pattern = '*'
|
||||||
|
@ -104,61 +90,74 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_transport_zipper DEFINITION FINAL.
|
CLASS lcl_transport_zipper DEFINITION FINAL.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
TYPES ty_folder TYPE string.
|
TYPES ty_folder TYPE string.
|
||||||
TYPES ty_filename TYPE string.
|
TYPES ty_filename TYPE string.
|
||||||
|
|
||||||
* File extension
|
|
||||||
CONSTANTS c_zip_ext TYPE string VALUE '.zip'.
|
CONSTANTS c_zip_ext TYPE string VALUE '.zip'.
|
||||||
|
|
||||||
METHODS constructor IMPORTING iv_folder TYPE ty_folder
|
METHODS constructor
|
||||||
RAISING zcx_abapgit_exception.
|
IMPORTING
|
||||||
|
iv_folder TYPE ty_folder
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
METHODS generate_files IMPORTING it_trkorr TYPE trwbo_request_headers
|
METHODS generate_files
|
||||||
ig_logic TYPE any
|
IMPORTING
|
||||||
RAISING zcx_abapgit_exception.
|
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
|
CLASS-METHODS does_folder_exist
|
||||||
RETURNING VALUE(rv_folder_exist) TYPE abap_bool
|
IMPORTING
|
||||||
RAISING zcx_abapgit_exception.
|
iv_folder TYPE string
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_folder_exist) TYPE abap_bool
|
||||||
|
RAISING
|
||||||
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA: mv_timestamp TYPE string,
|
DATA: mv_timestamp TYPE string,
|
||||||
mv_separator TYPE c,
|
mv_separator TYPE c,
|
||||||
mv_full_folder TYPE ty_folder.
|
mv_full_folder TYPE ty_folder.
|
||||||
|
|
||||||
METHODS get_full_folder IMPORTING iv_folder TYPE ty_folder
|
METHODS get_full_folder
|
||||||
RETURNING VALUE(rv_full_folder) TYPE ty_folder
|
IMPORTING
|
||||||
RAISING zcx_abapgit_exception.
|
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
|
METHODS get_filename
|
||||||
RETURNING VALUE(rv_filename) TYPE ty_filename.
|
IMPORTING
|
||||||
|
is_trkorr TYPE trwbo_request_header
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_filename) TYPE ty_filename.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_transport_zipper IMPLEMENTATION.
|
CLASS lcl_transport_zipper IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD constructor.
|
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 ).
|
mv_full_folder = get_full_folder( iv_folder ).
|
||||||
|
|
||||||
cl_gui_frontend_services=>get_file_separator(
|
TRY.
|
||||||
CHANGING
|
lo_fe_serv->get_file_separator( CHANGING cv_file_separator = mv_separator ).
|
||||||
file_separator = mv_separator
|
CATCH zcx_abapgit_exception.
|
||||||
EXCEPTIONS
|
"Default MS Windows separator
|
||||||
cntl_error = 1
|
mv_separator = '\'.
|
||||||
error_no_gui = 2
|
ENDTRY.
|
||||||
not_supported_by_gui = 3
|
|
||||||
OTHERS = 4 ).
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
mv_separator = '\'. "Default MS Windows separator
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD get_folder.
|
METHOD get_folder.
|
||||||
|
@ -166,82 +165,38 @@ CLASS lcl_transport_zipper IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD does_folder_exist.
|
METHOD does_folder_exist.
|
||||||
|
rv_folder_exist = zcl_abapgit_ui_factory=>get_frontend_services( )->directory_exist( iv_directory = iv_folder ).
|
||||||
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.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD get_full_folder.
|
METHOD get_full_folder.
|
||||||
|
|
||||||
DATA: lv_sep TYPE c,
|
DATA: lv_sep TYPE c,
|
||||||
lv_rc TYPE i.
|
lv_rc TYPE i,
|
||||||
|
lo_fe_serv TYPE REF TO zif_abapgit_frontend_services.
|
||||||
|
|
||||||
*-obtain file separator character---------------------------------------
|
lo_fe_serv = zcl_abapgit_ui_factory=>get_frontend_services( ).
|
||||||
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
|
lo_fe_serv->get_file_separator( CHANGING cv_file_separator = lv_sep ).
|
||||||
mv_timestamp
|
rv_full_folder = |{ iv_folder }{ lv_sep }{ mv_timestamp }|.
|
||||||
INTO rv_full_folder SEPARATED BY lv_sep.
|
|
||||||
|
|
||||||
IF does_folder_exist( rv_full_folder ) = abap_false.
|
IF does_folder_exist( rv_full_folder ) = abap_false.
|
||||||
|
lo_fe_serv->directory_create(
|
||||||
cl_gui_frontend_services=>directory_create(
|
|
||||||
EXPORTING
|
EXPORTING
|
||||||
directory = rv_full_folder
|
iv_directory = rv_full_folder
|
||||||
CHANGING
|
CHANGING
|
||||||
rc = lv_rc " Return Code
|
cv_rc = lv_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 AND sy-subrc <> 5.
|
|
||||||
zcx_abapgit_exception=>raise( 'Error from cl_gui_frontend_services=>directory_create' ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD get_filename.
|
METHOD get_filename.
|
||||||
|
|
||||||
* Generate filename
|
" Generate filename
|
||||||
CONCATENATE is_trkorr-trkorr '_' is_trkorr-as4text '_' mv_timestamp c_zip_ext
|
rv_filename = |{ is_trkorr-trkorr }_{ is_trkorr-as4text }_{ mv_timestamp }{ c_zip_ext }|.
|
||||||
INTO rv_filename.
|
|
||||||
|
|
||||||
* Remove reserved characters (for Windows based systems)
|
" Remove reserved characters (for Windows based systems)
|
||||||
TRANSLATE rv_filename USING '/ \ : " * > < ? | '.
|
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.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -299,4 +299,43 @@ CLASS ZCL_ABAPGIT_FRONTEND_SERVICES IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDMETHOD.
|
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.
|
ENDCLASS.
|
||||||
|
|
|
@ -8,7 +8,7 @@ INTERFACE zif_abapgit_frontend_services PUBLIC.
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_xstr) TYPE xstring
|
VALUE(rv_xstr) TYPE xstring
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
METHODS file_download
|
METHODS file_download
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_path TYPE string
|
!iv_path TYPE string
|
||||||
|
@ -23,7 +23,7 @@ INTERFACE zif_abapgit_frontend_services PUBLIC.
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_path) TYPE string
|
VALUE(rv_path) TYPE string
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
METHODS show_file_open_dialog
|
METHODS show_file_open_dialog
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_title TYPE string
|
!iv_title TYPE string
|
||||||
|
@ -32,7 +32,7 @@ INTERFACE zif_abapgit_frontend_services PUBLIC.
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_path) TYPE string
|
VALUE(rv_path) TYPE string
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception.
|
||||||
|
|
||||||
METHODS clipboard_export
|
METHODS clipboard_export
|
||||||
IMPORTING
|
IMPORTING
|
||||||
|
@ -82,4 +82,20 @@ INTERFACE zif_abapgit_frontend_services PUBLIC.
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception.
|
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.
|
ENDINTERFACE.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user