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

SAP applications and ABAP reports that process data files stored on your PC or within SAP
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