码迷,mamicode.com
首页 > 其他好文 > 详细

SAP本地文件操作

时间:2018-05-05 23:09:53      阅读:892      评论:0      收藏:0      [点我收藏+]

标签:两种   文件操作   cas   xls   pat   let   ali   port   err   

1,本地文件路径获取

FORM GET_FILENAME.
*   ファイルを開くダイアログを表示FM
    CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
      EXPORTING
        WINDOW_TITLE            = ファイル選択                "ファイルを開くダイアログの表題
        FILE_FILTER             = Excel Files (*.xls)|*.xls|Text File(*.txt)|*.txt   "ファイル拡張フィルタストリング
        INITIAL_DIRECTORY       = C:                          "第一ディレクトリ
        MULTISELECTION          = SPACE                         "複数選択可能 (X複数可能)
      CHANGING
        FILE_TABLE              = LIT_FILE_NAMES                "選択したファイルを維持するテーブル
        RC                      = LV_COUNT                      "打开文件的数量 (ファイル数かエラーの場合は -1)
      EXCEPTIONS
        FILE_OPEN_DIALOG_FAILED = 1
        CNTL_ERROR              = 2
        ERROR_NO_GUI            = 3
        NOT_SUPPORTED_BY_GUI    = 4
        OTHERS                  = 5.

    READ TABLE LIT_FILE_NAMES INTO LWA_FILE_NAME INDEX 1.
    IF SY-SUBRC = 0.
      P_LFILE = LWA_FILE_NAME-FILENAME.
    ELSE.
      EXIT.
    ENDIF.
ENDFORM.

 ※获取文件路径还有一种使用FM的方式,以及被标记为废弃,仅作参考

* 1.获取文件路径
  CALL FUNCTION WS_FILENAME_GET
   EXPORTING
*    DEF_FILENAME           = ‘ ‘
*    DEF_PATH               = ‘ ‘
     MASK                   = ,EXCEL.XLS,*.XLS.
     MODE                   = O" O保存,S打开
     TITLE                  = 打开文件"窗口的显示标题
   IMPORTING
     FILENAME               = LV_FILE
*    RC                     =
   EXCEPTIONS
     INV_WINSYS             = 1
     NO_BATCH               = 2
     SELECTION_CANCEL       = 3
     SELECTION_ERROR        = 4
     OTHERS                 = 5
            .
  IF SY-SUBRC <> 0.
    EXIT.
  ENDIF.

 

  1.1,点击运行按钮,选择文件路径

START-OF-SELECTION.
  PERFORM GET_FILENAME.

 

  1.2,点击输入框帮助按钮,选择文件路径后在继续点击运行按钮运行程序

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
    PERFORM GET_FILENAME.

 2,上传或是转换本地数据到内表

   2.1,.txt文件的上传

    CALL FUNCTION GUI_UPLOAD
      EXPORTING
        FILENAME                      = LV_FILENAME
*     FILETYPE                      = ‘ASC‘
       HAS_FIELD_SEPARATOR           = X  " アップロード時は、タブで列を分割
*     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                      = IT_WULIAO
     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.

   2.2,Excel的,.xls文件上传

      DATA: IT_TRUXS TYPE TRUXS_T_TEXT_DATA.
      CALL FUNCTION TEXT_CONVERT_XLS_TO_SAP
        EXPORTING
          I_FIELD_SEPERATOR    = X     " アップロード時は、タブで列を分割
          I_LINE_HEADER        = X     " ヘッダがあり
          I_TAB_RAW_DATA       = IT_TRUXS
          I_FILENAME           = P_LFILE
        TABLES
          I_TAB_CONVERTED_DATA = IT_WULIAO
        EXCEPTIONS
          CONVERSION_FAILED    = 1
          OTHERS               = 2.
      IF SY-SUBRC <> 0.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.

3,下载文件到本地,一般是先获取所要下载文件要保存的路径,然后调用下载方法

  3.1,获取下载文件保存路径使用,1,本地文件获取的两种方法都可以。

  3.2,下载方法

  CALL FUNCTION GUI_DOWNLOAD
    EXPORTING
*     BIN_FILESIZE                    =
      FILENAME                        = LV_FILE
*     FILETYPE                        = ‘ASC‘
*     APPEND                          = ‘X‘
     WRITE_FIELD_SEPARATOR           = X
*     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                      = ‘ ‘
*   IMPORTING
*     FILELENGTH                      =
    TABLES
      DATA_TAB                        = IT_WULIAOTMP
*     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.

 4,其他

    路径名称全部转换成大写

TRANSLATE LV_FILENAME TO UPPER CASE.

 

 

SAP本地文件操作

标签:两种   文件操作   cas   xls   pat   let   ali   port   err   

原文地址:https://www.cnblogs.com/wangxiaowen/p/8996362.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!