ABAP存取Excel的技术思考

发布时间 2023-12-19 16:18:36作者: 长沙铁道学院-康帅傅

ABAP存取Excel有OLE,DOI,XML好几种技术啊,试了好多次,发现前两者总是出很多bug,决心以后只用基于Open XML技术的API和函数了。
类CL_FDT_XL_SPREADSHEET基于XML技术实现,示例代码如下;当然,SAP官方是不推荐单独使用这个类的,只限制用于BRF+相关功能,但是目前俺没遇到大问题;
比较推荐的ABAP EXCEL读写技术是使用开源仓库ABAP2XLSX,GIT上可以找到,一直都有人更新和维护,写入功能也相当强大。

点击箭头查看ABAP读取Excel代码
DATA(lv_xlsx_data) = cl_openxml_helper=>load_local_file( excel_path ).
  DATA(lo_xlsx_ref) = NEW cl_fdt_xl_spreadsheet(
        document_name     = excel_path
        xdocument         = lv_xlsx_data ).
  lo_xlsx_ref->if_fdt_doc_spreadsheet~get_worksheet_names(
  IMPORTING
  worksheet_names = DATA(lt_worksheets) ).

  DATA:lr_sheet_data TYPE REF TO data.
  FIELD-SYMBOLS:<ft_sheet_data> TYPE INDEX TABLE.
  LOOP AT lt_worksheets REFERENCE INTO DATA(lr_worksheet).
    DATA(lv_sheet_index) = sy-tabix.
    lr_sheet_data = lo_xlsx_ref->if_fdt_doc_spreadsheet~get_itab_from_worksheet(
    worksheet_name = lr_worksheet->*
    ).
    IF  <ft_sheet_data> IS ASSIGNED.
      UNASSIGN <ft_sheet_data>.
    ENDIF.
    ASSIGN lr_sheet_data->* TO <ft_sheet_data>.
    EXIT.
  ENDLOOP.