ABAP使用OLE方法总结

时间:2019-05-12 12:17:55下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《ABAP使用OLE方法总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《ABAP使用OLE方法总结》。

第一篇:ABAP使用OLE方法总结

SAP ABAP OLE 操作EXCEL小结

ABAP直接操作EXCEL实现数据处理。这里是用OLE实现操作EXCEL的。现在还有

DOI操作EXCEL等方法。以后用到再做介绍。此处不是直接生成EXCEL文件,而是从

服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存。也可以直接创建

新的EXCEL文件往里面传递数据并设置格式。这里不做介绍。

1.采用模板文件实现。上传EXCEL模板

T-code:SMW0 WebRFC 的二进制数据 包:MI

点击

模板数据保存在系统表www.xiexiebang.comtl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.IF lc_fullpath = “".MESSAGE ”不能打开excel“ TYPE ”E“.ENDIF.IF sy-subrc = 0.p_dest = lc_fullpath.* concatenate p_objid ”.XLS“ into ls_objnam.CONDENSE ls_objnam NO-GAPS.SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata WHERE srtf2 = 0 AND relid = ”MI“ AND objid = p_objid.*检查表wwwdata中是否存在所指定的模板文件

IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,则给出错误提示

CONCATENATE ”模板文件“ ls_objnam ”不存在“ INTO ls_errtxt.MESSAGE ls_errtxt TYPE ”I“.ENDIF.ls_destination = p_dest.”保存路径

*如果存在,调用DOWNLOAD_WEB_OBJECT 函数下载模板到路径下

CALL FUNCTION ”DOWNLOAD_WEB_OBJECT“ EXPORTING key = lo_objdata destination = ls_destination IMPORTING rc = li_rc.IF li_rc NE 0.CONCATENATE ”模板文件:“ ls_objnam ”下载失败“ INTO ls_errtxt.MESSAGE ls_errtxt TYPE ”E“.ENDIF.fname = ls_destination.ENDIF.ENDFORM.”fm_excel

3.下载完模板后,打开模板文件,填入数据

CREATE OBJECT excel “EXCEL.APPLICATION”.“Create EXCEL OBJECT IF sy-subrc NE 0.EXIT.ENDIF.SET PROPERTY OF excel ”Visible“ = 0.”1/0 是否显示EXCEL

CALL METHOD OF excel “Workbooks” = workbook.CALL METHOD OF workbook “Open” EXPORTING #1 = fname..“打开上面下载路径下的excel文件

CALL METHOD OF excel ”Sheets“ = sheet EXPORTING #1 = 1.CALL METHOD OF sheet ”Select“.CALL METHOD OF sheet ”ACTIVATE“.“sheet 激活

SET PROPERTY OF sheet ”NAME“ = sheetname.“设定sheet名称

*此处假设内表itab 中已经存在需要写入excel中的数据

*并且假如从模板的第7行开始插入数据

LOOP AT itab INTO wa.tab = wa-tabix + 6.*在excel中插入一行

PERFORM excel_row_insert USING sheet tab 1.*填充所插入行的每个单元格的数据

PERFORM fill_range USING tab 1 wa-t01.PERFORM fill_range USING tab 2 wa-t02.PERFORM fill_range USING tab 3 wa-t03.PERFORM fill_range USING tab 4 wa-t04.PERFORM fill_range USING tab 5 wa-t05.PERFORM fill_range USING tab 6 wa-t06.ENDLOOP.*设置EXCEL中所插入的数据行边框线格式为黑色有边框

bod = tab.CONDENSE bod NO-GAPS.CONCATENATE ”A6:F“ bod INTO bod.PERFORM borderrange USING excel bod.PERFORM sub_excel_save.”保存excel数据

*&-------* *& Form sub_excel_save *&-------* * text *--------* FORM sub_excel_save.GET PROPERTY OF excel “ActiveSheet” = sheet.“获取活动SHEET

FREE OBJECT sheet.FREE OBJECT workbook.GET PROPERTY OF excel “ActiveWorkbook” = workbook.CALL METHOD OF workbook “SAVE”.SET PROPERTY OF excel “Visible” = 1.“是否显示EXCEL 此处显示不退出

* SET PROPERTY OF excel ”Visible“ = 1.* CALL METHOD OF workbook ”CLOSE“.* CALL METHOD OF excel ”QUIT“.注释部分为不显示直接退出

FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT excel.ENDFORM.”save_book

*&-------* *& 向excel中的指定行插入N行

*&-------* FORM excel_row_insert USING lcobj_sheet lc_row lc_count.DATA lc_range TYPE ole2_object.DATA h_borders TYPE ole2_object.DO lc_count TIMES.CALL METHOD OF lcobj_sheet “Rows” = lc_range EXPORTING #1 = 6.CALL METHOD OF lc_range “Copy”.“COPY第6行插入一个新行

CALL METHOD OF lcobj_sheet “Rows” = lc_range EXPORTING #1 = lc_row.CALL METHOD OF lc_range “Insert”.CALL METHOD OF lc_range “ClearContents”.“是否需要清空Cell ENDDO.ENDFORM.”excel_row_insert

*&-------* *& Form fill_range *&-------* * text 填充EXCEL 单元格

*--------* *-->VALUE(F_ROW)text *-->VALUE(F_COL)text *-->VALUE(F_VALUE)text *--------* FORM fill_range USING value(f_row)value(f_col)value(f_value).DATA: row TYPE i, col TYPE i.row = f_row.col = f_col.CALL METHOD OF excel “CELLS” = cell EXPORTING #1 = row #2 = col.SET PROPERTY OF cell “VALUE” = f_value.ENDFORM.“fill_range

*&-------* *& Form borderrange *&-------* * text:设置EXCEL中所插入的数据行边框线格式

*--------* *-->LCOBJ_EXCEL text *-->RANGE text *--------* FORM borderrange USING lcobj_excel range.DATA: lc_cell TYPE ole2_object , lc_borders TYPE ole2_object.CALL METHOD OF lcobj_excel ”RANGE“ = lc_cell EXPORTING #1 = range.DO 4 TIMES.CALL METHOD OF lc_cell ”BORDERS“ = lc_borders

EXPORTING #1 = sy-index.SET PROPERTY OF lc_borders ”LineStyle“ = ”1“.SET PROPERTY OF lc_borders ”WEIGHT“ = 2.”4=max SET PROPERTY OF lc_borders “ColorIndex” = “1”.ENDDO.FREE OBJECT lc_borders.FREE OBJECT lc_cell.ENDFORM."borderrange

暂时只用到了这么多,还有ABAP设置EXCEL字体,对齐方式等功能。什么时候用到了再

做研究。希望对大家有所帮助。

第二篇:SAP ABAP OLE操作EXCEL小结

ABAP直接操作EXCEL实现数据处理。这里是用OLE实现操作EXCEL的。现在还有 DOI操作EXCEL等方法。以后用到再做介绍。此处不是直接生成EXCEL文件,而是从 服务器已经上传的EXCEL模板中下载模板然后打开修改实现数据保存。也可以直接创建 新的EXCEL文件往里面传递数据并设置格式。这里不做介绍。

1.采用模板文件实现。上传EXCEL模板 T-code:SMW0

注意选择的是binary data(对于EXCEL模版上传)如果是HTML上传,对于存于www.xiexiebang.comtl_error = 1 error_no_gui = 2 not_supported_by_gui = 3 OTHERS = 4.IF lc_fullpath = ''.MESSAGE '不能打开excel' TYPE 'E'.ENDIF.IF sy-subrc = 0.p_dest = lc_fullpath.* concatenate p_objid '.XLS' into ls_objnam.CONDENSE ls_objnam NO-GAPS.SELECT SINGLE relid objid FROM wwwdata INTO CORRESPONDING FIELDS OF lo_objdata WHERE srtf2 = 0 AND relid = 'MI' AND objid = p_objid.“先尝试取一下,接着检查是否取到制定模版问件 *检查表wwwdata中是否存在所指定的模板文件

IF sy-subrc NE 0 OR lo_objdata-objid EQ space.“如果不存在,则给出错误提示

CONCATENATE '模板文件' ls_objnam '不存在' INTO ls_errtxt.MESSAGE ls_errtxt TYPE 'I'.ENDIF.ls_destination = p_dest.”保存路径

*如果存在,调用DOWNLOAD_WEB_OBJECT 函数下载模板到路径下

CALL FUNCTION 'DOWNLOAD_WEB_OBJECT' EXPORTING key = lo_objdata destination = ls_destination IMPORTING rc = li_rc.IF li_rc NE 0.CONCATENATE '模板文件:' ls_objnam '下载失败' INTO ls_errtxt.MESSAGE ls_errtxt TYPE 'E'.ENDIF.fname = ls_destination.ENDIF.ENDFORM.“fm_excel

3.下载完模板后,打开模板文件,填入数据 DATA: EXCEL TYPE ole2_object, WORKBOOK TYPE ole2_object, SHEET TYPE ole2_object.CREATE OBJECT excel 'EXCEL.APPLICATION'.”Create EXCEL OBJECT IF sy-subrc NE 0.EXIT.ENDIF.SET PROPERTY OF excel 'Visible' = 0.“1/0 是否显示EXCEL CALL METHOD OF excel 'Workbooks' = workbook.CALL METHOD OF workbook 'Open' EXPORTING #1 = fname..”打开上面下载路径下的excel文件

CALL METHOD OF excel 'Sheets' = sheet EXPORTING #1 = 1.CALL METHOD OF sheet 'Select'.CALL METHOD OF sheet 'ACTIVATE'.“sheet 激活 DATA SHEETNAME TYPE STRING.SHEETNAME = 'TESTTESTTEST'.SET PROPERTY OF sheet 'NAME' = sheetname.“设定sheet名称 *此处假设内表itab 中已经存在需要写入excel中的数据 *并且假如从模板的第7行开始插入数据 DATA ITAB LIKE STANDARD TABLE OF SFLIGHT.DATA WA LIKE SFLIGHT.DATA: TAB TYPE I,BOD(5)TYPE C.SELECT * INTO TABLE ITAB FROM SFLIGHT UP TO 8 ROWS.LOOP AT itab INTO wa.tab = sy-tabix + 6.*在excel中插入一行

PERFORM excel_row_insert USING sheet tab 1.*填充所插入行的每个单元格的数据

PERFORM fill_range USING tab 1 wa-t01.PERFORM fill_range USING tab 2 wa-t02.PERFORM fill_range USING tab 3 wa-t03.PERFORM fill_range USING tab 4 wa-t04.PERFORM fill_range USING tab 5 wa-t05.PERFORM fill_range USING tab 6 wa-t06.ENDLOOP.*设置EXCEL中所插入的数据行边框线格式为黑色有边框

bod = tab.CONDENSE bod NO-GAPS.CONCATENATE 'A6:F' bod INTO bod.PERFORM borderrange USING excel bod.PERFORM sub_excel_save.“保存excel数据

*&-------* *& Form sub_excel_save *&-------* * text *--------* FORM sub_excel_save.GET PROPERTY OF excel 'ActiveSheet' = sheet.“获取活动SHEET FREE OBJECT sheet.FREE OBJECT workbook.GET PROPERTY OF excel 'ActiveWorkbook' = workbook.CALL METHOD OF workbook 'SAVE'.SET PROPERTY OF excel 'Visible' = 1.”是否显示EXCEL 此处显示不退出 * SET PROPERTY OF excel 'Visible' = 1.* CALL METHOD OF workbook 'CLOSE'.* CALL METHOD OF excel 'QUIT'.注释部分为不显示直接退出 FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT excel.ENDFORM.“save_book

*&-------* *& 向excel中的指定行插入N行

*&-------* FORM excel_row_insert USING lcobj_sheet lc_row lc_count.DATA lc_range TYPE ole2_object.DATA h_borders TYPE ole2_object.DO lc_count TIMES.CALL METHOD OF lcobj_sheet 'Rows' = lc_range EXPORTING #1 = 6.CALL METHOD OF lc_range 'Copy'.“COPY第6行插入一个新行

CALL METHOD OF lcobj_sheet 'Rows' = lc_range EXPORTING #1 = lc_row.CALL METHOD OF lc_range 'Insert'.CALL METHOD OF lc_range 'ClearContents'.”是否需要清空Cell ENDDO.ENDFORM.“excel_row_insert *&-------* *& Form fill_range *&-------* * text 填充EXCEL 单元格

*--------* *-->VALUE(F_ROW)text *-->VALUE(F_COL)text *-->VALUE(F_VALUE)text *--------* FORM fill_range USING value(f_row)value(f_col)value(f_value).DATA: row TYPE i, col TYPE i.row = f_row.col = f_col.CALL METHOD OF excel 'CELLS' = cell EXPORTING #1 = row #2 = col.SET PROPERTY OF cell 'VALUE' = f_value.ENDFORM.”fill_range *&-------* *& Form borderrange *&-------* * text:设置EXCEL中所插入的数据行边框线格式 *--------* *-->LCOBJ_EXCEL text *-->RANGE text *--------* FORM borderrange USING lcobj_excel range.DATA: lc_cell TYPE ole2_object , lc_borders TYPE ole2_object.CALL METHOD OF lcobj_excel 'RANGE' = lc_cell EXPORTING #1 = range.DO 4 TIMES.CALL METHOD OF lc_cell 'BORDERS' = lc_borders EXPORTING #1 = sy-index.SET PROPERTY OF lc_borders 'LineStyle' = '1'.SET PROPERTY OF lc_borders 'WEIGHT' = 2.“4=max SET PROPERTY OF lc_borders 'ColorIndex' = '1'.ENDDO.FREE OBJECT lc_borders.FREE OBJECT lc_cell.ENDFORM.”borderrange

暂时只用到了这么多,还有ABAP设置EXCEL字体,对齐方式等功能。什么时候用到了再 做研究。希望对大家有所帮助。

第三篇:ABAP知识总结

一. SAP在企业中的策略

On premise(前提)(知识库—资源流程)完全面向对象的概念,通过面向服务的架构,解决核心业务。

On demand 通过创新进行功能的扩展并集成在业务的整个流程里。

On device(产品策略)通过扩展消费者的需求,以提供满足消费者的策略,扩展SAP 的功能。

这三项完美结合,能确保数据的联系性和流程的完整结合。并通过多层应用对流程进行管理。

二. Sap 提供各种产品类型给不同规模的公司。

三. Sap business suite 提供适应不同企业需求的解决方案,还拥有大量针对特定行业的功能。Sap netweaver 的知识库:

核心应用(ERP/SRM/SCM)——工业应用——补充应用——SAP 应用的增强包

四. Applications 和 components

不同的应用可以包含相同的组件。

Components(sap ECC= sap central component)五. 逐步释放给广大用户使用:

Beta 测试版——释放给用户(restricted)——无限制的释放给用户

六. 业务的生命周期(维护策略):

主流维护(从限制到非限制)——扩展的维护——客户自定义的维护 七. Sap netweaver的层次和主要功能: 应用架构

三个维度,三个集成:共三层

人的集成(多渠道—portal门户和collaboration协作)——信息集成(主数据、知识、业务)——流程集成 第四层:这三种集成的应用平台为java和abap 数据库和系统 DB、OS 八.

1、Sap netweaver 应用服务提供了:多级架构;可靠的运行环境(java和abap);很高的扩展性;操作系统和数据库独立;方便扩展环境;支持多种协议;对执行企业流程有高的安全标准。、2、外部系统:表现层(支持多种用户接口,GUI 和browser)

应用层(支持多种操作系统)

数据库层(支持多种数据库)

3、应用层——dispatcher,通过分发器对表现层直接进行控制

通过ICM(内部通讯)控制

九、/n 退出当前

/nxxxx直接访问xxxx /n打开overview of sessions /oxxxx打开一个新的页面并访问xxxx /nend 关闭窗口,有提示信息 /nex 直接关闭 /i 删除当前窗口

十、AS(应用服务器)中ABAP Processes:三种

1.B/S

Message server(MS):处理信息在位于AS ABAP的分布式的触发器之间。每个SAP系统只配置一次MS

2.gateway(GW):在SAP 系统之间或者在SAP 系统与外部应用系统之间进行交流。每个GW有一个触发器

3.C/S

Internet communication manager(ICM):与SAP系统的交流利用web 协议(protocol),比如HTTP,ICM收到用户请求并传给SAP系统。可以配置一个最大的ICM给每个应用服务器

十一、用户传输请求的过程

表现层(GUI):将屏幕上的GUI图像展现给用户,再将其转化为内部的格式传递给AS ABAP 系统。

应用层:触发器将用户所有请求排列,遵循先进先出的原则。处理用户请求必须从abap数据库中读取数据。当一个工作流程完成,结果就会通过触发器返回给SAP GUI,SAP GUI通过对数据的编译然后向用户输出屏幕。这个阶段被称为buffer(缓存),经常被读取的数据通过缓存,可直接被读取,不用每次读取数据库中的。帮助加速处理用户请求。

数据库层:每一项工作流程都和ABAP数据库直接相连 问题应用层和数据库层之间如何进行数据的传输? ABAP 编译器通过专门的语言(OPEN SQL)访问数据库接口,DB interface 再通过Native SQL语言访问数据库层,或者直接在缓存中读取 ABAP 编译器直接通过Native SQL语言对数据库层进行访问

十二、PBO和 PAI

十三、业务流程中的数据同步:

1、SAP系统中的CRM获得订单信息,并将其传输到ERP的后端backend

2、格式化数据成相同类型的数据

3、通过远程调用RFC 技术实现

4、传输类型,每隔六十秒同步一次

5、在网上提供产品和服务 P135问题

1. 哪些接口或交流选项是SAP 所支持的? HTTP;SMTP;RFC;BAPIs 2. BAPIs 的作用?

Requst data from an sap system

Pass data to an sap system

Access business processes in SAP system 在程序中用字典元素定义数据对象

DATA mycarried TYPE s_carr_id.获得一个数据对象(变量)的类型指明在data element里是

DATA myconnid TYPE sbc400focc-connid.获得一个数据对象(变量)有相同的类型的结构体是sbc400focc-connid.PARAMENTERS_pa_carr TYPE spfli-carrid.获得一个域自动出现在屏上和spfli-carrid的变量类型相同。

DATA wa_focc TYPE sbc400fccc.其中data wa_focc type sbc400focc.是定义一个结构体,定义结构体的命名规 则通常是以wa_开头加上变量名,代表是一个结构体变量。

获得一个和结构体sbc400fccc有相同类型的结构体变量。

DATA wa_spfli TYPE spfli.data wa_spfli type spfli.是用来定义一个透明表。

获得与spfli表中一行具有相同类型的结构体变量。

第四篇:ABAP学习总结

SAP学习总结 信管0911

杨钏

2011-12-2

SAP学习总结

立谈之间,来集团参加ERP项目已近四个月,通过集团ERP项目组精心组织的培训,经过自己的努力学习,我对ERP的认识有了很大程度的转变。从一开始的不了解,带着对很多专业名词及模块功能的疑问,到现在融入到ERP项目组后,被SAP庞大的功能所震撼;从一开始认为SAP仅仅是一种应用软件,跟其他公司的ERP差不多,到现在深刻的地体会到SAP在企业管理中的重要位置;从一开始对SAP可能带来的不便以及人力、财力、时间成本产生抵触情绪,到现在对SAP产生依赖心理。这些对SAP认识的转变,让我意识到作为一名关键用户和信息人员,为确保ERP的上线成功,应该如何发挥自身的作用。

5月9日,初步接触到了SAP软件。五月份到七月份我初步学习SAP中ABAP语言,起初感觉这跟平时学校学习的语言差不多,但是接触的越久,我就越深深 的震撼ABAP语言的严谨性,以及ABAP编辑语言在SAP中的重要的位置,对其他工作模块工作有非常重要的影响。通过这段时间ABAP语言的学习后,我进入技术组协助技术组中的各位老师,解决些小问题。工作一段时间之后,我才发觉,ERP前期项目的工作量大大超乎我的想像,它的重要性也让人感到紧张。在每天的工作中,大家加班加点,热火朝天的讨论业务流程问题,以及程序代码如何实现业务需求,有时候为了一个观点不同而争论不休,有时候又为达成共识而言欢高兴。大家良好的沟通交流,让我们这些初识者更积极主动地参与进来。

在技术组组工作了近两周之后,为了让我们全面认识SAP,从而更深入地开展工作,ERP项目组办公室组织人员进行了为期一周的SAP开发语言ABAP的培训。对于我们来说,掌握ABAP编程语言是深入理解SAP软件知识要领的敲门砖。通过对ABAP的学习,我对SAP的后台有了更进一步的了解,也为下一步深入接触实际操作打下了基础。在BASIS组织的讲座和培训中,我对BASIS有了一定了解,意识到ABAP对做好SAP系统的后台规划、安装、配置、管理、监控、维护、调优等工作的重要性。通过此次培训,大家对SAP有了些许的初步了解,对应该做好哪些工作有了初步的认识。

接下来说说,近半年我所学到的一些ABAP知识,报表显示ALV ALV是系统的一种网格的显示方式,这种方式带有汇总排序筛选等功能,ALV格式的数据是以单元格为单位显示,不象一般的写屏方式拷出来或是导出成文件不同列的内容粘在一块,这种方式便于数据导出来放在电子表格里进行加工.ALV: abap list view / Sap list view,在SAP报表数据输出使用最广泛的技术基于GUI,在展现层处理

操作简单

较强的标准功能。排序、过滤、计算等

有三个版本的技术实现Function->grid->OM

BDC技术

首先简单解释一下BDC(Batch Data Conversion):

在SAP系统里,由于某种原因,可能需要重复输入数据,(数据不同,但是操作是相同的,典型的情形就是切换系统的时候,旧系统的数据需要导入SAP),大致过程不外乎是这样: 输入一个t-code,进入一个某个屏幕,然后输入一个值(有时还要加上一些附加的checkbox选项等),点执行或者确定按钮,进入另一个屏幕,在某些字段输入值(`也可能是标注checkbox选中或者不选中)或者修改这些字段里的值。

然后按“Eneter”„„

最后按“SAVE”„„,一条记录完成了,继续下一条,如此循环

等等ABAP技术,每当接触ABAP学习ABAP的新知识,都感觉很震撼,ABAP语言的逻辑性真的很强。

在SAP的学习过程中,我认识到只有系统地学习财务模块、人资模块、生产模块和物资模块才能对整个ERP系统功能和SAP的关键设置有整体的了解。不仅仅如此,系统学习这些模块知识,对ABAP语言的学习和程序报表的开发都有很大的用处的。虽然过去了半年,但是我并没有觉得是在浪费时间,反而觉得比在学校学的还要多,觉得很充实,让我找到了前进的目标。

第五篇:OLE对EXCEL操作总结

方法用例

*&-------* *& 本程序总结了常用的ABAP对EXCEL的操作,包括如下子例程 *& 方法名 方法说明 *&(1)create_excel 创建excel *&(2)insert_row 插入行 *&(3)fill_cell 填充单元格 *&(4)columnwidth 调整列宽 *&(5)create_sheet 创建sheet *&(6)copy_sheet_all sheet复制 *&(7)copy_sheet_area sheet区域复制 *&(8)copy_cells 复制单元格

*&(9)range_borders 边框粗细 *&(10)row_color 行颜色 *&(11)preview_excel 预览 *&(12)free_object 释放对象 *&(13)close_excel 关闭excel *&(14)download_excel_fromserver 从服务器下载excel模板(进入模板事务代码SMW0)

*&(15)open_excel_hide 隐蔽打开excel *&(16)open_excel 打开excel *&(17)open_excel_sheet 打开指定的excel的sheet *&(18)open_excel_by_sheet 打开sheet *&(19)select_range 选择范围 *&(20)clear_data 清除数据 *&(21)merge_cells 合并单元格 *&(22)process_indcator 进度指示 *&(23)delete_row 删除行 *&(24)add_comment 添加注释 *&(25)hide_columns 隐藏列 *&(26)delete_columns 删除列 *&(27)hide_row 隐藏行 * 保护工作区 lock_unlock_excel :未完成 * 保护整个工作表 lock_sheet : 未完成

*& 本示例程序作为ABAP对EXCEL操作的参考,可以根据需要做适当的调整 *&-------* REPORT zdealexcel.TYPE-POOLS ole2.TABLES sscrfields.DEFINE m_message.case sy-subrc.when '0'.when others.message e000(zmeg)with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.endcase.END-OF-DEFINITION.DATA: application TYPE ole2_object, “excel object workbook TYPE ole2_object, ”excel workbook objcet sheet TYPE ole2_object, “workbook sheet object columns TYPE ole2_object, ”sheet col objcet rows TYPE ole2_object, “sheet row objcet range TYPE ole2_object, ”range range1 TYPE ole2_object, “range1 font TYPE ole2_object, ”font cell TYPE ole2_object, “cell cell1 TYPE ole2_object, ”cell1 sheet1 TYPE ole2_object, “workbook sheet object borders TYPE ole2_object.”borders

DATA: index TYPE i VALUE 0.*定义模板下载到本地保存的全名称

DATA: p_down_file LIKE sapb-sappfad.“定义模板下载到本地保存的全名称

*演示excel操作

SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN: PUSHBUTTON 01(12)but0 USER-COMMAND cli0, PUSHBUTTON 20(15)but2 USER-COMMAND cli2.SELECTION-SCREEN END OF LINE.*导入数据块

SELECTION-SCREEN BEGIN OF BLOCK status2 WITH FRAME TITLE text-f02.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(20)text-002.PARAMETERS: p_file LIKE rlgrap-filename.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK status2.*导出数据块

SELECTION-SCREEN BEGIN OF BLOCK status3 WITH FRAME TITLE text-f03.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT 1(20)text-003.PARAMETERS: p_down LIKE rlgrap-filename.SELECTION-SCREEN: PUSHBUTTON 75(20)but1 USER-COMMAND cli1.SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK status3.INITIALIZATION.CREATE OBJECT application 'excel.APPLICATION'.but0 = '演示excel操作'.”初始化导出button显示名称 but1 = '导出'.“初始化导出button显示名称 but2 = '从模板导出excel'.”从模板导出excel

*-------------------------设置文件上载-------------------------AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_path = p_file mask = ',*.*.' mode = 'O' title = text-f01 IMPORTING filename = p_file EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5.CHECK sy-subrc = 0 AND NOT p_file IS INITIAL.*-------------------------设置文件下载-------------------------AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_down.CALL FUNCTION 'WS_FILENAME_GET' EXPORTING def_path = p_down mask = ',*.xls,*.xls.' mode = 'S' title = text-f02 IMPORTING filename = p_down EXCEPTIONS inv_winsys = 1 no_batch = 2 selection_cancel = 3 selection_error = 4 OTHERS = 5.CHECK sy-subrc = 0 AND NOT p_down IS INITIAL.* AT SELECTION-SCREEN.IF sscrfields-ucomm EQ 'CLI1'.IF p_down IS INITIAL.MESSAGE e804(zdev).ELSE.p_down_file = p_down.PERFORM download_excel_fromserver USING 'ZHRI0004' p_down_file.“下载模板到本地

MESSAGE i600(zdev)WITH '模板导出成功'.ENDIF.ELSEIF sscrfields-ucomm EQ 'ONLI'.IF p_file IS INITIAL.MESSAGE e803(zdev).ENDIF.ELSEIF sscrfields-ucomm EQ 'CLI0'.PERFORM demo_forms.ELSEIF sscrfields-ucomm EQ 'CLI2'.PERFORM demo_forms_server USING p_file.ENDIF.START-OF-SELECTION.PERFORM open_excel_hide USING p_file.PERFORM close_excel.PERFORM open_excel USING p_file.PERFORM close_excel.PERFORM open_excel_sheet USING 'sheet2' p_file.DO 10 TIMES.PERFORM insert_row USING 1.PERFORM fill_cell USING 1 1 0 'e'.PERFORM fill_cell USING 1 2 0 'f'.PERFORM fill_cell USING 1 3 0 'g'.index = index + 1.ENDDO.PERFORM close_excel.PERFORM free_object.*&-------* *& Form demo_forms_server *&-------* * 从SMW0下载excel模板

*--------* *-->P_FILE excel本地路径

*--------* FORM demo_forms_server USING p_file.p_down_file = p_file.PERFORM process_indcator USING '程序正在下载模板' 0.PERFORM download_excel_fromserver USING 'ZHRI0004' p_down_file.PERFORM process_indcator USING '程序正在初始化OLE控件' 0.PERFORM process_indcator USING '程序正在打开excel文档' 0.PERFORM open_excel_sheet USING '处分处罚信息批导入' p_file.DO 10 TIMES.PERFORM insert_row USING 5.PERFORM fill_cell USING 5 1 0 'e'.PERFORM fill_cell USING 5 2 0 'f'.PERFORM fill_cell USING 5 3 0 'g'.index = index + 1.ENDDO.PERFORM clear_data USING 1 6 2 7.PERFORM merge_cells USING 1 6 2 7.PERFORM add_comment USING 8 1 'OK'.PERFORM close_excel.PERFORM free_object.ENDFORM.”demo_forms_server

*&-------* *& Form demo_forms *&-------* * 演示用form *--------* FORM demo_forms.PERFORM create_excel.DO 10 TIMES.PERFORM insert_row USING 1.PERFORM fill_cell USING 1 1 0 'a'.PERFORM fill_cell USING 1 2 0 'b'.PERFORM fill_cell USING 1 3 0 'c'.index = index + 1.ENDDO.PERFORM columnwidth USING 'A:C' ''.PERFORM create_sheet.PERFORM create_sheet.PERFORM copy_sheet_all.PERFORM copy_sheet_area.PERFORM copy_cells.PERFORM range_borders.PERFORM row_color USING 1.PERFORM preview_excel.PERFORM del_sheet USING 'sheet2'.PERFORM free_object.ENDFORM.“demo_forms

*&-------* *&(1)Form create_excel *&-------* * 创建excel *--------* FORM create_excel.IF sy-subrc <> 0.MESSAGE 'EXCEL ERROR' TYPE 'S' DISPLAY LIKE 'E'.STOP.ENDIF.CALL METHOD OF application 'WORKBOOKS' = workbook.SET PROPERTY OF application 'VISIBLE' = 1.SET PROPERTY OF application 'SHEETSINNEWWORKBOOK' = 1.CALL METHOD OF workbook 'ADD' = sheet.CALL METHOD OF sheet 'ACTIVE'.ENDFORM.”create_excel

*&-------* *&(2)Form insert_row *&-------* * 根据行号插入一行

*--------* *-->I_ROW 行号

*--------* FORM insert_row USING i_row.CALL METHOD OF application 'ROWS' = rows EXPORTING #1 = i_row.CALL METHOD OF rows 'INSERT'.ENDFORM.“insert_row

*&-------* *&(3)Form fill_cell *&-------* * 填充单元格

*--------* *-->I_ROW 行号 *-->I_COL 列号 *-->BOLD 是否加粗 *-->P_VALUE 值

*--------* FORM fill_cell USING i_row i_col bold p_value.CALL METHOD OF application 'CELLS' = cell EXPORTING #1 = i_row #2 = i_col.SET PROPERTY OF cell 'VALUE' = p_value.SET PROPERTY OF cell 'HORIZONTALALIGNMENT' = 2.GET PROPERTY OF cell 'FONT' = font.SET PROPERTY OF font 'BOLD' = bold.SET PROPERTY OF font 'COLORINDEX' = 41.CALL METHOD OF cell 'BORDERS' = borders EXPORTING #1 = '2'.SET PROPERTY OF borders 'LINESTYLE' = '0'.SET PROPERTY OF borders 'WEIGHT' = 0.ENDFORM.”fill_cell

*&-------* *&(4)Form columnwidth *&-------* * 设置列宽为自动或是固定值

*--------* *-->COLNUM 列号,可以为单个列或是多个列 *-->WIDTH 列宽值

*--------* FORM columnwidth USING colnum width.CALL METHOD OF application 'COLUMNS' = columns EXPORTING #1 = colnum.IF width = ''.CALL METHOD OF columns 'AutoFit'.ELSE.SET PROPERTY OF columns 'COLUMNWIDTH' = width.ENDIF.ENDFORM.“columnwidth

*&-------* *&(5)Form create_sheet *&-------* * 创建sheet *--------* FORM create_sheet.CALL METHOD OF application 'sheets' = sheet.CALL METHOD OF sheet 'ADD'.ENDFORM.”create_sheet

*&-------* *&(6)Form copy_sheet_all *&-------* * 复制sheet全部内容到另一个sheet *--------* FORM copy_sheet_all.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet1'.CALL METHOD OF sheet 'Cells' = cell.CALL METHOD OF cell 'copy'.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet3'.CALL METHOD OF application 'Range' = range EXPORTING #1 = 'A1'.CALL METHOD OF range 'PasteSpecial'.ENDFORM.“copy_sheet_all

*&-------* *&(7)Form copy_sheet_area *&-------* * 复制sheet部分内容到另一个sheet *--------* FORM copy_sheet_area.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet1'.CALL METHOD OF sheet 'Range' = range EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range 'copy'.CALL METHOD OF application 'Sheets' = sheet1 EXPORTING #1 = 'Sheet2'.CALL METHOD OF sheet1 'Range' = range1 EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range1 'PasteSpecial'.ENDFORM.”copy_sheet_area

*&-------* *&(8)Form copy_cells *&-------* * 在一个sheet内复制单元格

*--------* FORM copy_cells.CALL METHOD OF application 'Sheets' = sheet EXPORTING #1 = 'Sheet1'.CALL METHOD OF sheet 'Range' = range EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range 'copy'.CALL METHOD OF sheet 'Range' = range1 EXPORTING #1 = 'A12' #2 = 'B22'.CALL METHOD OF range1 'PasteSpecial'.ENDFORM.“copy_cells

*&-------* *&(9)Form range_borders *&-------* * 指定range加边框

*--------* FORM range_borders.CALL METHOD OF application 'Range' = range EXPORTING #1 = 'A1' #2 = 'B10'.CALL METHOD OF range 'BORDERS' = borders.SET PROPERTY OF borders 'LINESTYLE' = 1.SET PROPERTY OF borders 'WEIGHT' = 10.ENDFORM.”range_borders

*&-------* *&(10)Form row_color *&-------* * 设定行背景色

*--------* *-->I_ROW 行号

*--------* FORM row_color USING i_row.CALL METHOD OF application 'ROWS' = rows EXPORTING #1 = i_row.GET PROPERTY OF rows 'Interior' = font.SET PROPERTY OF font 'ColorIndex' = '10'.ENDFORM.“row_color *&-------* *&(11)Form preview_excel *&-------* * 预览excel *--------* FORM preview_excel.SET PROPERTY OF application 'VISIBLE' = 1.CALL METHOD OF sheet 'PRINTPREVIEW'.* m_message.ENDFORM.”preview_excel

*&-------* *&(12)Form free_object *&-------* * 释放object *--------* FORM free_object.FREE OBJECT font.FREE OBJECT range.FREE OBJECT range1.FREE OBJECT columns.FREE OBJECT rows.FREE OBJECT cell.FREE OBJECT cell1.FREE OBJECT sheet1.FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT application.ENDFORM.“free_object

*&-------* *&(13)Form close_excel *&-------* * 关闭excel并保存

*--------* FORM close_excel.CALL METHOD OF workbook 'Save'.CALL METHOD OF workbook 'Close' EXPORTING #1 = 0.CALL METHOD OF application 'Quit'.ENDFORM.”close_excel

*&-------* *&(14)Form download_excel_fromserver *&-------* * 从服务器下载excel模板

*--------* *-->P_OBJID 模板名称 *-->P_DEST 存档路径

*--------* FORM download_excel_fromserver USING p_objid LIKE www.xiexiebang.comment *&-------* * 添加注释

*--------* *-->I_ROW 行号 *-->I_COL 列号 *-->P_TEXT 注释内容

*--------* FORM add_comment USING i_row i_col p_text.CALL METHOD OF application 'Cells' = cell EXPORTING #1 = i_row #2 = i_col.CALL METHOD OF cell 'AddComment' = cell1.CALL METHOD OF cell1 'Text' EXPORTING #1 = p_text.CALL METHOD OF cell1 'Shape' = font.SET PROPERTY OF font 'Width' = '20'.SET PROPERTY OF font 'Height' = '20'.ENDFORM.“add_comment

*&-------* *&(25)Form hide_columns *&-------* * 隐藏列

*--------* *-->COLNUM 输入列号

*--------* FORM hide_columns USING colnum.CALL METHOD OF application 'COLUMNS' = columns EXPORTING #1 = colnum.SET PROPERTY OF columns 'Hidden' = 'true'.ENDFORM.”hide_columns

*&-------* *&(26)Form delete_columns *&-------* * 删除列

*--------* *-->COLNUM 输入列号

*--------* FORM delete_columns USING colnum.CALL METHOD OF application 'COLUMNS' = columns EXPORTING #1 = colnum.CALL METHOD OF columns 'DELETE'.ENDFORM.“delete_columns

*&-------* *&(27)Form hide_row *&-------* * 隐藏行

*--------* *-->I_ROW 输入行号

*--------* FORM hide_row USING i_row.CALL METHOD OF application 'ROWS' = rows EXPORTING #1 = i_row.SET PROPERTY OF rows 'Hidden' = 'true'.ENDFORM.”hide_row 2 注意事项 2.1 Sheet名称

Sheet名为中文时,在调用sheet对象时往往会调用不到,用英文字母不存在该问题。2.2 释放对象

程序结束时需要释放对象,否则Excel有可能无法关闭。释放对象代码如下: FORM free_object.FREE OBJECT font.FREE OBJECT range.FREE OBJECT range1.FREE OBJECT columns.FREE OBJECT rows.FREE OBJECT cell.FREE OBJECT cell1.FREE OBJECT sheet1.FREE OBJECT sheet.FREE OBJECT workbook.FREE OBJECT application.ENDFORM.

下载ABAP使用OLE方法总结word格式文档
下载ABAP使用OLE方法总结.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    ABAP中使用TABLE CONTROL 显示数据以及操作要点小结:

    TABLE CONTROL操作要点小结 1.屏幕号:100 2.在屏幕100中应用table control *声明control T1应用于屏幕100 CONTROLS T1 TYPE TABLEVIEW USING SCREEN 100. “T1代表自定义......

    总结正确使用化妆品的方法

    总结正确使用化妆品的方法 好的化妆品,使用效果不当,只能达到60分的效果。选对了化妆品,也要用正确的方法使用,才能达到满分的效果。现在以Lara style化妆品为例来逐一说明使用......

    德尔福产品-蓄电池使用及保养方法总结

    德尔福蓄电池使用及保养方法总结 目前大部分轿车已将普通蓄电池改为免维护蓄电池,很多车主认为,这种免维护蓄电池不用自己再做保养,这种观点是不是正确呢? 其实呀,免维护蓄电池和......

    钓鱼使用鱼竿的方法技巧总结

    曦晴鱼竿网 www.xiexiebang.com qtekc 钓鱼的方法技巧总结 多年的钓鱼经验来看,夏季早晚是钓鱼的最佳时机,一般可在早晨的4点到上午的10点,下午的5点到晚11点还是可以钓得不......

    《如何使用面试工具和方法?》

    HR 法律工作手册环球国际人才网共 6 页第1 页【知识讲解】招聘面试是HR经理的一项重要工作内容,每个成功的经理人都必须具备高超的招聘面试技巧,使合适的人在合适的岗位上,创造......

    合理使用除草剂方法交流

    在园林工作中,科学使用化学除草,不仅可以有效防除杂草同时可节省大量除草工时,提高工作效率。除草剂的种类繁多,在分类上,根据使用方法分为茎叶处理剂和土壤封闭处理剂;根据其作用......

    水产饲料使用成本分析方法

    水产饲料使用成本分析方法 鱼类食物来源有两大类:一类是天然饵料,一类是人工按鱼类营养需要生产的配合饲料。在目前大规模养殖条件下,人工配合饲料已成为饲养鱼类生长所需营养......

    认识键盘和使用键盘的方法

    认识键盘和使用键盘的方法 1、键盘简介 如果把电脑显示器比作手机的屏幕,那么键盘可以比作手机的按键,它是电脑重要的输入设备之一。键盘包括主键盘区、功能键区、编辑键区、......