news 2026/5/25 23:32:14

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/5/1 8:01:02

5个场景告诉你为什么需要专业解压软件

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个场景化解压工具&#xff0c;针对不同使用场景提供定制解压方案&#xff1a;1)办公场景-批量解压邮件附件 2)开发场景-自动解压并部署代码包 3)游戏场景-快速解压大型游戏资…

作者头像 李华
网站建设 2026/5/10 19:04:03

零基础入门:用ENSP PRO完成第一个网络实验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 为网络新手设计一个入门实验&#xff1a;1) 创建包含2台PC和1台交换机的简单拓扑&#xff1b;2) 配置IP地址实现互通&#xff1b;3) 抓包分析ARP和Ping过程&#xff1b;4) 添加路由…

作者头像 李华
网站建设 2026/5/6 8:52:54

如何用AI加速密码破解工具开发

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个基于AI的密码破解工具&#xff0c;支持多种加密算法&#xff08;如MD5、SHA-1等&#xff09;。工具应具备智能字典生成功能&#xff0c;能根据目标系统特征自动优化破解策…

作者头像 李华
网站建设 2026/5/23 19:21:17

用NAVICAT社区版快速构建数据库原型

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 设计一个数据库原型开发工具包&#xff0c;基于NAVICAT社区版实现&#xff1a;1. 模板库&#xff08;用户管理、电商、博客等常见模式&#xff09;&#xff1b;2. 快速生成DDL语句…

作者头像 李华
网站建设 2026/5/23 20:45:10

AI助力9·1免费版安装:智能解决常见问题

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个AI辅助安装工具&#xff0c;能够自动检测用户系统环境&#xff0c;识别91免费版的安装需求&#xff0c;并提供一键解决方案。工具应包含以下功能&#xff1a;1. 自动扫描系…

作者头像 李华
网站建设 2026/5/14 16:39:00

2026紧急降ai!aigc免费降重只需3分钟,这才是降低ai率的正确方式。

长文章版 凌晨三点&#xff0c;我对着检测报告整个人都傻了——AI率87%&#xff0c;全红&#xff1f;&#xff01; 从人工手改到各种所谓“免费降AI率工具”&#xff0c;我几乎全试过&#xff0c;不是没效果&#xff0c;就是把字数改到翻倍交不上去。最后还是靠自己总结的5个技…

作者头像 李华