ABAP中读取EXCEL中不同的SHEET数据

本文介绍了如何在ABAP中通过修改ALSM_EXCEL_TO_INTERNAL_TABLE函数,以实现读取同一EXCEL文件中不同SHEET的数据。步骤包括拷贝标准函数到自定义函数组,复制LALSMEXTOP数据,引入LALSMEXUXX和LALSMEXF01,并修改代码以支持多sheet读取。
 

ABAP中读取EXCEL中不同的SHEET数据

作者:侯志宇

SAP提供了标准的读取EXCEL的函数(ALSM_EXCEL_TO_INTERNAL_TABLE),但是此标准函数无法满足对同一EXCEL进行不同SHEET的数据读取,一下方法就是教你如何通过修改程序来实现ALSM_EXCEL_TO_INTERNAL_TABLE读取多个SHEET;

一、拷贝ALSM_EXCEL_TO_INTERNAL_TABLE函数,拷贝时函数组选择自定义函数组

二、将ALSM_EXCEL_TO_INTERNAL_TABLE函数中的LALSMEXTOP中的数据拷贝都你自定义函数的TOP中;

三、将函数ALSM_EXCEL_TO_INTERNAL_TABLE中的

INCLUDE LALSMEXUXX.INCLUDE LALSMEXF01.引用到你自定义的函数中;

四、将ALSM_EXCEL_TO_INTERNAL_TABLE中的代码修改如下:

function ZALSM_EXCEL_TO_INTERNAL_TABLE .
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     VALUE(FILENAME) LIKE  RLGRAP-FILENAME
*"     VALUE(I_BEGIN_COL) TYPE  I
*"     VALUE(I_BEGIN_ROW) TYPE  I
*"     VALUE(I_END_COL) TYPE  I
*"     VALUE(I_END_ROW) TYPE  I
*"     VALUE(SHEET_NAME) LIKE  ALSMEX_TABLINE-VALUE OPTIONAL
*"  TABLES
*"      INTERN STRUCTURE  ALSMEX_TABLINE
*"  EXCEPTIONS
*"      INCONSISTENT_PARAMETERS
*"      UPLOAD_OLE
*"----------------------------------------------------------------------

  data: EXCEL_TAB     type  TY_T_SENDER.
  data: LD_SEPARATOR  type  C.
  data: APPLICATION   type  OLE2_OBJECT,
        WORKBOOK      type  OLE2_OBJECT,
        RANGE         type  OLE2_OBJECT,
        WORKSHEET     type  OLE2_OBJECT.
  data: H_CELL        type  OLE2_OBJECT,
        H_CELL1       type  OLE2_OBJECT.
  data:
    LD_RC             type I.
*   Rückgabewert der Methode "clipboard_export     "

* Makro für Fehlerbehandlung der Methods
  define M_MESSAGE.
    CASE SY-SUBRC.
      WHEN 0.
      WHEN 1.
        MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      WHEN OTHERS. RAISE UPLOAD_OLE.
    ENDCASE.
  end-of-definition.


* check parameters
  if I_BEGIN_ROW > I_END_ROW. raise INCONSISTENT_PARAMETERS. endif.
  if I_BEGIN_COL > I_END_

ABAP 中,可以使用函数模块 `ALSM_EXCEL_TO_INTERNAL_TABLE` 和 `ALSM_EXCEL_TO_SAP` 来动态读取 Excel 表格的数据。 下面是一个示例代码,演示如何使用 `ALSM_EXCEL_TO_INTERNAL_TABLE` 函数模块将 Excel 表格的数据读入内部表中: ``` REPORT ztest. TYPES: BEGIN OF ty_excel, field1 TYPE string, field2 TYPE string, field3 TYPE string, END OF ty_excel. DATA: it_excel TYPE STANDARD TABLE OF ty_excel, wa_excel TYPE ty_excel. PARAMETERS p_filepath TYPE string. " 定义文件名 DATA: BEGIN OF filetab OCCURS 0, filename(255), END OF filetab. filetab-filename = p_filepath. " 调用函数模块读取 Excel 表格数据到内部表 CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' EXPORTING filename = filetab-filename i_begin_col = 'A' i_begin_row = 1 i_end_col = 'C' i_end_row = 5 i_sheetname = 'Sheet1' TABLES intern = it_excel EXCEPTIONS inconsistent_parameters = 1 upload_ole = 2 others = 3. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. " 输出内部表数据 LOOP AT it_excel INTO wa_excel. WRITE: / wa_excel-field1, wa_excel-field2, wa_excel-field3. ENDLOOP. ``` 在上面的代码中,首先定义了一个内部表 `it_excel` 和一个结构体 `ty_excel`,用于存储 Excel 表格中的数据。然后通过函数模块 `ALSM_EXCEL_TO_INTERNAL_TABLE` 读取 Excel 表格数据,并将数据存储到内部表 `it_excel` 中。最后通过循环输出内部表中的数据。 如果需要将 Excel 表格数据导入 SAP 系统中的数据库表中,可以使用函数模块 `ALSM_EXCEL_TO_SAP`,该函数模块将 Excel 表格数据转换成 SAP 系统中的数据对象,并将数据插入到数据库表中。 希望这个例子能够帮助你动态读取 Excel 表格数据。如果有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值