*&---------------------------------------------------------------------*
*& INCLUDE ZBCC0004 - upload/download file reuse routine
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form GET_FILE_NAME
*&---------------------------------------------------------------------*
* get upload file name
*----------------------------------------------------------------------*
FORM get_file_name USING f_file. "upload file path and name
*DATA WINDOW_TITLE TYPE STRING.
*DATA DEFAULT_EXTENSION TYPE STRING.
*DATA DEFAULT_FILENAME TYPE STRING.
*DATA FILE_FILTER TYPE STRING.
*DATA WITH_ENCODING TYPE ABAP_BOOL.
*DATA INITIAL_DIRECTORY TYPE STRING.
*DATA MULTISELECTION TYPE ABAP_BOOL.
DATA lt_file TYPE filetable.
DATA: lw_file TYPE LINE OF filetable.
DATA l_rc TYPE i.
DATA l_user_action TYPE i.
*DATA FILE_ENCODING TYPE ABAP_ENCODING.
**********************************
cl_gui_frontend_services=>file_open_dialog(
EXPORTING
window_title = 'Select a File to Upload'
* default_extension = default_extension
* default_filename = default_filename
* file_filter = file_filter
* with_encoding = with_encoding
* initial_directory = initial_directory
* multiselection = multiselection
CHANGING
file_table = lt_file
rc = l_rc
user_action = l_user_action
* file_encoding = file_encoding
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5
).
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE 'Open file dialog error!' TYPE 'S'.
ELSE.
CHECK l_user_action IS INITIAL.
READ TABLE lt_file INTO lw_file
INDEX 1.
IF sy-subrc = 0.
f_file = lw_file-filename.
ENDIF.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form UPLOAD_FILE_TAB_TEXT
*&---------------------------------------------------------------------*
* upload TAB見分割之 text 檔案
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM upload_file_tab_text TABLES ft_upload
USING f_file.
DATA l_filename TYPE string.
*DATA FILETYPE TYPE CHAR10.
*DATA HAS_FIELD_SEPARATOR TYPE CHAR01.
*DATA HEADER_LENGTH TYPE I.
*DATA READ_BY_LINE TYPE CHAR01.
*DATA DAT_MODE TYPE CHAR01.
*DATA CODEPAGE TYPE ABAP_ENCODING.
*DATA IGNORE_CERR TYPE ABAP_BOOL.
*DATA REPLACEMENT TYPE ABAP_REPL.
*DATA VIRUS_SCAN_PROFILE TYPE VSCAN_PROFILE.
*DATA FILELENGTH TYPE I.
*DATA HEADER TYPE XSTRING.
*DATA DATA_TAB TYPE STANDARD TABLE.
*DATA ISSCANPERFORMED TYPE CHAR01.
l_filename = f_file.
REFRESH: ft_upload.
cl_gui_frontend_services=>gui_upload(
EXPORTING
filename = l_filename
filetype = 'ASC'
has_field_separator = 'X'
* header_length =
* read_by_line = 'X'
* dat_mode = SPACE
* codepage = SPACE
* ignore_cerr = ABAP_TRUE
* replacement = '#'
* virus_scan_profile = virus_scan_profile
* IMPORTING
* filelength = filelength
* header = header
CHANGING
data_tab = ft_upload[]
* isscanperformed = SPACE
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
not_supported_by_gui = 17
error_no_gui = 18
OTHERS = 19
).
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE 'Upload file error!' TYPE 'S'
DISPLAY LIKE 'E'.
* STOP.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_FILE_NAME_C
*&---------------------------------------------------------------------*
* get download file name
*----------------------------------------------------------------------*
FORM get_file_name_c USING f_file.
*DATA WINDOW_TITLE TYPE STRING.
*DATA DEFAULT_EXTENSION TYPE STRING.
*DATA DEFAULT_FILE_NAME TYPE STRING.
*DATA WITH_ENCODING TYPE ABAP_BOOL.
*DATA FILE_FILTER TYPE STRING.
*DATA INITIAL_DIRECTORY TYPE STRING.
*DATA PROMPT_ON_OVERWRITE TYPE ABAP_BOOL.
DATA l_filename TYPE string.
DATA l_path TYPE string.
DATA l_fullpath TYPE string.
DATA l_user_action TYPE i.
*DATA FILE_ENCODING TYPE ABAP_ENCODING.
cl_gui_frontend_services=>file_save_dialog(
EXPORTING
window_title = 'Select a File to Download'
* default_extension = default_extension
* default_file_name = default_file_name
* with_encoding = with_encoding
* file_filter = file_filter
* initial_directory = initial_directory
* prompt_on_overwrite = 'X'
CHANGING
filename = l_filename
path = l_path
fullpath = l_fullpath
user_action = l_user_action
* file_encoding = file_encoding
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
invalid_default_file_name = 4
OTHERS = 5
).
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
CHECK l_user_action IS INITIAL.
f_file = l_fullpath.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DOWNLOAD_FILE_TAB_TEXT
*&---------------------------------------------------------------------*
* download TAB鍵分割之 text 檔案
*----------------------------------------------------------------------*
FORM download_file_tab_text TABLES ft_data
USING f_file.
*DATA BIN_FILESIZE TYPE I.
DATA l_filename TYPE string.
*DATA FILETYPE TYPE CHAR10.
*DATA APPEND TYPE CHAR01.
*DATA WRITE_FIELD_SEPARATOR TYPE CHAR01.
*DATA HEADER TYPE XSTRING.
*DATA TRUNC_TRAILING_BLANKS TYPE CHAR01.
*DATA WRITE_LF TYPE CHAR01.
*DATA COL_SELECT TYPE CHAR01.
*DATA COL_SELECT_MASK TYPE CHAR255.
*DATA DAT_MODE TYPE CHAR01.
*DATA CONFIRM_OVERWRITE TYPE CHAR01.
*DATA NO_AUTH_CHECK TYPE CHAR01.
*DATA CODEPAGE TYPE ABAP_ENCODING.
*DATA IGNORE_CERR TYPE ABAP_BOOL.
*DATA REPLACEMENT TYPE ABAP_REPL.
*DATA WRITE_BOM TYPE ABAP_BOOL.
*DATA TRUNC_TRAILING_BLANKS_EOL TYPE CHAR01.
*DATA WK1_N_FORMAT TYPE C.
*DATA WK1_N_SIZE TYPE C.
*DATA WK1_T_FORMAT TYPE C.
*DATA WK1_T_SIZE TYPE C.
*DATA SHOW_TRANSFER_STATUS TYPE CHAR01.
*DATA FIELDNAMES TYPE STANDARD TABLE.
*DATA WRITE_LF_AFTER_LAST_LINE TYPE ABAP_BOOL.
*DATA VIRUS_SCAN_PROFILE TYPE VSCAN_PROFILE.
*DATA FILELENGTH TYPE I.
*DATA DATA_TAB TYPE STANDARD TABLE.
l_filename = f_file.
cl_gui_frontend_services=>gui_download(
EXPORTING
* bin_filesize = bin_filesize
filename = l_filename
filetype = 'ASC'
* append = SPACE
write_field_separator = 'X'
* header = '00'
* trunc_trailing_blanks = SPACE
* write_lf = 'X'
* col_select = SPACE
* col_select_mask = SPACE
* dat_mode = SPACE
* confirm_overwrite = SPACE
* no_auth_check = SPACE
* codepage = SPACE
* ignore_cerr = ABAP_TRUE
* replacement = '#'
* write_bom = SPACE
* trunc_trailing_blanks_eol = 'X'
* wk1_n_format = SPACE
* wk1_n_size = SPACE
* wk1_t_format = SPACE
* wk1_t_size = SPACE
* show_transfer_status = 'X'
* fieldnames = fieldnames
* write_lf_after_last_line = 'X'
* virus_scan_profile = '/SCET/GUI_DOWNLOAD'
* IMPORTING
* filelength = filelength
CHANGING
data_tab = ft_data[]
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.
* Implement suitable error handling here
MESSAGE 'Download file error!' TYPE 'S'
DISPLAY LIKE 'E'.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form UPLOD_EXCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM uplod_excel TABLES ft_data
USING f_from_row
f_from_col
f_to_col
f_file.
DATA lt_data TYPE STANDARD TABLE OF alsmex_tabline
WITH HEADER LINE.
FIELD-SYMBOLS: <lfs>.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = f_file
i_begin_col = f_from_col
i_begin_row = f_from_row
i_end_col = f_to_col
i_end_row = 9999
TABLES
intern = lt_data
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SORT lt_data BY row col.
CLEAR: ft_data.
LOOP AT lt_data.
ASSIGN COMPONENT lt_data-col OF STRUCTURE ft_data TO <lfs>.
IF sy-subrc = 0.
<lfs> = lt_data-value.
ENDIF.
AT END OF row.
APPEND ft_data.
CLEAR: ft_data.
ENDAT."AT END OF row
ENDLOOP."LOOP AT lt_data
ENDFORM.