SAP本地文件操作

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.

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

时间: 2024-10-10 04:08:18

SAP本地文件操作的相关文章

HTML5 本地文件操作之FileSystemAPI实例(二)

文件操作实例整理二 1.删除文件.复制文件.移动文件 //获取请求权限 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.TEMPORARY, 5 * 1024, initFs, errorHandler); function initFs(fs) { //删除文件 fileEntry.remove() fs.

HTML5 本地文件操作之FileSystemAPI实例(三)

文件夹操作demo 1.读取根目录文件夹内容 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.PERSISTENT, 5 * 1024, initFs, errorHandler); function initFs(fs) { //显示根目录下的内容 var dirReader = fs.root.creat

HTML5 本地文件操作之FileSystemAPI实例(四)

目录操作Demo二 1.删除目录 window.requestFileSystem = window.requestFileSystem || window.webkitRequestFileSystem; window.requestFileSystem(window.PERSISTENT, 5 * 1024, initFs, errorHandler); function initFs(fs) { //删除目录,子目录创建需要递归,获取可以直接指定'/' //如果子目录不存在,抛出删除异常

HTML5 本地文件操作之FileSystemAPI整理(一)

一.请求配额 DeprecatedStorageInfo对象 window.webkitStorageInfo:当使用持久存储模式时需要用到该对象的接口 方法: 1.requestQuota(type,size,successCB,errorCB);请求配额 2.queryUsageAndQuota();获取配额信息 window.requestFileSystem(window.PERSISTENT, gratedBytes, initFs, errorHandler); DOMFileSys

H5读取本地文件操作

H5读取本地文件操作 本文转自:转:http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html感谢大神分享. 常见的语言比如php.shell等,是如何读取文件的呢? 实际上,大多数语言都需要先获取文件句柄,然后调用文件访问接口,打开文件句柄,读取文件! 那么,HTML5是否也是这样的呢? 答案是肯定的! HTML5为我们提供了一种与本地文件系统交互的标准方式:File Api. 该规范主要定义了以下数据结构: File Fil

SAP本地文件策略(导EXCEL选择拒绝后处理)

导出EXCEL意外选择了拒绝+记住选择,这样的话在本地电脑就导不出文件了,如下图: 解决办法有2个: 1,修改导出文件的本地策略 :Alt+F12 ->选项->安全性->安全设置->安全配置对话框 找到刚才因为拒绝产生的两个本地文件拒绝访问设置,双击,将操作改为‘允许’...应用,确定.返回界面就可以接着导数据了 2.修改后缀文件安全策略 同样找到Alt+F12 ->选项->安全性->安全设置->安全配置对话框 点击插入->类型选择文件扩展名 对象输入

前端本地文件操作与上传

前端无法像原生APP一样直接操作本地文件,否则的话打开个网页就能把用户电脑上的文件偷光了,所以需要通过用户触发,用户可通过以下三种方式操作触发: 通过input type="file" 选择本地文件 通过拖拽的方式把文件拖过来 在编辑框里面复制粘贴 第一种是最常用的手段,通常还会自定义一个按钮,然后盖在它上面,因为type="file"的input不好改变样式.如下代码写一个选择控件,并放在form里面: <form> <input type=&q

HTML5 本地文件操作之FileSystemAPI整理(二)

一.文件目录操作 1.DirectoryEntry对象 四.URL相关 URLType 文件路径类型 说明:在文件系统中的文件路径需转换成URL格式,已方便runtime快速加载. RelativeURL 相对路径URL 说明:只能在扩展API中使用,相对于基座提供的特定目录,以"_"开头. 常量: "_www": (DOMString 类型 )应用资源目录 保存应用的所有html.css.js等资源文件,与文件系统中根目录PRIVATE_WWW一致,后面加相对路径

SAP 本地文件上传到内表 sap gui 安全性弹出框 解决方法 .

本地上传文件到内表时候, 可以使用函数TEXT_CONVERT_XLS_TO_SAP:将xlsx,xls文件导入到内表 也可使用函数GUI_UPLOAD:将TXT文件导入到内表等   系统默认情况下,可能会产生“SAP GUI 安全性”的一个弹出框,如下图所示:   个人研究结果,如下(仅供参考) 产生原因:sap 系统对外部数据导入时候,会有一个自动的安全性提示检查. 在sap 安全性里面有个安全配置,默认的时候用的系统定制的安全配置, 会将已确认过的文件或者文件夹,加入到安全配置列表里面,遇