SAP ABAP ALSM_EXCEL_TO_INTERNAL_TABLE 导入excel 和 GUI_UPLOAD 导入 txt

 ALSM_EXCEL_TO_INTERNAL_TABLE 导入excel 

GUI_UPLOAD 导入 txt

这两个函数都是比较常见的导入功能,也很好用。 可以自定义封装一个类似下图导入功能。

 

1.ALSM_EXCEL_TO_INTERNAL_TABLE,这个函数模块可以把用户本地 EXCEL 文件中的一个矩形块中的内容上传到一个内表中。

输入参数: 
FILENAME:最长 128 个字符的路径名称。 
I_BEGIN_COL:导入单元格的开始列 
I_BEGIN_ROW:导入单元格的开始行 
I_END_COL:导入单元格的结束列 
I_END_ROW:导入单元格的结束行
输出参数: 
INTERN:内表,存储单元格的内容。结构如下: 
-ROW:数据所在行 
-COL:数据所在列 
-VALUE:数据,最长 50 个字符,如果超过,则相同 ROW COL 的记录出现多行
主要代码如下:

 

复制代码
TYPES:BEGIN OF ty_data,
  aufnr  TYPE afko-aufnr,              "订单
  END OF ty_data.

PARAMETERS: p_impfil LIKE rlgrap-filename . --画面上定义一个选择框
DATA: itab TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
"主要代码:
FIELD-SYMBOLS: <fs>,
    <fs_alv> TYPE ty_data.

    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename    = g_file
        i_begin_col = 1
        i_begin_row = 2   "--去掉表头
        i_end_col   = 30
        i_end_row   = 15000
      TABLES
        intern      = itab[].        --先放到系统内表
"- 再放入自定义内表:
 LOOP AT itab.
      ON CHANGE OF itab-row.
        IF sy-tabix NE 1.
          APPEND  w_data TO t_data.
          CLEAR   w_data.
        ENDIF.
      ENDON.ASSIGN COMPONENT itab-col OF STRUCTURE  w_data TO <fs>.
      "动态方法将值传到相应的内表
      <fs> = itab-value.
 ENDLOOP.
    APPEND  w_data TO t_data.
复制代码

2.GUI_UPLOAD --上载txt

 

复制代码
    l_name = p_impfil.
    CLEAR:t_data.

    CALL FUNCTION 'GUI_UPLOAD'
      EXPORTING
        filename                = l_name "选择文件的路径
        filetype                = 'DAT'
        has_field_separator     = 'X'
        read_by_line            = 'X'
        codepage                = '4110'
*       ignore_cerr             = abap_true
        replacement             = '#'
      TABLES
        data_tab                = t_data2
      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.
    DELETE t_data2 INDEX 1.  " 去掉第一行表头
复制代码

 

 

 
posted @   轻烟随风  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示