结果截图
代码:
*&---------------------------------------------------------------------**& Report Z_HANDLE_LOCAL_FILE*& wangfupeng 20150320*&---------------------------------------------------------------------**&服务器文件与本地文件之间的上传下载*&---------------------------------------------------------------------*REPORT Z_HANDLE_LOCAL_FILE.SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.PARAMETERS:P_UP RADIOBUTTON GROUP GP1 DEFAULT 'X', P_DOWN RADIOBUTTON GROUP GP1.SELECTION-SCREEN BEGIN OF LINE.PARAMETERS P_FILE TYPE STRING.SELECTION-SCREEN POSITION 50.SELECTION-SCREEN COMMENT (20) P_COMM FOR FIELD P_FILE.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK BLK1.AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE . PERFORM FRM_GETFILEPATH.* PERFORM FRM_GETFILEPATH2.AT SELECTION-SCREEN . PERFORM FRM_CHECKFILE. PERFORM FRM_GETFILE_SIZE.INITIALIZATION. P_COMM = ''.START-OF-SELECTION. IF P_UP = 'X'. PERFORM FRM_UPLOAD_FILE. ELSEIF P_DOWN = 'X'. PERFORM FRM_DOWN_FILE. ENDIF.*&---------------------------------------------------------------------**& Form FRM_UPLOAD_FILE*&---------------------------------------------------------------------** 上传文件到服务器*----------------------------------------------------------------------*FORM FRM_UPLOAD_FILE . "TCODE CG3Z 上传文件到服务器 CG3Y 下载文件到本地 "上传文件的文件路径必须是服务中已经存在的文件 "AL11查看服务器中的文件 "上传文件中有汉字可能会出现乱码 "CALL FUNCTION 'C13Z_FILE_DOWNLOAD_ASCII' CALL FUNCTION 'C13Z_FILE_UPLOAD_ASCII' EXPORTING I_FILE_FRONT_END = P_FILE "本地文件路径 I_FILE_APPL = 'C:\usr\sap\1.txt'"服务器路径 I_FILE_OVERWRITE = ESP1_TRUE "是否覆盖 EXCEPTIONS FE_FILE_NOT_EXISTS = 1 FE_FILE_READ_ERROR = 2 AP_NO_AUTHORITY = 3 AP_FILE_OPEN_ERROR = 4 AP_FILE_EXISTS = 5 AP_CONVERT_ERROR = 6 OTHERS = 7. IF SY-SUBRC = 0. MESSAGE 'UPLOAD SUCCESS' TYPE 'S'. ELSE. MESSAGE 'UPLOAD FAILURE' TYPE 'S' DISPLAY LIKE 'E'. ENDIF.ENDFORM. " FRM_UPLOAD_FILE*&---------------------------------------------------------------------**& Form FRM_UPLOAD_FILE*&---------------------------------------------------------------------** 从服务器下载文件*----------------------------------------------------------------------*FORM FRM_DOWN_FILE . CALL FUNCTION 'C13Z_FILE_DOWNLOAD_ASCII' EXPORTING I_FILE_FRONT_END = P_FILE "本地文件路径 I_FILE_APPL = 'C:\usr\sap\1.txt'"服务器路径 I_FILE_OVERWRITE = ESP1_TRUE "是否覆盖 EXCEPTIONS FE_FILE_OPEN_ERROR = 1 FE_FILE_EXISTS = 2 FE_FILE_WRITE_ERROR = 3 AP_NO_AUTHORITY = 4 AP_FILE_OPEN_ERROR = 5 AP_FILE_EMPTY = 6 AP_PATH_ERROR = 7 OTHERS = 8. IF SY-SUBRC = 0. MESSAGE 'DOWNLOAD SUCCESS' TYPE 'S'. ELSE. MESSAGE 'DOWNLOAD FAILURE' TYPE 'S' DISPLAY LIKE 'E'. ENDIF.ENDFORM. " FRM_UPLOAD_FILE*&---------------------------------------------------------------------**& Form FRM_GETFILEPATH*&---------------------------------------------------------------------** 获得文件路径*----------------------------------------------------------------------*FORM FRM_GETFILEPATH . DATA:LT_FILE TYPE FILETABLE WITH HEADER LINE, FILE_NUM TYPE I , ACTION TYPE I, ENCODING TYPE ABAP_ENCOD. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG EXPORTING WINDOW_TITLE = 'Title' DEFAULT_EXTENSION = '*.*' FILE_FILTER = '文本文件(*.TXT)|*.TXT|Excel 文件 (*.XLS)|*.XLS;*.XLSX|所有文件 (*.*)|*.*|' WITH_ENCODING = 'X' INITIAL_DIRECTORY = 'D:\' MULTISELECTION = 'X' CHANGING FILE_TABLE = LT_FILE[] RC = FILE_NUM USER_ACTION = ACTION "OK CANCEL FILE_ENCODING = ENCODING EXCEPTIONS FILE_OPEN_DIALOG_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF ACTION = 0 AND SY-SUBRC = 0 . READ TABLE LT_FILE INDEX 1. P_FILE = LT_FILE-FILENAME. ENDIF.ENDFORM. " FRM_GETFILEPATH*&---------------------------------------------------------------------**& Form FRM_CHECKFILE*&---------------------------------------------------------------------** 检查文件路径是否存在*----------------------------------------------------------------------*FORM FRM_CHECKFILE . DATA:LV_FILENAME TYPE STRING,"文件路径 LV_RESULT TYPE C. "是否找到 LV_FILENAME = P_FILE. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST EXPORTING FILE = LV_FILENAME RECEIVING RESULT = LV_RESULT EXCEPTIONS CNTL_ERROR = 1 ERROR_NO_GUI = 2 WRONG_PARAMETER = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. IF LV_RESULT = ''. MESSAGE E000(OO) WITH '文件' LV_FILENAME '不存在!' . ENDIF.ENDFORM. " FRM_CHECKFILE*&---------------------------------------------------------------------**& Form FRM_GETFILEPATH2*&---------------------------------------------------------------------** 获得文件路径 F4_FILENAME*----------------------------------------------------------------------*FORM FRM_GETFILEPATH2 . DATA LV_FILEPATH TYPE IBIPPARMS-PATH. CALL FUNCTION 'F4_FILENAME' EXPORTING PROGRAM_NAME = SYST-CPROG DYNPRO_NUMBER = SYST-DYNNR FIELD_NAME = ' ' IMPORTING FILE_NAME = LV_FILEPATH. P_FILE = LV_FILEPATH.ENDFORM. " FRM_GETFILEPATH2*&---------------------------------------------------------------------**& Form FRM_GETFILE_SIZE*&---------------------------------------------------------------------** 获得文件大小*----------------------------------------------------------------------*FORM FRM_GETFILE_SIZE . DATA LV_SIZE TYPE I. DATA LV_TEMP TYPE STRING. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_GET_SIZE EXPORTING FILE_NAME = P_FILE IMPORTING FILE_SIZE = LV_SIZE EXCEPTIONS FILE_GET_SIZE_FAILED = 1 CNTL_ERROR = 2 ERROR_NO_GUI = 3 NOT_SUPPORTED_BY_GUI = 4 OTHERS = 5. CALL METHOD CL_GUI_CFW=>FLUSH. DATA LV_I TYPE I. IF LV_SIZE < 1024. LV_TEMP = LV_SIZE. CONCATENATE LV_TEMP 'B' INTO LV_TEMP. P_COMM = LV_TEMP. ELSEIF LV_SIZE < ( 1024 ** 2 ). LV_TEMP = LV_SIZE / 1024. CONCATENATE LV_TEMP 'KB' INTO LV_TEMP. P_COMM = LV_TEMP. ELSE."IF LV_SIZE < ( 1024 ** 3 ). LV_I = LV_SIZE / ( 1024 ** 2 ). LV_TEMP = LV_I . CONCATENATE LV_TEMP 'MB' INTO LV_TEMP. P_COMM = LV_TEMP. ENDIF.ENDFORM. " FRM_GETFILE_SIZE
本文来源:https://www.2haoxitong.net/k/doc/ebd2960bf242336c1fb95e76.html
文档为doc格式