战胜自己 发表于 2015-9-21 08:50:50

[SAP ABAP开发技术总结]文本文件、Excel文件上传下传


声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4265642.html   20.22.1.      读取客户端Txt、Excel文件到内表:TEXT_CONVERT_XLS_TO_SAP
TEXT_CONVERT_XLS_TO_SAP函数可以将本地的文本文件(列与列之间默认使用TAB键分开,但也可以指定)或真正的Excel文件上传到服务内表中,并且文件转换成内表中的数据是自动完成,不需要手动,这与ALSM_EXCEL_TO_INTERNAL_TABLE函数是不一样的
PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY.
DATA: il_raw TYPE truxs_t_text_data.
DATA:l_obj TYPE REF TO cl_gui_frontend_services.
DATA: it_file TYPE filetable WITH HEADER LINE.
DATA: g_rc TYPE i.
DATA: BEGIN OF i_data OCCURS 0,
      c(2),
      n(2) TYPE n,
      i TYPE i,
      d TYPE d,
      END OF i_data.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file. "弹出选择文件对话框
CREATE OBJECT l_obj.
CALL METHOD l_obj->file_open_dialog
    EXPORTING
      file_filter       = '*.xls;*.xlsx;*.txt'
      initial_directory = 'C:\data'
    CHANGING
      file_table      = it_file[]
      rc                = g_rc.
READ TABLE it_file INDEX 1.
p_file = it_file-filename.
START-OF-SELECTION.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'"可以是Excel文件,也可以是Txt文件
    EXPORTING
*   I_FIELD_SEPERATOR    = 分隔符,默认为Tab
*   i_line_header      = 'X' "文本中的第一行是否是标题头,如果是则不会读取
      i_tab_raw_data       = il_raw "该参数实际上没有使用到,但为必输参数
      i_filename         = p_file
    TABLES
      i_tab_converted_data = i_data. "会自动的将Excel、Txt文件中的数据一行行读取到数据内表中
20.22.2.      将数据内表导出为EXCEL文件:SAP_CONVERT_TO_XLS_FORMAT
DATA: t100_lines TYPE STANDARD TABLE OF t001.
SELECT * FROM t001 INTO TABLE t100_lines.
CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
EXPORTING
    i_filename   = 'c:\1.xlsx'
TABLES
    i_tab_sap_data = t100_lines.
如果EXCEL文件已经存在,那么数据会被覆盖
注:数据内表中的字段类型不能是数字类型,否则会出现意想不到的错,如有数字类型字段,转出前最好先转换为字符类型再输出
页: [1]
查看完整版本: [SAP ABAP开发技术总结]文本文件、Excel文件上传下传