news 2026/2/28 18:15:29

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/2/26 18:01:04

1分钟原型:自制Vue环境检测工具解决CLI报错

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个Vue环境快速检测原型&#xff1a;1. 最小化UI界面&#xff08;仅含检测按钮和结果面板&#xff09;2. 实现核心检测逻辑&#xff08;检查vue-cli-service可用性&#xff0…

作者头像 李华
网站建设 2026/2/23 12:13:51

CP2102驱动在智能家居中的5个典型应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个智能家居中控系统演示程序&#xff0c;使用CP2102连接多个传感器节点。要求&#xff1a;1.主控端用Python实现 2.支持同时连接温湿度传感器、门窗磁传感器 3.数据采集间隔…

作者头像 李华
网站建设 2026/2/24 15:16:19

3分钟论文降ai!亲测降ai率从80%降到10%,免费降低ai率全靠这招。

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

作者头像 李华
网站建设 2026/2/21 14:54:48

【毕业设计】机器学习基于python深度学习的乐器识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/2/23 12:32:48

【课程设计/毕业设计】机器学习 基于python深度学习识别水面漂浮垃圾

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华