设为首页 收藏本站
查看: 1126|回复: 0

[经验分享] SAP中本地文件的upload和download的方法

[复制链接]

尚未签到

发表于 2015-9-18 09:48:05 | 显示全部楼层 |阅读模式
  无论是upload还是download,首先要确定文件的路径和名字。下面介绍几种使用文件选择框的方法:
-、使用FM F4_FILENAME
call function 'F4_FILENAME'
    importing
      file_name = filename.
二、使用FM KD_GET_FILENAME_ON_F4
call function 'KD_GET_FILENAME_ON_F4'
    changing
      file_name = p_pcfile.
三、使用FM TB_LIMIT_WS_FILENAME_GET
此FM可以指定默认选择路径,默认文件名,文件的打开目的(MODE,O为读,S为写)以及文件类型等,返回值FILENAME为文件的全路径。
四、使用FM WS_FILENAME_GET
功能同上。例子:
call function 'WS_FILENAME_GET'
  exporting
    def_filename     = 'invoice.txt'
    def_path         = 'c:/windata/'
    mask             = ',*.TXT.'
    mode             = '0'
    title            = 'Find the input file'
  importing
    filename         = t_filename
  exceptions
    inv_winsys       = 1
    no_batch         = 2
    selection_cancel = 3
    selection_error  = 4
    others           = 5.
五、使用Class cl_gui_frontend_services的静态方法file_open_dialog.
此方法功能强大,可以修饰文件选择框,指定默认选择路径,设置文件类型过滤,同时打开多个文件,返回用户操作等,例子:
call method cl_gui_frontend_services=>file_open_dialog
    exporting
      window_title     = 'Select File'
      default_extension = 'xls'
       file_filter     = cl_gui_frontend_services=>filetype_excel
      multiselection   = ' '
  changing
      file_table       = it_tab
      rc               = gd_subrc.
  文件UPLOAD方法(转成内表):
一、最常用FM的是:GUI_UPLOAD
有同等作用的是CLASS cl_gui_frontend_services的静态方法gui_upload,文件可以按二进制或文本格式上传,数值和日期等依赖于用户的设置。
上传二进制文件时,内表通常定义为只含一个数据类型为X的field,如:
data:begin of itab occurs 0,
raw(255) type X,
        end fo itab.
CALL FUNCTION 'GUI_UPLOAD'
           exporting
              filetype =  'BIN'
              filename = 'C:/DOWNLOAD.BIN'
           tables
             data_tab = itab.
主要参数:输入有filename 要上传文件的完成路径, filetype 包括'BIN' 'DAT' 'ASC'等,codepage 以数字编号的字符集,如8400是简体中文
    输出有data_tab 储存文件中数据的内表
二、对上传excel数据可用FM TEXT_CONVERT_XLS_TO_SAP
因为输出的I_TAB_CONVERTED_DATA类型为任意的standard table,所以此FM能方便的把excel中内容转化成格式相同的内表中。
field-symbols: <s_table> type standard table.
call function 'TEXT_CONVERT_XLS_TO_SAP'
    exporting
*         I_FIELD_SEPERATOR          =
*         I_LINE_HEADER              =
      i_tab_raw_data             = raw_data
      i_filename                 = excel_file
    tables
      i_tab_converted_data       = <s_table>
   exceptions
     conversion_failed          = 1
     others                     = 2.
参数i_tab_raw_data虽为改办field,但好像没什么作用,传入一个空数据也可正常使用。
三、以另外途径上传excel文件:ALSM_EXCEL_TO_INTERNAL_TABLE
call function 'ALSM_EXCEL_TO_INTERNAL_TABLE'
    exporting
      filename                = p_file
      i_begin_col             = p_scol
      i_begin_row             = p_srow
      i_end_col               = p_ecol
      i_end_row               = p_erow
    tables
      intern                  = i_intern
    exceptions
      inconsistent_parameters = 1
      upload_ole              = 2
      others                  = 3.
此FM可以限制从excel文件中第几行第几列开始,一次上传多少行多少列,但一次上传的最大行数为9999,是由接收数据的内表intern的定义来限制的。
所以如果要上传多于9999行的数据,要编码分批上传实现的。而intern不是直接与excel数据格式相符的内表,是系统定义好的,包含了行号、列号、数据值等,具体的
请参照系统定义,因此要想转成自己定义符合格式的内表,可用下面代码实现:
field-symbols : <$fs>.
data  exception type ref to cx_root.
sort i_intern by row col.
    try.
        loop at i_intern.
          move i_intern-col to index.
          assign component index of structure i_table to <$fs>.
          move i_intern-value to <$fs>.
          at end of row.
            append i_table. "user defined internal table to store excel data
            clear i_table.
          endat.
        endloop.
      catch cx_root into exception.
        message 'Excel data format is wrong,please check' type 'E'.
    endtry.
  文件DOWNLOAD方法(内表转成文件):
一、最常用FM的是:GUI_UPLOAD
CLASS cl_gui_frontend_services的静态方法gui_upload与此功效相同。重要参数有BIN_FILESIZE FILENAME FILETYPE APPEND CODEPAGE DATA_TAB等,正确传入这些参数即可满足大多常见的需求。
参数简述:BIN_FILESIZE  当要创建二进制的文件进,必须指定文件长度,但要下载成文本文件时,传入此参数会报 FILESIZE_NIT_ALLOWED 错误的。
FILENAME  要存放文件的完整路径,要保证路径有效并且如果文件存在的话没有被打开,否则会报错。
FILETYPE  'ASC' ASCII格式文件,此参数会受到CODEPAGE, TRUNC_TRAILING_BLANKS, 和 TRUNC_TRAILING_BLANKS_EOL等参数的影响。
      'IBM' ASCII文件,但只能包含IBM字符集的字符(CODEPAGE = '1103'),这种格式的文件通常用在软盘上。
  'DAT' 具有单元格形式的文本文件,但直接用excel打开的话,文本内容会受单元格格式影响(如自动会去前导零等)。这种文件可直接再用gui_upload上传到SAP程序中。
  'DBF' dBase格式,对于要用excel打开的数据,此种格式更能保持数据原型,不受excel单元格格式的影响。
  'WK1' Lotus 1-2-3格式。
  'BIN' 二进制格式文件,没有格式和字体集的限制。
APPEND 'X'以追加模式写文件,SPACE 当文件已存在时,以覆盖模式写文件。
CODEPAGE 指定写文件时用的字符集
DATA_TAB 内表,包含要下载成文件的数据
  ...
  另注:当要上传在excel中存放的数据时,要注意sap系统中前导0的问题,解决方法可在excel文件中把0补全(调整单元格格式),或者在使用此类数据前,程序做alpha转换,
使用FM: CONVERSION_EXIT_ALPHA_INPUT, 相反作用的FM: CONVERSION_EXIT_ALPHA_OUTPUT

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115224-1-1.html 上篇帖子: SAP实施篇-轻松权限 下篇帖子: 【转】SAP SD定价技术分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表