当前位置: 首页 > news >正文

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.
http://www.jsqmd.com/news/201517/

相关文章:

  • AI如何自动修复Windows打印后台处理程序问题
  • 5分钟在Linux上搭建Chrome自动化测试环境
  • 零基础入门:ChromeDriver环境搭建指南
  • 基于springboot旅游管理系统vue3
  • ELK日志监控平台如何提升运维效率
  • 零基础学Python UV处理:从安装到第一个脚本
  • 电商平台如何用Redis管理工具优化性能?
  • 对比实测:VMWARE ESXi vs 裸机服务器性能损耗
  • 2026紧急降ai!aigc免费降重只需3分钟,这才是降低ai率的正确方式。
  • FASTGPT如何用AI重构代码开发流程?
  • 免费降ai率工具搭配5个神技,论文降aigc瞬间通关,降低ai其实很简单。
  • 恒域威串口屏与 STM32 通信实现技术说明文档
  • 模型上下文协议
  • AI助力SQL Server 2012安装:智能解决常见问题
  • 3分钟论文降ai!亲测降ai率从80%降到10%,免费降低ai率全靠这招。
  • React2Shell漏洞深度剖析:从React服务器组件到远程代码执行
  • 用AI快速克隆KBH GAMES游戏网站:5分钟实现高仿项目
  • 数据结构-栈
  • ED2K协议入门:从零开始理解电驴网络
  • 从身份到集群:多智能体协作的认知架构
  • ABC 433 EFG
  • 设计模式学习(8) 23-6 适配器模式
  • VIDRESZR.DLL文件损坏丢失找不到 打不开问题 下载方法免费分享
  • 如何用AI快速解决Spring启动异常:Context初始化失败问题
  • 深度学习毕设选题推荐:基于python_CNN卷积神经网络识别花卉是否绽放人工智能
  • 智能硬件设计革命:基于FSM的Verilog代码自动生成器
  • 零基础搭建AI电子教室:3天实现智能教学
  • vm3dum_loader.dll文件问题 免费下载方法分享
  • COMFYUI零基础入门:30分钟搭建第一个工作流
  • 全球因瓦合金箔材市场分析与行业调研