Code: Alles auswählen.
DATA: xls TYPE xstring.
DATA: solix_tab TYPE solix_tab.
PARAMETERS: p_file TYPE file_table-filename.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f4_for_file CHANGING p_file.
START-OF-SELECTION.
PERFORM get_data_from_xls USING p_file CHANGING xls.
PERFORM download_xls USING xls.
FORM get_data_from_xls USING file TYPE file_table-filename
CHANGING excel TYPE xstring.
TRY.
DATA: filesize TYPE w3param-cont_len.
DATA: bin_data TYPE w3mimetabtype.
cl_gui_frontend_services=>gui_upload( EXPORTING
filename = CONV #( file )
filetype = 'BIN'
IMPORTING
filelength = filesize
CHANGING
data_tab = bin_data ).
* solix -> xstring
excel = cl_bcs_convert=>solix_to_xstring( it_solix = bin_data ).
CATCH cx_root INTO DATA(e_text).
MESSAGE e_text->get_text( ) TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
ENDFORM.
FORM f4_for_file CHANGING filename TYPE file_table-filename.
DATA: rc TYPE i.
DATA: files TYPE filetable.
DATA: action TYPE i.
CLEAR files.
TRY.
cl_gui_frontend_services=>file_open_dialog( EXPORTING
file_filter = |xlsx (*.xlsx)\|*.xlsx\|{ cl_gui_frontend_services=>filetype_all }|
CHANGING
file_table = files
rc = rc
user_action = action ).
IF action = cl_gui_frontend_services=>action_ok.
IF lines( files ) > 0.
filename = files[ 1 ]-filename.
ENDIF.
ENDIF.
CATCH cx_root INTO DATA(e_text).
MESSAGE e_text->get_text( ) TYPE 'I'.
ENDTRY.
ENDFORM.
FORM download_xls USING excel TYPE xstring.
IF xstrlen( excel ) > 0.
DATA: action TYPE i.
DATA: filename TYPE string.
DATA: fullpath TYPE string.
DATA: path TYPE string.
cl_gui_frontend_services=>file_save_dialog( EXPORTING
default_file_name = 'Excel.xlsx'
default_extension = 'xlsx'
file_filter = |Excel-Datei (*.xlsx)\|*.xlsx\|{ cl_gui_frontend_services=>filetype_all }|
CHANGING
filename = filename
path = path
fullpath = fullpath
user_action = action ).
IF action EQ cl_gui_frontend_services=>action_ok.
DATA(bin_data) = cl_bcs_convert=>xstring_to_solix( EXPORTING iv_xstring = excel ).
cl_gui_frontend_services=>gui_download( EXPORTING
filename = fullpath
filetype = 'BIN'
bin_filesize = xstrlen( excel )
CHANGING
data_tab = bin_data ).
ENDIF.
ENDIF.
ENDFORM.
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
PeterPaletti