用​O​L​E​ ​D​O​I​ ​实​现​A​B​A​P​导​出​E​X​C​E​L​表​格

* save error object in collection 

 

 

APPEND errors. 

 

 

CLEAR item_url. 

 

 

DATA: bds_instance TYPE REF TO cl_bds_document_set. 

 

 

DATA: doc_signature TYPE sbdst_signature, 

 

 

 

 

 

 

 

 

wa_doc_signature LIKE LINE OF doc_signature, 

 

 

 

 

 

 

 

 

doc_components TYPE sbdst_components, 

 

 

 

 

 

 

 

 

doc_uris TYPE sbdst_uri, 

 

 

 

 

 

 

 

 

wa_doc_uris LIKE LINE OF doc_uris. 

*

以下三个值为

Tcode:OAOR

里面新建模板文件的参数

 

 

 

DATA: doc_classname TYPE sbdst_classname V

ALUE 'PICTURES', 

 

 

 

 

 

 

 

 

doc_classtype TYPE sbdst_classtype V

ALUE 'OT', 

 

 

 

 

 

 

 

 

doc_object_key TYPE sbdst_object_key V

ALUE 'ZEXCEL'. 

 

 

 

wa_doc_signature-prop_name = 'DESCRIPTION'. 

 

 

app = 'excel'. 

 

 

IF app = 'excel'. 

 

 

 

 

document_type = excel. 

 

 

 

 

wa_doc_signature-prop_value = p_docname. 

 

 

ELSE. 

 

 

ENDIF. 

 

 

APPEND wa_doc_signature TO doc_signature. 

 

 

CREATE OBJECT bds_instance. 

 

 

CALL METHOD bds_instance->get_info 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

classname 

 

= doc_classname 

 

 

 

 

 

 

classtype 

 

= doc_classtype 

 

 

 

 

 

 

object_key = doc_object_key 

 

 

 

 

CHANGING 

 

 

 

 

 

 

components = doc_components 

 

 

 

 

 

 

signature 

 

= doc_signature. 

 

 

 

CALL METHOD bds_instance->get_with_url 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

classname 

 

= doc_classname 

 

 

 

 

 

 

classtype 

 

= doc_classtype 

 

 

 

 

 

 

object_key = doc_object_key 

 

 

 

 

CHANGING 

 

 

 

 

 

 

uris 

 

 

 

 

 

 

= doc_uris 

 

 

 

 

 

 

signature 

 

= doc_signature. 

 

 

 

FREE bds_instance. 

 

 

 

READ TABLE doc_uris INTO wa_doc_uris INDEX 1. 

 

 

 

item_url = wa_doc_uris-uri. 

 

* ask the SAP DOI container for a i_oi_document_proxy for Excel 

 

 

 

CALL METHOD control->get_document_proxy 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

document_type 

 

= 'Excel.Sheet' 

 

 

 

 

 

 

no_flush 

 

 

 

 

 

 

= 'X' 

 

 

 

 

IMPORTING 

 

 

 

 

 

 

document_proxy = document 

 

 

 

 

 

 

error 

 

 

 

 

 

 

 

 

 

= errors. 

 

 

APPEND errors. 

 

* open a document saved in business document service. 

 

 

 

CALL METHOD document->open_document 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

open_inplace = inplace 

 

 

 

 

 

 

document_url = item_url. 

 

 

 

DATA: has TYPE i. 

 

 

CALL METHOD document->has_spreadsheet_interface 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

no_flush 

 

 

 

 

= '' 

 

 

 

 

IMPORTING 

 

 

 

 

 

 

is_available = has 

 

 

 

 

 

 

error 

 

 

 

 

 

 

 

= errors. 

 

 

APPEND errors. 

 

 

 

CALL METHOD document->get_spreadsheet_interface 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

no_flush 

 

 

 

 

 

 

 

= ' ' 

 

 

 

 

IMPORTING 

 

 

 

 

 

 

sheet_interface = spreadsheet 

 

 

 

 

 

 

error 

 

 

 

 

 

 

 

 

 

 

= errors. 

 

 

APPEND errors. 

* Activate 

 

sheet 1 

 

 

CALL METHOD spreadsheet->select_sheet 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

name 

 

 

 

 

 

'

表整理

 

 

 

NO_FLUSH = ' ' 

 

 

 

 

IMPORTING 

 

 

 

 

 

 

error 

 

 

 

= errors. 

 

 

 

RETCODE 

 

 

 

 

 

APPEND errors. 

 

 

 

LOOP AT errors. 

 

 

 

 

CALL METHOD errors->raise_message 

 

 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

 

 

type = 'E'. 

 

 

ENDLOOP. 

 

 

FREE errors. 

 

 

initialized = 'X'. 

ENDFORM. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"CREATE_BASIC_OBJECTS 

 

*&---------------------------------------------------------------------* 

 

*& 

 

 

 

 

 

Form 

 

output_to_excel 

*&---------------------------------------------------------------------* 

 

 

 

 

 

 

fill the EXCEL sheet 

*----------------------------------------------------------------------* 

FORM output_to_excel. 

 

 

DATA num TYPE i V

ALUE 1. 

 

 

LOOP AT itab. 

 

 

 

 

num = num + sy-tabix. 

 

 

 

 

PERFORM fill_cell USING num 1 itab-matnr. 

 

 

 

 

PERFORM fill_cell USING num 2 itab-spras. 

 

 

 

 

PERFORM fill_cell USING num 3 itab-maktx. 

 

 

 

 

PERFORM fill_cell USING num 4 itab-maktg. 

 

 

 

 

num = 1. 

 

 

ENDLOOP. 

ENDFORM. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"output_to_excel 

 

*&---------------------------------------------------------------------* 

 

*& 

 

 

 

 

 

Form 

 

FILL_CELL 

*&---------------------------------------------------------------------* 

 

 

 

 

 

 

text 

*----------------------------------------------------------------------* 

 

 

 

 

 

-->I 

 

 

 

 

 

 

 

 

 

text 

 

 

 

 

 

-->J 

 

 

 

 

 

 

 

 

 

text 

 

 

 

 

 

-->V

AL 

 

 

 

 

 

 

 

text 

*----------------------------------------------------------------------* 

FORM fill_cell 

 

USING i j val. 

 

 

DATA: columns_number TYPE i, 

 

 

 

 

 

 

 

 

rows_number 

 

 

 

TYPE i. 

 

 

 

columns_number = 1. 

 

 

rows_number = 1. 

 

 

 

CALL METHOD spreadsheet->insert_range_dim 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

name 

 

 

 

 

= 'cell' 

 

 

 

 

 

 

no_flush = 'X' 

 

 

 

 

 

 

top 

 

 

 

 

 

= i 

 

 

 

 

 

 

left 

 

 

 

 

= j 

 

 

 

 

 

 

rows 

 

 

 

 

= rows_number 

 

 

 

 

 

 

columns 

 

= columns_number 

 

 

 

 

IMPORTING 

 

 

 

 

 

 

error 

 

 

 

= errors. 

 

 

APPEND errors. 

 

 

 

REFRESH: ranges, excel_input. 

 

 

rangeitem-name = 'cell'. 

 

 

rangeitem-columns = 1. 

 

 

rangeitem-rows = 1. 

 

 

APPEND rangeitem TO ranges. 

 

 

 

excel_input_wa-column = 1. 

 

 

excel_input_wa-row = 1. 

 

 

excel_input_wa-value = val. 

 

 

APPEND excel_input_wa TO excel_input. 

 

* set data 

 

 

 

CALL METHOD spreadsheet->set_ranges_data 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

ranges 

 

 

= ranges 

 

 

 

 

 

 

contents = excel_input 

 

 

 

 

 

 

no_flush = 'X' 

 

 

 

 

IMPORTING 

 

 

 

 

 

 

error 

 

 

 

= errors. 

 

 

APPEND errors. 

 

 

 

CALL METHOD spreadsheet->fit_widest 

 

 

 

 

EXPORTING 

 

 

 

 

 

 

name 

 

 

 

 

= space 

 

 

 

 

 

 

no_flush = 'X'. 

 

 

 

REFRESH: ranges, excel_input. 

 

ENDFORM. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"fill_cell 

 

 

 

 

CSDN

http://blog.csdn.net/animalbe/archive/2010/05/31/5635607.aspx 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前 言 1999年3月,Philip Greenspun在Oracle公司总部举行了一次讲座,正是这次讲座给了作者写作本书的灵感。他的讲座涵盖了Internet、XML以及怎样生成以数据库为后端的Web站点。为什么Oracle数据库的使用在业界如此流行,以及为什么他认为Oracle开发组成员应该多为Oracle版社写一些书等。作者由图书提纲开始,该提纲是关于他们在Oracle公司所做的XML方面的工作;然后编写各个章节。他们尽可能地听从了Philip的建议,把本书按问题域组织起来,而不是按技术或部门体系。时间很快过去了一年,到了2000年中旬,他们最终完成了本书。在此期间,他们在对Oracle的工作投入大量时间的同时尽可能保持着本书的进度,经历了一段真正的紧张生活。真的,任何一位作者,他们的家庭,以及Oracle版社的编辑们,都不会忘记这段经历的。XML万岁!注意 本书的一部分销售收入将资助ArsDigita基金会和America誷 Promise两组织,以支持他们尝试推动教育进步的可敬事业。他们的Web站点分别是http://arsdigita.org和http://www.americaspromise.org。应用中的XML 你之所以阅读本书,目的可能是计划的应用中使用XML。这种想法很好,因为XML并不是应用,它只是一种使能性的技术。为帮助你建立具有XML功能的应用,我们在合适之处介绍了大量不同的应用背景、特定的代码例以及XML和XSL例文件。你可以自由地使用这些代码,我们希望它可以引你有效地使用XML来增强你的应用。注意 如果你对本书或CD要发评论或在其中发了错误,请不要犹豫,务请发e-mail到oraclexmlhandbook@yahoo.com。本书面向的读者本书是Oracle XML组件的用户指南。它并不是完全参考手册,因为所有的组件API文档都可以通过电子版得到,而且,如果把这些文档加进来,会使本书的规模加倍。参考文档可以在Oracle技术网络(Oracle Technology Network)上得到。本书的读者对象主要有两类:一类是使用Oracle进行应用开发并且需要开始使用XML的程序员;另一类是有兴趣学习怎样在Oracle产品中使用XML的读者。书中许多例子使用了Java,通过使用组件的命令行接口和简单的可以编辑XML、XSL、XSQL文件的文本编辑器,就可以试验XML的大量功能。怎样使用本书不必按顺序阅读本书。本书的第1、2章是XML和Oracle的XML技术的介绍性材料,如果你熟悉这些,可以跳过这两章。那些对建立具有XML功能的Oracle8i数据库应用感兴趣的读者,可以阅读第3、7章,以及第8章中对OTN应用的深入解释。如果你打算使用Oracle应用服务器、Internet文件系统(Internet File System)、以及interMedia Text(一种文本搜索引擎),那么请阅读第4章、第5、第6章。第9章展望了XML的未来。附录A给了一些基本的W3C定义。各章的概要如下:第1章介绍了Oracle在XML工业技术方面做的努力,解释了XML的基本概念与术语、XML存在的原因以及Oracle在业界的XML战略。同时本章也给了Oracle技术网络及其XML链接、Oracle的具有XML功能的产品和XML组件的一览,最后是一个具有XML功能的关于书籍售的应用例。第2章介绍了Oracle的XML开发包(XML Developer's Kit,XDK)组件,回顾了Java/C/C++/ PLSQL等语言的XML解析器及XSLT处理程序、Java/C++语言的类生成器、以及Java TransViewer组件。用于访问及处理XML/XSL文件的可工作代码也包括在本章中。第3章涵盖了Oracle8i内建的Java拟机和Oracle的Java XML组件。同时也介绍了怎样利用XDK的XSQL Servlet存储XML数据到数据库中或从数据库中获取XML数据。最后,介绍了具有XML功能的售书应用的设计与。第4章涵盖了Oracle应用服务器的体系结构及其与XML和XDK组件的联系。介绍了把书店应用作为QAS Servlet进行生成的。第5章介绍了Oracle的下一代文件系统—iFS。这一章涵盖了iFS的体系结构,它作为XML文件系统的行为特性,以及它怎样在内部使用XML来把文件数据映射到关系模式。本章中还包括了关于通用文件操作的几个代码例。第6章涵盖了Oracle8i的文本搜索引擎—interMedai Text,回顾了其体系结构及搜索已存储的XML文档的能力。本章中的例代码用于扩展书店应用,如产生索引并进行基于XML的搜索。第7章涉及到怎样把XML组件组装到端到端解决方案中。本章介绍了一个具有XML功能的数据库应用的设计,其中包括用XML增强的Web站点和由商家到客户(business-to-client,B2C)的消息传递系统。上述XML和XSL例文件以及例代码都包含在本章中。第8章介绍了Oracle技术网络(OTN)的关于XML的Web站点及其提供的XML示范。本章涉及怎样安装和运行这些示例,其中包括每个例子所示范的特定XML特性和能力方面的细节。第9章回顾了W3C和OASIS在XML标准上所做的努力,并基于这些组织已有的工作推测了XML未来的发展方向。同时本章注意到了业界的几家主要公司使用XML及其相关技术的方式。附录涵盖了主要的XML规范。它对W3C关于XML文档接口的两个主要标准—OM和SAX进行了讨论,同时也涉及到其他相关的XML技术标准如名字空间、XPath以及XSL变换等。随书光盘与Web站点你可以在随书光盘上找到Oracle XDK的产品版,它是相应于Java组件的,其中包括XML解析器、XSL处理程序、TransView Java beans以及XSQL Servlet等,还有许多富于说明性的示范。你还可以找到另外一些产品的试用版,如Oracle8i Release 2、JDeveloper 3.1以及Oracle的具有XML功能的Java开发环境的最早版本等。最后,我们把相应于Java和Web-to-Go Web服务器的业务组件也加入在内,来协助你开发端到端的商务应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值