|  | 
| 程序:导EXCEL: 我现在改为导TXT看一下。 
 REPORT z_testdownserverfile
 NO STANDARD PAGE HEADING
 MESSAGE-ID zxx001.
 
 
 
 SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME.
 * server's File Path
 PARAMETERS: PA_FNAME LIKE RLGRAP-FILENAME OBLIGATORY.
 * local's path
 PARAMETERS PA_LNAME  TYPE RLGRAP-FILENAME OBLIGATORY.
 
 SELECTION-SCREEN END OF BLOCK BL1.
 
 DATA: BEGIN OF REC_DATA,
 LINE(250)  TYPE C,                    "RECEIVE DATA
 END OF REC_DATA.
 DATA: TBL_DATA LIKE TABLE OF REC_DATA.        "Table of TBL_DATA
 DATA:
 FLG_ERROR TYPE C.
 DATA: WK_STOP   TYPE C,                       "STOP FLAG
 WK_UCOMM  LIKE SY-UCOMM,                "User command
 WK_FNAME  TYPE STRING,
 WK_PATH   TYPE STRING,
 WK_FPATH  TYPE STRING,
 WK_NAME1  LIKE RLGRAP-FILENAME,         "File Name
 WK_NAME2  LIKE RLGRAP-FILENAME,         "File Directory
 WK_RETURN TYPE C.                       "Result of the query
 
 *-----  Constants  ----------------------------------------------------*
 CONSTANTS:
 CST_X           TYPE C                VALUE 'X',
 CST_MODULE01     TYPE MSGV1            VALUE 'WS_UPLOAD',
 CST_DAT       LIKE RLGRAP-FILETYPE VALUE 'DAT',
 "DAT
 CST_SPACE     TYPE C VALUE ' ',             "Blank
 CST_BIAS      TYPE C VALUE '\',             "Bias
 CST_F8(4)     TYPE C VALUE 'ONLI',          "F8
 CST_FE(2)     TYPE C VALUE 'FE',            "FE
 CST_DE(2)     TYPE C VALUE 'DE',            "'DE'
 CST_TXT(5)    TYPE C VALUE '*.XLS',         "*.TXT XLS
 CST_TXTFL(16) TYPE C VALUE 'TEXT FILE|*.XLS|',
 CST_FILETYPE     TYPE RLGRAP-FILETYPE  VALUE 'ASC'.
 AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_LNAME.
 * Get file name
 PERFORM HELP_DIS.
 **&---------------------------------------------------------------------
 **
 **&     AT SELECTION-SCREEN
 **&---------------------------------------------------------------------
 **
 *AT SELECTION-SCREEN.
 *  PERFORM CHECK_FILE.
 
 START-OF-SELECTION.
 
 PERFORM GET_DATA.
 PERFORM DOWNLOAD_DATA.
 
 FORM DOWNLOAD_DATA.
 
 DATA: LO_FILENAMEO TYPE STRING,
 LO_NUM TYPE I.
 CHECK FLG_ERROR = SPACE.
 
 LO_FILENAMEO = PA_LNAME.
 CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
 EXPORTING
 FILENAME                = LO_FILENAMEO  "File path
 WRITE_FIELD_SEPARATOR   = CST_X
 CHANGING
 DATA_TAB                = TBL_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
 others                  = 22.
 
 IF SY-SUBRC <> 0.
 *Cannot overwrite!
 MESSAGE S320.
 ELSE.
 * The numbers of the records.
 DESCRIBE TABLE TBL_DATA LINES LO_NUM.
 *  &1 records successfully download to file &2
 MESSAGE S307 WITH LO_NUM PA_LNAME.
 ENDIF.
 ENDFORM.
 *&---------------------------------------------------------------------*
 *&      Form  GET_DATA
 *&---------------------------------------------------------------------*
 *       GET DATA
 *----------------------------------------------------------------------*
 FORM GET_DATA.
 
 
 OPEN DATASET PA_FNAME FOR INPUT IN TEXT MODE ENCODING DEFAULT.
 
 *    OPEN DATASET PA_FNAME FOR INPUT IN TEXT MODE. "TEXT MODE encoding
 
 IF SY-SUBRC <> 0.
 * Failed to open file (file name : &1)
 MESSAGE S042 WITH PA_FNAME.
 FLG_ERROR = CST_X.
 ENDIF.
 CHECK FLG_ERROR = SPACE.
 DO.
 READ DATASET PA_FNAME INTO REC_DATA.
 IF SY-SUBRC <> 0      AND
 SY-SUBRC <> 4.
 * Failed to read file (file name : &1)
 MESSAGE S297 WITH PA_FNAME.
 CLOSE DATASET PA_FNAME.
 FLG_ERROR = CST_X.
 EXIT.
 ENDIF.
 CHECK FLG_ERROR = SPACE.
 IF SY-SUBRC = 4.
 EXIT.
 ENDIF.
 APPEND REC_DATA TO TBL_DATA.
 ENDDO.
 CHECK FLG_ERROR = SPACE.
 CLOSE DATASET PA_FNAME.
 IF SY-SUBRC <> 0.
 * Failed to close file (file name : &1)
 MESSAGE S044 WITH PA_FNAME.
 FLG_ERROR = CST_X.
 ENDIF.
 
 
 ENDFORM.
 *&---------------------------------------------------------------------*
 *&      Form  HELP_DIS
 *&---------------------------------------------------------------------*
 *       Get file name
 *----------------------------------------------------------------------*
 FORM HELP_DIS.
 
 DATA: LO_LNAME  TYPE STRING,
 LO_TXT    TYPE STRING,
 LO_TXTFL  TYPE STRING.
 
 LO_LNAME = TEXT-040.                        "Local File Name
 LO_TXT   = CST_TXT.                         "*.TXT
 LO_TXTFL = CST_TXTFL.                       "TEXT FILE|*.TXT|
 CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
 EXPORTING
 WINDOW_TITLE            = LO_LNAME      "Local File Name
 DEFAULT_EXTENSION       = LO_TXT        "*.TXT
 FILE_FILTER             = LO_TXTFL      "TEXT FILE|*.TXT|
 CHANGING
 FILENAME                = WK_FNAME      "File name
 PATH                    = WK_PATH       "File path
 FULLPATH                = WK_FPATH      "Full path
 EXCEPTIONS
 others                  = 1
 .
 PA_LNAME = WK_FPATH.
 
 ENDFORM.                    " HELP_DIS
 | 
 |