ABAP to check if file exists before downloading from SAP
Below is 2 ABAP programs for downloading data to a file on the presentation server(PC). It also checks if file exists and
allows user to replace existing file, change name or cancel during download process.
Program 1 - (Replace existing file)
This method of file download with check uses the latest techniques and achieves a very neat solution.
REPORT ZPOPUP_REPLACE. DATA: ld_filename TYPE string, ld_path TYPE string, ld_fullpath TYPE string, ld_result TYPE i. types: begin of t_datatab , row(500) type c, end of t_datatab. data: it_datatab type STANDARD TABLE OF t_datatab, wa_datatab like line of it_datatab. wa_datatab-row = 'sdsds'. append wa_datatab to it_datatab. * Display save dialog window CALL METHOD cl_gui_frontend_services=>file_save_dialog EXPORTING * window_title = ' ' DEFAULT_EXTENSION = 'XLS' default_file_name = 'accountsdata' INITIAL_DIRECTORY = 'c:\temp\' CHANGING filename = ld_filename path = ld_path fullpath = ld_fullpath user_action = ld_result. * Check user did not cancel request CHECK ld_result EQ '0'. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING filename = ld_fullpath filetype = 'ASC' * APPEND = 'X' write_field_separator = 'X' * CONFIRM_OVERWRITE = 'X' TABLES data_tab = it_datatab[] "need to declare and populate EXCEPTIONS file_open_error = 1 file_write_error = 2 OTHERS = 3.
Program 2 - (Replace or Append data to existing file)
This file download program uses older techniques but achieves a perfectly acceptable solution which
also allows the user to append data to an existing file.
REPORT ZPOPUP_APPEND. * Internal table to store export data DATA: begin of it_excelfile occurs 0, row(500) type c, end of it_excelfile. DATA: rc TYPE sy-ucomm, ld_answer TYPE c, ld_filename type string. PARAMETERS: p_file like rlgrap-filename default 'C:\TEST'. it_excelfile-row = 'sdsds'. append it_excelfile. CALL FUNCTION 'WS_QUERY' EXPORTING query = 'FE' "File Exist? filename = p_file IMPORTING return = rc. ld_filename = p_file. IF rc NE 0. "If File alread exists CALL FUNCTION 'POPUP_TO_CONFIRM' EXPORTING * TITLEBAR = ' ' * DIAGNOSE_OBJECT = ' ' text_question = 'File Already exists!!' text_button_1 = 'Replace' * ICON_BUTTON_1 = ' ' text_button_2 = 'New name' * ICON_BUTTON_2 = ' ' * DEFAULT_BUTTON = '1' * DISPLAY_CANCEL_BUTTON = 'X' * USERDEFINED_F1_HELP = ' ' * START_COLUMN = 25 * START_ROW = 6 * POPUP_TYPE = IMPORTING answer = ld_answer * TABLES * PARAMETER = EXCEPTIONS text_not_found = 1 OTHERS = 2. * Option 1: Overwrite ********************* IF ld_answer EQ '1'. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING * BIN_FILESIZE = filename = ld_filename "File Name filetype = 'ASC' * IMPORTING * FILELENGTH = TABLES data_tab = it_excelfile "Data table EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE i003(zp) WITH 'There was an error during Excel file creation'(200). exit. "Causes short dump if removed and excel document was open ENDIF. * Option 2: New name. ********************* ELSEIF ld_answer EQ '2'. CALL FUNCTION 'DOWNLOAD' EXPORTING filename = p_file "File name filetype = 'ASC' "File type * col_select = 'X' "COL_SELECT * col_selectmask = 'XXXXXXXXXXXXXXXXXXXXXXXXXX' * "COL_SELECTMASK filetype_no_show = 'X' "Show file type selection? * IMPORTING * act_filename = filename_dat TABLES data_tab = it_excelfile "Data table * fieldnames = EXCEPTIONS file_open_error = 01 file_write_error = 02 invalid_filesize = 03 invalid_table_width = 04 invalid_type = 05 no_batch = 06 unknown_error = 07. ENDIF. ELSE. "File does not alread exist. CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING * BIN_FILESIZE = filename = ld_filename "File name filetype = 'ASC' "File type * IMPORTING * FILELENGTH = TABLES data_tab = it_excelfile "Data table EXCEPTIONS file_write_error = 1 no_batch = 2 gui_refuse_filetransfer = 3 invalid_type = 4 OTHERS = 5. IF sy-subrc <> 0. MESSAGE i003(zp) WITH 'There was an error during Excel file creation'(200). exit. "Causes short dump if removed and excel document was open ENDIF. ENDIF.
Related Articles
HEX codes and there associated ABAP declaration within SAP
Display files on SAP Application Server(UNIX)
Browse files on SAP Application Server(UNIX)
Downloading files to PC(Presentation Server)
Downloading files to SAP Application Server
Popup window to select a File using function module WS_FILENAME_GET
Get list of files within specific directory or SAP Application server
Directory selection for ABAP report using SAP method DIRECTORY_BROWSE
File Selection for ABAP report using SAP object method FILE_OPEN_DIALOG
Save file location popup on ABAP report selection screen using FILE_SAVE_DIALOG
ABAP Upload and download Function Modules in SAP
SAP File Selection Window - various methods of adding a file selection popup to your ABAP report
Upload Tab delimited file from PC into ABAP internal table
Upload and download files into and out of SAP or your PC
SAP Upload Excel document into internal table
ABAP to Upload Excel document into internal table on SAP system including .xlsx
Upload Excel document into ABAP internal table
ABAP Uploading files from PC to SAP R/3 system
ABAP to Upload files from SAP Application Server
Upload Tab delimited file from PC into ABAP internal table
Upload Tab delimited file from application server into ABAP internal table
Example Excel Spreadsheet used to demo SAP upload and download using ABAP
Download file from SAP unix system to your desktop using transaction SXDA