news 2026/7/1 9:15:19

ABAP---ABAP2XLSX代替ALSM_EXCEL_TO_INTERNAL_TABLE导入 动态创建表结构

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ABAP---ABAP2XLSX代替ALSM_EXCEL_TO_INTERNAL_TABLE导入 动态创建表结构

问题:

ALSM_EXCEL_TO_INTERNAL_TABLE ,其底层是通过调用你电脑本地安装的 Excel 进程来读取数据的,因此会高度依赖于前端客户端的本地环境,极不稳定;

解决

使用abap2xlsx的方式导入:直接解析 Excel 的 XML 底层结构,不需要本地安装 Excel 软件,支持前后台运行,速度快且极度稳定;

将abap2xlsx导入到sap;
abap2xlsx—git地址

具体操作案例如下链接所示:
ABAP2XLSX,操作excel

拓展:

1.abapgit的安装及使用教程

2.我这里简单封装了一个通用函数

记录列号,这是针对日期类型做的处理;

FUNCTION zfm_abap2xlsx. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *"VALUE(FILENAME)*"VALUE(B_R)TYPE I *"VALUE(STRUNAME)*" EXPORTING *"VALUE(E_FLAG)*"VALUE(E_MES)*" TABLES *" IT_COL STRUCTURE ZSCOL OPTIONAL *" CHANGING *"VALUE(ET_ITAB)TYPE TABLE OPTIONAL *"----------------------------------------------------------------------DATA:gt_fieldcat TYPE lvc_t_fcat.DATA:lo_new_table TYPE REF TO data,lo_new_line TYPE REF TO data.FIELD-SYMBOLS:<lt_data> TYPE ANY TABLE,<ls_data> TYPE any,<lv_val> TYPE any. "excel文档类对象DATA:lo_excel TYPE REF TO zcl_excel. "excel worksheet类对象DATA:lo_worksheet TYPE REF TO zcl_excel_worksheet. "异常类DATA:lf_cxexcel TYPE REF TO zcx_excel. "上传excelDATA:cl_reader TYPE REF TO zif_excel_reader. "excel导入内表 "读取行列数DATA:col_count TYPE i.DATA:row_count TYPE i.DATA:col TYPE i.DATA:row TYPE i.DATA:lv_str TYPE string. TRY. CREATE DATA lo_new_table TYPE STANDARD TABLE OF(struname). " p_struname 为'ZSBANK'ASSIGN lo_new_table->* TO <lt_data>. IF sy-subrc = 0. CREATE DATA lo_new_line LIKE LINE OF <lt_data>. ASSIGN lo_new_line->* TO <ls_data>. TRY. CREATE OBJECT lo_excel. "cl_reader对象 CREATE OBJECT cl_reader TYPE zcl_excel_reader_2007. lo_excel = cl_reader->load_file(i_filename = filename). lo_worksheet = lo_excel->get_active_worksheet(). "获取行数,列数 row_count = lo_worksheet->get_highest_row(). col_count = lo_worksheet->get_highest_column(). DO row_count TIMES. row = sy-index. CHECK row >= b_r. DO col_count TIMES. col = sy-index. CLEAR lv_str. ASSIGN COMPONENT col OF STRUCTURE <ls_data> TO <lv_val>. lo_worksheet->get_cell(EXPORTING ip_column = col ip_row = row IMPORTING ep_value = lv_str). READ TABLE it_col WITH KEY col = col. IF sy-subrc = 0. <lv_val> = zcl_excel_common=>excel_string_to_date(lv_str). ELSE. <lv_val> = lv_str. ENDIF. UNASSIGN <lv_val>. ENDDO. INSERT <ls_data> INTO TABLE <lt_data>. ENDDO. APPEND LINES OF <lt_data> TO et_itab. e_flag ='S'. CATCH zcx_excel INTO lf_cxexcel.DATA:result TYPE string. CALL METHOD lf_cxexcel->if_message~get_text RECEIVING result = result. e_flag ='E'. e_mes = result. ENDTRY. ELSE. e_flag ='E'. e_mes ='动态表创建失败!'. ENDIF. CATCH cx_sy_create_data_error. e_flag ='E'. e_mes ='无法创建对应的表结构,请检查结构名是否正确!'. ENDTRY. ENDFUNCTION.

调用案例:

DATA:e_flag(1),e_mes TYPE string,lo_data TYPE REF TO data.FIELD-SYMBOLS:<lt_data> TYPE ANY TABLE. TRY. CREATE DATA lo_data TYPE STANDARD TABLE OF('ZSPPR012'). " p_struname 为'ZSBANK'ASSIGN lo_data->* TO <lt_data>. CATCH cx_sy_create_data_error. MESSAGE'无法创建对应的表结构,请检查结构名是否正确'TYPE'E'. ENDTRY.DATA:gt_zscol TYPE TABLE OF zscol. gt_zscol = VALUE #((col = 7)(col = 8)). CALL FUNCTION'ZFM_ABAP2XLSX'EXPORTING filename = p_file b_r = 2 struname ='ZSPPR012'IMPORTING e_flag = e_flag e_mes = e_mes TABLES it_col = gt_zscol CHANGING et_itab = <lt_data>. IF e_flag ='E'. MESSAGE e_mes TYPE'S'DISPLAY LIKE'E'. EXIT. ENDIF. APPEND LINES OF <lt_data> TO gt_itab.
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 17:13:17

VSCode高效开发:10个必知快捷键与工作流优化

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 整理VSCode中最能提升开发效率的10个快捷键和5个自定义配置技巧。包括多光标操作、快速跳转、代码折叠、终端集成等功能的详细说明。提供实际编码场景中的使用示例&#xff0c;并对…

作者头像 李华
网站建设 2026/6/23 14:56:13

Chapter1:智能体基础入门通关指南

AI入门第一周&#xff1a;智能体基础入门通关指南 核心结论&#xff1a;第一周学习聚焦智能体核心认知与入门实操&#xff0c;需掌握智能体本质特征、书籍框架逻辑、三大主流框架对比及基础环境搭建&#xff0c;为后续深入学习21种设计模式筑牢根基。 一、第一周学习核心内容总…

作者头像 李华
网站建设 2026/6/28 20:36:55

用Typora+AI快速原型设计:1小时完成产品文档MVP

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发AI增强的文档原型工具&#xff1a;1. 输入产品关键词自动生成PRD框架 2. 支持Typora格式导出 3. 智能填充示例内容 4. 生成用户流程图和状态图 5. 输出HTML原型预览。集成Kimi…

作者头像 李华
网站建设 2026/6/23 20:35:34

vm3dum_loader.dll文件问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华