DATA: BEGIN OF gt_tab OCCURS 0, col1 TYPE c LENGTH 2, col2 TYPE c LENGTH 2, col3 TYPE c LENGTH 2, col4 TYPE c LENGTH 2, col5 TYPE c LENGTH 2, col6 TYPE c LENGTH 2, col7 TYPE c LENGTH 2, col8 TYPE c LENGTH 2, col9 TYPE c LENGTH 2, col10 TYPE c LENGTH 2, col11 TYPE c LENGTH 2, col12 TYPE c LENGTH 2, col13 TYPE c LENGTH 2, col14 TYPE c LENGTH 2, col15 TYPE c LENGTH 2, col16 TYPE c LENGTH 2, col17 TYPE c LENGTH 2, col18 TYPE c LENGTH 2, col19 TYPE c LENGTH 2, col20 TYPE c LENGTH 2, col21 TYPE c LENGTH 2, col22 TYPE c LENGTH 2, col23 TYPE c LENGTH 2, col24 TYPE c LENGTH 2, col25 TYPE c LENGTH 2, col26 TYPE c LENGTH 2, col27 TYPE c LENGTH 2, col28 TYPE c LENGTH 2, col29 TYPE c LENGTH 2, col30 TYPE c LENGTH 2, col31 TYPE c LENGTH 2, col32 TYPE c LENGTH 2, col33 TYPE c LENGTH 2, col34 TYPE c LENGTH 2, col35 TYPE c LENGTH 2, col36 TYPE c LENGTH 2, col37 TYPE c LENGTH 2, col38 TYPE c LENGTH 2, col39 TYPE c LENGTH 2, col40 TYPE c LENGTH 2, col41 TYPE c LENGTH 2, col42 TYPE c LENGTH 2, END OF gt_tab.data: g_dfile type string.constants: g_dpath type string value 'D:/Documents and Settings/guoliang.zhou/My Documents'.data: g_mask type string.constants: g_title type string value 'SELECTOR'.SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE tit1.SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(50) com_txt1. PARAMETERS p_fup TYPE string. SKIP.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK blk1.SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE tit2.SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(50) com_txt2. PARAMETERS p_fdw TYPE string. ULINE.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK blk2.INITIALIZATION. tit1 = 'UPLOAD'. tit2 = 'DOWNLOAD'. com_txt1 = 'Please select the file to upload'. com_txt2 = 'Please select the file to download'.AT SELECTION-SCREEN on value-request for p_fup. g_dfile = '*.txt'. g_mask = '*.txt'. PERFORM f_selector USING p_fup.AT SELECTION-SCREEN on value-request for p_fdw. g_dfile = '*.xls'. g_mask = '*.xls'. PERFORM f_selector USING p_fdw.at selection-screen. perform f_check using p_fup tit1. perform f_check using p_fdw tit2.start-of-selection. perform f_upload. perform f_download. write 'success'.end-of-selection.FORM f_selector USING p_p_file.CALL FUNCTION 'TB_LIMIT_WS_FILENAME_GET' EXPORTING def_filename = g_dfile def_path = g_dpath mask = g_mask mode = 'O' title = g_title IMPORTING filename = p_p_file EXCEPTIONS selection_cancel = 1 selection_error = 2 OTHERS = 3 .ENDFORM. " F_SELECTORform F_CHECK using p_file p_txt. data l_rs type c. CALL METHOD cl_gui_frontend_services=>file_exist EXPORTING file = p_file receiving RESULT = l_rs EXCEPTIONS cntl_error = 1 error_no_gui = 2 wrong_parameter = 3 not_supported_by_gui = 4 others = 5 . IF ( sy-subrc <> 0 or l_rs ne 'X' ). message i001(00) with 'the ' p_txt ' file does not exists'. stop. ENDIF.endform. " F_CHECKform F_UPLOAD . CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = p_fup* FILETYPE = 'ASC'* HAS_FIELD_SEPARATOR = ' '* HEADER_LENGTH = 0* READ_BY_LINE = 'X'* DAT_MODE = ' '* CODEPAGE = ' '* IGNORE_CERR = ABAP_TRUE* REPLACEMENT = '#'* CHECK_BOM = ' '* VIRUS_SCAN_PROFILE =* NO_AUTH_CHECK = ' '* IMPORTING* FILELENGTH =* HEADER = tables data_tab = gt_tab* 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* OTHERS = 17 . IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.endform. " F_UPLOADform F_DOWNLOAD . CALL FUNCTION 'GUI_DOWNLOAD' EXPORTING* BIN_FILESIZE = filename = p_fdw* FILETYPE = 'ASC'* APPEND = ' '* WRITE_FIELD_SEPARATOR = ' '* HEADER = '00'* TRUNC_TRAILING_BLANKS = ' '* WRITE_LF = 'X'* COL_SELECT = ' '* COL_SELECT_MASK = ' '* DAT_MODE = ' '* CONFIRM_OVERWRITE = ' '* NO_AUTH_CHECK = ' '* CODEPAGE = ' '* IGNORE_CERR = ABAP_TRUE* REPLACEMENT = '#'* WRITE_BOM = ' '* TRUNC_TRAILING_BLANKS_EOL = 'X'* WK1_N_FORMAT = ' '* WK1_N_SIZE = ' '* WK1_T_FORMAT = ' '* WK1_T_SIZE = ' '* WRITE_LF_AFTER_LAST_LINE = ABAP_TRUE* SHOW_TRANSFER_STATUS = ABAP_TRUE* IMPORTING* FILELENGTH = tables data_tab = gt_tab* FIELDNAMES =* 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* OTHERS = 22 . IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.endform. " F_DOWNLOAD