`
JerryWang_SAP
  • 浏览: 1029633 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

使用ABAP操作Excel的几种方法

阅读更多

这篇文章本来不在我计划之内,因为最近一个朋友微信上问到我这个问题,但我平时在SAP研究院工作中从没遇到过需要用ABAP操作Excel的需求,因此也没有太多技术实现细节可以分享给大家,只能泛泛写一些。

用ABAP操作Excel这个需求算是比较常见,所以Jerry希望这篇文章能起到抛砖引玉的效果,在这个话题上有多年工作经验的朋友们,欢迎留言,指出Jerry文章中不足或者错误之处。

在SAPGUI里根据关键字OLE搜索,能找到通过ABAP操作Excel的一种办法:

这段文档说的比较清楚,微软的Word和Excel这种Office应用,提供了一种所谓automation的接口,暴露的公有类的方法和属性可以被其他应用消费。

作为ABAP应用开发人员,我们通过调用OLE对象的方法CALL METHOD, GET PROPERTY,SET PROPERTY等来访问微软Word和Excel的automation接口,代码看起来像这样:

上面这个函数RH_START_EXCEL_DATA_OLE调用微软Excel的automation接口,新建一个Excel workbook,然后准备把ABAP内表里的数据写到Excel里。

你也许会问,我咋知道Excel里有哪些公有的类和方法可以被ABAP调用呢?

在Excel里点击右键,选择View Code:

打开Microsoft Visual Basic Object Brower,所有可用的类和方法都列在这里了,上面ABAP代码第218行调用的workbook的open方法在列表里也能找到。

这个解决方案只在windows平台有效,并且需要运行SAPGUI的Presentation Server上安装有微软的Excel应用。

我们采用OLE的方式操作Excel时,打开Windows操作系统的任务管理器,会发现一个以/automation -Embedding参数启动的Excel进程。

这里的-Embedding参数,来自OLE的全称:Object Linking and Embedding里的一部分。OLE是微软的一项非常古老的技术了。

微软和SAP两位大佬,Bill Gates和Hasso Plattner 1993年的照片:

关于OLE,Jerry知道的就这么点了,在SAP研究院里如今我们还是会和微软的技术打交道,比如微软的Azure.

如果Jerry没记错的话, 微软Office从2007版本开始, 采用新的支持Office Open XML标准的格式来管理Excel和Word等文件。Jerry 2014年在SAP成都研究院CRM开发团队负责CRM Document Builder这个模块,当时编写过使用ABAP操作Word文档的代码。

以Word为例,下图是我创建了一个最简单的Word文档,包含了一个Header区域,一个由三行彩色文字组成的段落,还有一张图片。

我们把这个Word文档的扩展名从.docx改成.zip, 然后双击,就可以用解压软件比如winrar打开。

于是发现这一个最简单的按照Office Open XML协议实现的Word文档,实际上由如此多的xml和文件夹构成。

使用SAP标准的类CL_DOCX_DOCUMENT读取Word文件内容:

上述代码的简要说明:

(1) 将word文档的二进制内容传入方法cl_docx_document=>load_document,得到一个文档对象引用,然后就可以借助该对象引用调用各种方法了。

(2) word文档的创建者,创建时间,最后修改时间等信息都存储在所谓的“Core property part”内,可以通过方法lo_document->get_corepropertiespart获得"Core property part"的引用,再使用该引用调用方法get_data获得实际内容。

下图是get_data返回的内容的一个例子,可以看出是xml格式。

(3) 现在我们准备读取Word文档的正文了。使用方法lo_document->get_maindocumentpart得到Word文档正文,文字的字体类型,颜色也包含在内。如下图所示:

(4) Word文档里插入的图片的二进制内容当然也是可以读取出来的。使用方法:lo_image_parts->get_part返回。

Excel的例子我没有动手做过,不过原理类似,大家可以用开发包S_OOXML_CORE里的CL_XLSX_DOCUMENT来操作格式为xlsx的Excel文档。

除此之外,还有一个著名的开源项目,abap2xlsx, Jerry没有试过,感兴趣的朋友可以试试。

最后,大家在SE24里使用关键字XSLX以及SE38里搜索_OLE,

可以从搜索列表里选一些点进去,参考SAP标准程序是如何操作Excel文档的。

希望这些内容对大家有用,感谢阅读。

更多阅读

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

0
1
分享到:
评论

相关推荐

    ABAP 读取EXCEL到内表的函数和自编程序.doc

    本文将详细介绍几种常见的用于读取Excel文件的方法,并针对如何处理超过256个字符的单元格内容提供解决方案。 #### 二、SAP提供的标准函数模块 SAP提供了几个标准的函数模块来帮助开发者读取Excel文件并将其转换为...

    批量下载BOM到EXCEL-ABAP代码

    标题“批量下载BOM到EXCEL-ABAP代码”表明该代码的主要功能是使用ABAP语言将物料清单(BOM)批量下载到EXCEL表格中。 描述分析 描述“批量下载BOM到EXCEL-ABAP代码”与标题相同,表明该代码的主要功能是批量下载...

    abap2xlsx-master(船长).zip

    ABAP2XLSX是一个基于SAP ABAP编程语言的开源库,专为在SAP环境中操作Microsoft Office Excel文件而设计。...总的来说,ABAP2XLSX为SAP系统的Excel操作提供了一种强大而便捷的解决方案,极大地扩展了ABAP编程的潜力。

    abap简单的ole练习

    3. 对Excel的操作:在ABAP中,可以使用OLE技术来对Excel进行操作,例如创建工作簿、工作表、单元格,设置单元格的值、格式等。 4. 内部表的应用:在ABAP中,内部表可以用来存储要导出到Excel中的数据。 5. CALL ...

    SAP ABAP ZALSM-EXCEL-TO-INTERNAL-TABLE 完整实施附件(源代码、说明)

    ABAP 支持的 Excel 文件格式通常是 .xls 和 .xlsx,这两种格式在结构上有区别。对于较旧的 .xls 格式,ABAP 使用 `CL_XLS_FILE` 类;而对于 .xlsx(基于 Office Open XML 格式),则使用 `CL_XLSM_FILE`。 6. **...

    abap培训全套教材

    ABAP(Advanced Business Application Programming)是SAP系统中的一种编程语言,主要用于开发和定制企业级业务应用程序。本套“ABAP培训全套教材”是针对初学者和内部员工设计的,内容涵盖ABAP的基础到进阶知识,...

    SAP_ABAP_ALV技术

    本文将深入探讨SAP ABAP ALV技术的核心概念、使用场景及其实现过程。 一、ALV技术概述 ALV技术最初是为了改进传统的SAP List Reports而开发的,传统的List Reports在显示大量数据时性能较低且用户交互性差。ALV...

    ABAP批量创建元素程序

    在SAP系统中,ABAP(Advanced Business Application Programming)是一种编程语言,用于开发和定制企业级应用程序。在本例中,我们关注的是批量创建元素(数据元素)的程序,这通常是在进行数据模型设计或者系统配置...

    ABAP用户指南.doc

    每种数据类型都有其特定的用途和操作方式。 - 变量与常量:变量用于存储数据,而常量则是在程序运行期间不可更改的值。ABAP允许开发者定义不同类型的变量和常量,并通过赋值语句进行初始化。 - 控制结构:ABAP提供...

    sap abap BDC程序举例

    这里调用了 `KCD_EXCEL_OLE_TO_INT_CONVERT` 函数模块,它能将 Excel 文件中的数据导入到 ABAP 系统内部,以便进一步处理。此过程还包括对导入数据的遍历操作,通过循环遍历 `L_INTERN` 表中的每一行数据,并将其...

    SAP_List_Viewer_ALV__in_Web_Dynpro_ABAP.pdf

    整体上,这篇文档为SAP List Viewer(ALV)在Web Dynpro ABAP中的使用提供了一个详尽的参考,它覆盖了从基础的组件集成到复杂的配置和导出操作的各个方面。通过这些知识点,开发者可以有效地在Web Dynpro ABAP应用程序...

    BDC BATCH INPUT 技术详解 (有图)

    BDC(Batch Data Conversion)是一种特殊的技术,在 SAP 系统中,它可以将重复的数据输入操作自动化,以提高工作效率和减少人工操作错误。该技术通过记录用户的一次业务操作的所有过程,然后通过程序来模拟用户的...

    ABAP开发培训经典入门.pptx

    ABAP程序主要包括以下几种类型: 1. 报表:最常见的ABAP程序形式,用于展示数据,如财务报表。 2. 接口:包括RFC/BAPI、iDoc和Web服务,它们基于Function Module,用于不同系统间的通信。 3. 增强:对SAP标准程序的...

    ABAP Program Tips

    - **Data Set**:数据集的操作方法。 - **WS_DOWNLOAD**:使用WS_DOWNLOAD功能下载文件。 - **GUI_DOWNLOAD with Popup File Name Request**:使用GUI_DOWNLOAD并弹出文件名请求对话框。 #### 3.4 宏 - **Macros**...

    SAP ABAP ALV教程

    ABAP LIST VIEWER(ALV)是一种标准化、简单化R/3系统中的表单浏览器,能够提供给用户一个统一的表单格式和用户接口。ALV可以显示简单表单(SIMPLE LIST)和层次表(SEQUENTIAL LIST)。简单表单包含一系列不分层次...

    SAP_恶魔_ABAP_Batch Input应用_狂套

    ### SAP ABAP Batch Input 应用详解 #### 第一章 ECATT/SCAT 说明 ##### 第一节 ECATT 与 SCAT 区别 在SAP系统中,ECATT (Enhanced ...无论采用哪种方法,都需要仔细规划和实施,以确保数据的准确性和完整性。

    SAP OLE开发技术介绍.pdf

    在SAP OLE开发中,通常有以下几种操作Excel的方式: 1. OLE接口:通过SAP的OLE接口,ABAP程序可以直接创建和操作Excel对象。这包括创建新的工作簿,填充数据,设置单元格格式,以及应用公式和图表。 2. DOI...

    SAP ALV Grid资料整理 (很全面)

    SAP ALV Grid 是一种灵活的工具,用于显示列表,并提供了常见的列表操作通用函数,可以通过自定义选项来增强其功能。ALV Grid 控件可以创建非层次的友好交互式报表,是一个基于客户端的控件。 ALV Grid 控件的功能...

    SAP_BDC精华版教材.doc

    SAP BDC(Batch Data Conversion)技术是一种在SAP系统中高效、自动化处理大量数据录入的方法。当需要在系统间迁移数据或者批量更新大量记录时,BDC技术提供了方便的解决方案,避免了手动操作的繁琐和错误可能性。 ...

    SAP DBC 实例释义

    SAP DBC (Database Connection) 实例主要涉及的是在SAP系统中批量处理数据的方法,尤其是使用BDC(Batch Data Conversion)技术。BDC技术是一种高效的数据导入工具,尤其适用于需要重复执行相同操作但数据不同的场景...

Global site tag (gtag.js) - Google Analytics