abap 文件上传下载例子

发布时间:2015-03-20 10:36:41   来源:文档文库   
字号:

结果截图

代码

*&---------------------------------------------------------------------*
*& 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 (20P_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 AND SY-SUBRC .
    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(OOWITH '文件' 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 ** ).
    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 ** ).
    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

《abap 文件上传下载例子.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式