ABAP 导入Excel形成内表

在这里插入图片描述

文章目录

  • 创建导入模板
  • 程序实现
  • 代码
  • 代码解析
  • 运行结果

创建导入模板

在这里插入图片描述

程序实现

在这里插入图片描述

代码

*&---------------------------------------------------------------------*
*& Report Z_EXCEL_UPLOAD_LHY
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_EXCEL_UPLOAD_LHY.
TABLES SSCRFIELDS.DATA: LS_FUNCTXT TYPE SMP_DYNTXT.
CONSTANTS:COS_TEMPLATE TYPE W3OBJID VALUE 'ZFI001',COS_FILENAME TYPE STRING VALUE '财务导入模板.xlsx'.
TYPES: BEGIN OF T_MARC,MATNR TYPE MARC-MATNR, "物料编号WERKS TYPE MARC-WERKS, "工厂MAKTX TYPE MAKT-MAKTX,  "物料描述MATKL TYPE MARA-MATKL,  "物料组END   OF T_MARC.
DATA GT_DATA TYPE TABLE OF T_MARC.SELECTION-SCREEN BEGIN OF BLOCK BK1.PARAMETERS P_FILE TYPE RLGRAP-FILENAME  MODIF ID M1.
SELECTION-SCREEN END OF BLOCK BK1.
**--按钮定义
SELECTION-SCREEN FUNCTION KEY 1.AT SELECTION-SCREEN ON VALUE-REQUEST FOR  P_FILE. "按选择帮助<F4>键时触发该事件PERFORM FRM_GET_FILE_NAME CHANGING P_FILE.INITIALIZATION.
**--按钮定义-初始化CLEAR LS_FUNCTXT.LS_FUNCTXT-ICON_ID   = ICON_IMPORT. "图标,可以通过ICON查找LS_FUNCTXT-ICON_TEXT = '下载文件'."描述SSCRFIELDS-FUNCTXT_01 = LS_FUNCTXT.AT SELECTION-SCREEN.
**--按钮响应CASE SSCRFIELDS-UCOMM.WHEN 'FC01'.PERFORM FRM_DOWNLOAD_TEMPLATE USING COS_TEMPLATE COS_FILENAME.WHEN OTHERS.ENDCASE.START-OF-SELECTION."解析Excel文件到内表PERFORM FILE_DATA_INPUT.**&---------------------------------------------------------------------*
**& Module STATUS_9000 OUTPUT
**&---------------------------------------------------------------------*
**&
**&---------------------------------------------------------------------*
*MODULE STATUS_9000 OUTPUT.
*  SET PF-STATUS 'STANDARD'.
** SET TITLEBAR 'xxx'.
*ENDMODULE.
*&---------------------------------------------------------------------*
*& Form frm_get_file_name
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- P_FILE
*&---------------------------------------------------------------------*
FORM FRM_GET_FILE_NAME  CHANGING CV_FILE.DATA: LT_FILETABLE TYPE FILETABLE,  "表类型LS_FILETABLE TYPE FILE_TABLE, "结构类型LV_RC        TYPE I.FREE LT_FILETABLE.CLEAR: LV_RC.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOGEXPORTING
*     window_title            =DEFAULT_EXTENSION       = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
*     default_filename        =FILE_FILTER             = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
*     with_encoding           =
*     initial_directory       =
*     multiselection          =CHANGINGFILE_TABLE              = LT_FILETABLERC                      = LV_RC
*     user_action             =
*     file_encoding           =EXCEPTIONSFILE_OPEN_DIALOG_FAILED = 1CNTL_ERROR              = 2ERROR_NO_GUI            = 3NOT_SUPPORTED_BY_GUI    = 4OTHERS                  = 5.READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1.IF SY-SUBRC <> 0.
*     Implement suitable error handling hereENDIF.IF SY-SUBRC EQ 0.CV_FILE = LS_FILETABLE-FILENAME.ENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> COS_TEMPLATE
*&      --> COS_FILENAME
*&---------------------------------------------------------------------*
FORM FRM_DOWNLOAD_TEMPLATE  USING   U_OBJID TYPE W3OBJIDU_FILE_NAME TYPE STRING.DATA: LS_KEY      TYPE WWWDATATAB,LV_FILENAME TYPE STRING,LV_PATH     TYPE STRING,LV_FULLPATH TYPE STRING."判断模板是否存在SELECT SINGLE * FROM WWWDATAWHERE RELID EQ 'MI'AND OBJID EQ @U_OBJIDINTO CORRESPONDING FIELDS OF @LS_KEY.IF SY-SUBRC NE 0.
*   模板&1不存在MESSAGE 'ZFI001下载模板不存在' TYPE 'E'."ZFI001RETURN.ENDIF.
*   调用函数打开文件选择框CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOGEXPORTING
*     window_title              =DEFAULT_EXTENSION         = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCELDEFAULT_FILE_NAME         = U_FILE_NAME
*     with_encoding             =
*     file_filter               =
*     initial_directory         =
*     prompt_on_overwrite       = 'X'CHANGINGFILENAME                  = LV_FILENAMEPATH                      = LV_PATHFULLPATH                  = LV_FULLPATH
*     user_action               =
*     file_encoding             =EXCEPTIONSCNTL_ERROR                = 1ERROR_NO_GUI              = 2NOT_SUPPORTED_BY_GUI      = 3INVALID_DEFAULT_FILE_NAME = 4OTHERS                    = 5.IF SY-SUBRC <> 0.
*   Implement suitable error handling hereENDIF.CHECK LV_FULLPATH NE ''.
*   下载SMW0模版CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGKEY         = LS_KEYDESTINATION = CONV LOCALFILE( LV_FULLPATH ).ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILE_DATA_INPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FILE_DATA_INPUT .CLEAR GT_DATA. "清空内表DATA: LT_INTERN TYPE STANDARD TABLE OF ALSMEX_TABLINE.DATA: ERROR_STR TYPE STRING.FREE: LT_INTERN.CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGFILENAME                = P_FILEI_BEGIN_COL             = 1I_BEGIN_ROW             = 2I_END_COL               = 99I_END_ROW               = 65536TABLESINTERN                  = LT_INTERNEXCEPTIONSINCONSISTENT_PARAMETERS = 1UPLOAD_OLE              = 2OTHERS                  = 3.IF SY-SUBRC NE 0.ENDIF.SORT LT_INTERN BY ROW COL.LOOP AT LT_INTERN INTO DATA(LS_INTERN).AT NEW ROW. "如果字段ROWROW的左侧全部字段的数据,与上一行数据不一致,则执行代码。APPEND INITIAL LINE TO GT_DATA ASSIGNING FIELD-SYMBOL(<FS_DATA>).ENDAT."按照现在的LS_INTERNCOL的值,分配结构<FS_DATA>的对应下标的地址给指针<FS_VAL>ASSIGN COMPONENT LS_INTERN-COL OF STRUCTURE <FS_DATA> TO FIELD-SYMBOL(<FS_VAL>).<FS_VAL> = LS_INTERN-VALUE.CLEAR LS_INTERN.ENDLOOP.CL_DEMO_OUTPUT=>DISPLAY( GT_DATA ).
ENDFORM.

代码解析

在这里插入图片描述

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

特殊配合力(SCA)作为全基因组关联分析(GWAS)的表型,其生物学意义和应用价值

生物学意义 解析非加性遗传效应 特殊配合力(SCA)主要反映特定亲本组合的杂交优势,由非加性遗传效应(如显性、超显性、上位性)驱动。显性效应涉及等位基因间的显性互作,上位性效应则涉及不同位点间的基因互作。通过SCA-GWAS,可以定位调控这些非加性效应的关键基因组区域…

应急响应基础模拟靶机-security1

PS:杰克创建在流量包(result.pcap)在根目录下&#xff0c;请根据已有信息进行分析 1、攻击者使用的端口扫描工具是? 2、通过流量及日志审计&#xff0c;攻击者上传shell的时访问web使用IP地址是多少? 3、审计流量日志&#xff0c;攻击者反弹shell的地址及端口? 4、攻击者…

uniapp-商城-47-后台 分类数据的生成(通过数据)

在第46章节中&#xff0c;我们为后台数据创建了分类的数据表结构schema&#xff0c;使得可以通过后台添加数据并保存&#xff0c;同时使用云函数进行数据库数据的读取。文章详细介绍了如何通过前端代码实现分类管理功能&#xff0c;包括获取数据、添加、更新和删除分类。主要代…

ClickHouse的基本操作说明

说明 文章内容包括数据库管理、表操作及查询等核心功能 创建数据库 -- 默认引擎&#xff08;Atomic&#xff09; CREATE DATABASE IF NOT EXISTS test_db; -- MySQL引擎&#xff08;映射外部MySQL数据库&#xff09; CREATE DATABASE mysql_db ENGINE MySQL(host:port, m…

Nacos源码—7.Nacos升级gRPC分析四

大纲 5.服务变动时如何通知订阅的客户端 6.微服务实例信息如何同步集群节点 6.微服务实例信息如何同步集群节点 (1)服务端处理服务注册时会发布一个ClientChangedEvent事件 (2)ClientChangedEvent事件的处理源码 (3)集群节点处理数据同步请求的源码 (1)服务端处理服务注册…

《Overlapping Experiment Infrastructure: More, Better, Faster》论文阅读笔记

文章目录 1 背景2 三个核心概念3 Launch层&#xff1a;特性发布的专用机制4 流量分发策略和条件筛选4.1 四种流量分发类型4.2 条件筛选机制 5 工具链与监控体系6 实验设计原则7 培训参考与推荐 1 背景 谷歌&#xff08;Google&#xff09;以数据驱动著称&#xff0c;几乎所有可…

国芯思辰| 医疗AED可使用2通道24位模拟前端SC2946(ADS1292)

生物电信号监测技术在医疗健康行业中发展迅速&#xff0c;成为评估人体生理健康状况的关键手段。心电&#xff08;ECG&#xff09;、脑电&#xff08;EEG&#xff09;和肌电&#xff08;EMG&#xff09;等信号&#xff0c;通过精密模拟前端芯片捕捉和处理&#xff0c;对医疗诊断…

数据结构【二叉搜索树(BST)】

二叉搜索树 1. 二叉搜索树的概念2. 二叉搜索树的性能分析3.二叉搜索树的插入4. 二叉搜索树的查找5. 二叉搜索树的删除6.二叉搜索树的实现代码7. 二叉搜索树key和key/value使用场景7.1 key搜索场景&#xff1a;7.2 key/value搜索场景&#xff1a; 1. 二叉搜索树的概念 二叉搜索…

RDMA高性能网络通信实践

RDMA高性能网络通信实践 一、背景介绍二、方法设计A.实现方案B.关键技术点 三、代码及注释四、注意事项 一、背景介绍 远程直接内存访问&#xff08;RDMA&#xff09;技术通过绕过操作系统内核和CPU直接访问远程内存&#xff0c;实现了超低延迟、高吞吐量的网络通信。该技术广…

ndarray数组掩码操作,True和False获取数据

#数组掩码的表示方法 def testht05():a np.arange(1,10)mask [True,False,True,True,False,True,False,True,True]print(a[mask]) 另外的用法&#xff1a; #掩码操作获取子集 def testht06():a np.arange(1,100)print(a[a%3 0 & (a%7 0)] )b np.array([A,"B&qu…

索引工具explain

EXPLAIN 是 MySQL 中一个非常有用的工具,用于分析查询的执行计划。通过 EXPLAIN,你可以了解 MySQL 是如何执行查询的,包括它如何使用索引、表的扫描方式等。这有助于优化查询性能。以下是 EXPLAIN 输出的各个字段的详细解释: 基本用法 EXPLAIN SELECT * FROM table_name …

Git回顾

参考视频:【GeekHour】一小时Git教程 一句话定义&#xff1a;Git是一个免费开源的分布式版本控制系统。 版本控制系统可以分为两种&#xff0c;1.集中式&#xff08;SVN&#xff0c;CVS&#xff09;&#xff1b;2.分布式&#xff08;git&#xff09; git的工作区域和文件状态…

python打卡day20

特征降维------特征组合&#xff08;以SVD为例&#xff09; 知识点回顾&#xff1a; 奇异值的应用&#xff1a; 特征降维&#xff1a;对高维数据减小计算量、可视化数据重构&#xff1a;比如重构信号、重构图像&#xff08;可以实现有损压缩&#xff0c;k 越小压缩率越高&#…

GuPPy-v1.2.0安装与使用-生信工具52

GuPPy&#xff1a;Python中用于光纤光度数据分析的免费开源工具 01 背景 Basecalling 是将原始测序信号转换为碱基序列的过程&#xff0c;通俗地说&#xff0c;就是“把碱基识别出来”。这一过程在不同代测序技术中各不相同&#xff1a; 一代测序是通过解析峰图实现&#xff1…

47. 全排列 II

题目 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输出&#xff1a; [[1,1,2],[1,2,1],[2,1,1]] 示例 2&#xff1a; 输入&#xff1a;nums [1,2,3] 输出&#xff1a;[[1,2,3…

ERP系统操作流程,如何快速搭建流程体系

ERP流程图&#xff0c;如何搭建和建立&#xff0c;ERP系统操作流程&#xff0c;ERP系统操作流程图&#xff0c;采购流程&#xff0c;销售流程&#xff0c;仓库流程&#xff0c;MRP流程&#xff0c;PMC流程&#xff0c;财务流程&#xff0c;应收流程&#xff0c;应付流程&#x…

class path resource [] cannot be resolved to absolute file path

问题情景 java应用程序在IDE运行正常&#xff0c;打成jar包后执行却发生异常&#xff1a; java.io.FileNotFoundException: class path resource [cert/sync_signer_pri_test.key] cannot be resolved to absolute file path because it does not reside in the file system:…

19、HashTable(哈希)、位图的实现和布隆过滤器的介绍

一、了解哈希【散列表】 1、哈希的结构 在STL中&#xff0c;HashTable是一个重要的底层数据结构, 无序关联容器包括unordered_set, unordered_map内部都是基于哈希表实现 哈希表又称散列表&#xff0c;一种以「key-value」形式存储数据的数据结构。哈希函数&#xff1a;负责将…

基于 Flask的深度学习模型部署服务端详解

基于 Flask 的深度学习模型部署服务端详解 在深度学习领域&#xff0c;训练出一个高精度的模型只是第一步&#xff0c;将其部署到生产环境中&#xff0c;为实际业务提供服务才是最终目标。本文将详细解析一个基于 Flask 和 PyTorch 的深度学习模型部署服务端代码&#xff0c;帮…

Vue3 + Node.js 实现客服实时聊天系统(WebSocket + Socket.IO 详解)

Node.js 实现客服实时聊天系统&#xff08;WebSocket Socket.IO 详解&#xff09; 一、为什么选择 WebSocket&#xff1f; 想象一下淘宝客服的聊天窗口&#xff1a;你发消息&#xff0c;客服立刻就能看到并回复。这种即时通讯效果是如何实现的呢&#xff1f;我们使用 Vue3 作…