*本例用来服务器和本地的文件的上传和下载(非常简单的入门实例,没有考虑编码等问题)。
REPORT Z_ERIC_061 .
*用于读取文件数据的
TYPES: BEGIN OF T_INPUT,
CONTENT(8000) TYPE C,
END OF T_INPUT.
DATA: IT_INPUT TYPE STANDARD TABLE OF T_INPUT.
DATA: WA_INPUT TYPE T_INPUT.
SELECTION-SCREEN BEGIN OF BLOCK B1
WITH FRAME TITLE TEXT-001.
PARAMETERS: RB_PC_SV RADIOBUTTON GROUP G1 DEFAULT 'X' MODIF ID M1.
PARAMETERS: RB_SV_PC RADIOBUTTON GROUP G1 MODIF ID M1.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2
WITH FRAME TITLE TEXT-002.
PARAMETERS: P_PC TYPE RLGRAP-FILENAME.
PARAMETERS: P_SV TYPE RLGRAP-FILENAME MODIF ID M1.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PC.
*打开本地文件的对话框的函数
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
DEF_FILENAME = '*.*'
MASK = ',*.*,*.*. '
TITLE = 'SELECT YOUR LOCAL FILE:'
IMPORTING
FILENAME = P_PC
EXCEPTIONS
INV_WINSYS = 1
NO_BATCH = 2
SELECTION_CANCEL = 3
SELECTION_ERROR = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
WRITE: / 'SY-SUBRC:', SY-SUBRC.
ENDIF.
START-OF-SELECTION.
IF RB_PC_SV = 'X'.
PERFORM PC_SERVER.
ELSE.
PERFORM SERVER_PC.
ENDIF.
*&---------------------------------------------------------------------*
*& Form PC_SERVER
*&---------------------------------------------------------------------*
FORM PC_SERVER.
*用于上传文件到内表的函数
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = P_PC
TABLES
DATA_TAB = IT_INPUT
EXCEPTIONS
CONVERSION_ERROR = 1
FILE_OPEN_ERROR = 2
FILE_READ_ERROR = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10.
IF SY-SUBRC <> 0.
WRITE: / 'SY-SUBRC:', SY-SUBRC.
ENDIF.
*将内表的数据写入到服务器上面的文件
OPEN DATASET P_SV FOR OUTPUT IN TEXT MODE.
LOOP AT IT_INPUT INTO WA_INPUT.
TRANSFER WA_INPUT TO P_SV.
ENDLOOP.
CLOSE DATASET P_SV.
ENDFORM. " PC_SERVER
*&---------------------------------------------------------------------*
*& Form SERVER_PC
*&---------------------------------------------------------------------*
FORM SERVER_PC.
*将服务器上面的文件读入到内表中
OPEN DATASET P_SV FOR INPUT IN TEXT MODE.
DO.
READ DATASET P_SV INTO WA_INPUT.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
APPEND WA_INPUT TO IT_INPUT.
ENDDO.
CLOSE DATASET P_SV.
*将内表中的数据下载到本地
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
FILENAME = P_PC
TABLES
DATA_TAB = IT_INPUT
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_WRITE_ERROR = 2
INVALID_FILESIZE = 3
INVALID_TYPE = 4
NO_BATCH = 5
UNKNOWN_ERROR = 6
INVALID_TABLE_WIDTH = 7
GUI_REFUSE_FILETRANSFER = 8
CUSTOMER_ERROR = 9
OTHERS = 10.
IF SY-SUBRC <> 0.
WRITE: / 'SY-SUBRC:', SY-SUBRC.