HAND-深入浅出Oracle EBS之XML Publisher HAND-深入浅出Oracle EBS之XML Publisher_第1页
HAND-深入浅出Oracle EBS之XML Publisher HAND-深入浅出Oracle EBS之XML Publisher_第2页
HAND-深入浅出Oracle EBS之XML Publisher HAND-深入浅出Oracle EBS之XML Publisher_第3页
HAND-深入浅出Oracle EBS之XML Publisher HAND-深入浅出Oracle EBS之XML Publisher_第4页
HAND-深入浅出Oracle EBS之XML Publisher HAND-深入浅出Oracle EBS之XML Publisher_第5页
已阅读5页,还剩78页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

OracleERP最佳技术实践E-BUSINESSSUITEORACLE核心应用技术isherAuthor:MSN:huajhua@CreationDate:October16,2006LastUpdated:June6,2007DocumentRef:<DocumentReferenceNumber>Version:DRAFT1Aals <Approver <Approver2>CopyNumber_____OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,20074DateDateAuthorVersionChangeReference16-Oct-06Jianhua.HuangDraft1aNoPreviousDocumentNameitionCopyNo.NameLocation1LibraryMasterProjectLibrary2ProjectManager34Ifyoureceiveanelectroniccopyofthisdocumentandprintitout,pleasewriteyournameontheequivalentofthecoverpage,fordocumentcontrolpurposes.Ifyoureceiveahardcopyofthisdocument,pleasewriteyournameonthefrontcover,fordocumentcontrolpurposes.XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyDocumentControliiOracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,2007tents 1.1.读者基础要求 2 1.3.AboutXMLP 21.4.必要配置 41.5.最简单的例子.输出XML数据源 51.6.最简单的例子.设计RTF模版 81.7.最简单的例子.注册数据源和模版 141.8.最简单的例子.运行报表 15RTF模版开发 172.1.本章概述 17 7 2.5.使用多媒体元素 212.6.其它常用语法 23 3.其它数据源和模版开发(可选) 283.1.DataTemplate 28 .集成和API 29 4.2.Report报表迁移 29 4.5.即时分发 305.相关专题讨论 315.1.Viewer设置 315.2.字体配置 325.3.OutputPostProcessor 33 5.5.国际化支持 37 XMLPublisher要点荟萃DocumentControliiiFileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践DocRef:<DocumentOracleERP最佳技术实践June6,20075.7.问题记录 386.OpenandClosedIssuesforthisDeliverable 39 ClosedIssues 39XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyDocumentControlivOracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,2007XMLPublisher要点荟萃FileRef:深入浅出OracleXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-Forinternaluseonly1.BIPublisher基础1.1.读者基础要求1.2.文档贡献者张礼军、刘平的鼎力支持,这里深表感谢!1.3.AboutXMLPXMLP在EBS中的地位XMLP是EBS的11.510之后主要的报表解决方案。每种技术都有自己的特点和应用方向,仔细阅读下表,我们可以体会何种场景该使用XMLP。EBS中的技术OracleDB最佳的设计模式和开发框架所有MIS系统的基础,最可靠的数据持久存储PL/SQL用于业务逻辑实现;系统质量的优劣、性能的高低,很大程度上取决于PL/SQLReports报表设计环境,开发效率高数据检索+报表展现,尤其是单据打印DiscovererBI具,基于主题视图,分析企业数据ADI/WebADI从日记账和FA起家,逐步发展为EBS最强的桌面工具数据检索+Excel展现、数据批量录入和修改XMLPublisher基于XML工业标准,数据抽取与展现分离,布局设计平易近人又高度灵活丰富,与Java亲密集成数据检索+报表展现,除了单据打印,还可发布至Concurrent务并发、排队,合理利用系统资源期执行程序、报表、维护和监控FlexfieldEBS最富特色的自定义字段,智能组合、智能验证分类,业务特有信息的记录和传递FormsWindows版的数据录入+数据处理+数据检索JSP/JTF/OAF器的应用开发框架纯Web版的数据录入+数据处理+数据检索Workflow灵活的流程定义/自动化、通知发送、系统间集成数据传递、事件式系统集成Alert定时器的数据监控、预警通知统运行异常监控Interface/API各模块开发人员留出的,除了UI外的数据“出入口”客户化业务、外围系统与核心ERP的集成WebServiceInternet换跑在Internet上的Interface/API……1.3.1.官方资料XMLPublisher简称XMLP,现在叫BIPublisher,有独立版和EBS嵌入版。XMLPublisher要点荟萃FileRef:深入浅出OracleXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践DocRef:<DocumentReferenceNumber>OracleERP最佳技术实践June6,2007http:///technology/global/cn/products/xml-publisher/index.html以下站点是EBS的官方文档中心,其中包含XMLPublisher的最新UserGuide:http:///technology/global/cn/products/xml-publisher/index.htmlBIPublisher大多数用户熟悉的工具MicrosoftWord或AdobeAcrobat,来要专用的设计Studio,这意味着不需要额外的成本。接完成报表的设计。1.3.2.解决了其它报表工具的鸡肋1、PL/SQL:布局过于简单;不便于Java集成,不便于对外发布。1.3.3.完全分离数据/布局/UI国际化数据获取、布局设计、界面翻译三大工作全部分离,可由不同的人甚至第三方分工协 XMLPublisher1.3.4.数据不限来源、最终格式丰富、传送不限目的地BIPublisherXML与能够生成XML的任何数据库、应用程序或过程集成,无论是要格式化输出并发送给使用者的数据WebDav或者将报表发布到门EmailPrinterPeopleSoft,SAP,SiebelxXSLOracle,SQLServereOracleERP最佳技术实践DocRef:<DocumentReferenceEmailPrinterPeopleSoft,SAP,SiebelxXSLOracle,SQLServereJune6,2007XMLXMLPublisherXMLJava,C++,Java,C++,Pearl,etcWebDAV-CommerceWebServices数据源布局设计工具输出目标1.3.5.卓越的性能BIPublisher基于W3CXSL-FO标准,它是当今世界上最快、伸缩性最强的实现。它出,而只需占用很少的CPU时间和1.3.6.开放的标准,易于集成BIPublisher是基于开放标准技术构建的。它是一个J2EE应用程序,可以部署到任何J2EE容器。数据将处理为XML,在桌面应用程序中创建的布局模板将在内部转换为XSL-FO(另一个W3C标准)。该应用程序生成的输出也符合业界标准,如PDF、1.4.必要配置1.4.1.服务器端Patch版本,至少也要到5.5,之前的版本可以说是Oracle的“小白鼠”。cleXMLPublisherCoreRollupPatchPatchNotesSELECT*FROMfnd_product_installationsWHEREpatch_levelLIKE‘%XDO%’1.4.2.服务器端配置XMLPublisher要点荟萃BIPublisher基础4of42FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践DocRef:<DocumentReferenceNumberOracleERP最佳技术实践June6,2007新版配置:XMLPublisherAdministrator/Home/Administration。旧版配置:$XDO_TOP/resource/xdo.cfg或者$AF_JRE_TOP/jre/lib/xdo.cfg。该文件默认不存在,需要手工创建。文件格式要按照《OracleXMLPublisherUser’sGuide》的要求来写。如果PC机安装了XMLPublisherDesktop,其实里面有个xdoexample.cfg文件,可以稍微修改即可使用。.3.开发设计工具XMLPublisherDesktophttp:///technology/global/cn/software/products/publishing/index.html5.6.2;需要先装好JDK1.4以上版本。下载下来后直接安装,这样会在Word中嵌入XMLP的菜单,可以用来自动生成布局、1.5.最简单的例子.输出XML数据源1.5.1.关于数据源XMLP要求的数据,必须是XML格式的,这可以通过多种方式生成,最常见的有两OracleReports:仅创建DataModule、分组、求和,不用设计布局;其中求和也PLSQLorSQL:直接输出XML格式的内容。如果使用XMLP的JavaAPI来生成报表,实际上可以从任何途径获得XML格式的文件,包括本地文件、用URL指定的网络文件、其他Java函数返回的参数等等。1.5.2.开发数据源SELECTpoh.segment1po_num, por.release_numrelease, pvvendorname pvs.address_line1, pvs.address_line2, pvs.address_line3, mst.segment1item_num, mst.description, pll.unit_meas_lookup_codeuom, pll.price_overrideunit_price, poh.currency_code, nvl(pll.need_by_date,mised_date)need_by_date FROMpo_headers_allpoh, po_vendorspv, po_vendor_sites_allpvs, po_lines_allpol, po_line_locations_allpll, po_releases_allpor, mtl_system_items_vlmst WHEREpoh.vendor_id=pv.vendor_id(+) ANDpoh.vendor_site_id=pvs.vendor_site_id(+) ANDpoh.po_header_id=pol.po_header_id ANDpol.po_line_id=pll.line_location_idXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础5of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,OracleERP最佳技术实践 ANDpll.po_release_id=por.po_release_id(+) ANDpol.item_id=mst.inventory_item_id ANDpll.ship_to_organization_id=anization_id AND_id=102 ANDpoh.creation_date>=sysdate-60orts对组名称可以改得友好些,比如这里的G_PO_HEADER和G_PO_LINE,这样生成的XML文件可读性更佳。代码参考:CUXXMLPDEMO.rdf。1.5.3.注册并发程序,输出格式为XML1、上传CUXXMLPDEMO.rdf至服务器$SCF_TOP/reports/USXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础6of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,20071.5.4.试运行,获得样例数据将报表上传服务起后,请求运行结果如下(只展开了一张PO):agXMLPublisher要点荟萃BIPublisher基础7of42FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyXMLPublisher要点荟萃FileRef:深入浅出OracleXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践1.6.最简单的例子.设计RTF模版1.6.1.关于布局设计DocRef:<DocumentReferenceNumber>June6,2007实际上和任何报表工具一样,布局设计时,先需要“想象”层次结构,如哪些内容位于页眉页脚,哪些内容是报表头,哪些内容是明细行,各部分是如何依次嵌套的,哪些地方需要合计等等。同时考虑一些特殊需求:如何进行页码编号、是否动态列、每页显示的行数是否固定、新单据是否从新页开始、行高和列宽是否固定、表头是否在新页重复等等。这些也是做布局设计的重点和难点,而且不同版本的XMLP支持的特需求都能被满足。布局设计最常用的工具是Word,也可以是AdobeAcrobat,也可以直接编写XSL-FO模版。实际上,当上传RTF文件到XMLP模版管理器时,将被自动转换为XSL-FO。1.6.2.了解窗体域,这可是我们经常写XMLP代码的地方据替换。先从菜单“视图/工具栏/窗体”调出窗体工具栏。然后就可以将“窗体域”插到Word文档中,最后通过右键“窗体域”调出属性,默认文字中输入比较直观的描述,在“添加帮助文字”的“自己键入”部分输入相应的文件中标记为“ITEM_CODE”的值替换:OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,OracleERP最佳技术实践1.6.3.导入样例数据打开Word,通过TemplateBuilder/数据/装入XML数据:选择上一步请求输出的XML文件,这样我们可以用向导加快模版设计,同时也方便预1.6.4.布局向导布局设计比较灵活,可以先搭好分组框架,也可先设计数据;可以通过向导创建,也加“窗体域”的工作量。1、启动向导,菜单TemplateBuilder/插入/表/表单/向导…2、选择布局风格,我们先要做采购订单单据头,所以选择“表单”,我们这里选择G_PO_HEADERXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础9of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>JuneOracleERP最佳技术实践XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础10of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>JuneOracleERP最佳技术实践、完成后自动生成布局如下(可双击打开)FUMASEENDORNAMEADDRESSLINE1YCODEEXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础11of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,OracleERP最佳技术实践默认文字XMLP语句F<?for-each:G_PO_HEADER?><?sort:PO_NUM;’ascending’;data-type=‘text’?><?sort:RELEASE;’ascending’;data-type=‘text’?>PO_NUM<?PO_NUM?>RELEASE<?RELEASE?>VENDOR_NAME<?VENDOR_NAME?>ADDRESS_LINE1<?ADDRESS_LINE1?>CURRENCY_CODE<?CURRENCY_CODE?>E<?endfor-each?>1.6.5.调整布局码的“窗体域”,接下来我们根据实际需求调整下布局,同时最好也改下“默认文字”,尤其是分组的。最终结果如下(可双击打开):upBeginPOHeadersumbereasedressupEndPOHeaders.6.验证布局菜单TemplateBuilder/工具/验证,可以验证语法错误和不支持的特性!1.6.7.完善报表和上边的步骤类似,首先运行向导添加订单行,这次布局风格选择“表”,分组选择PO_Line,结果如下,排序选择Line_Number:XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础12of42XMLPublisher要点荟萃FileRef:深入浅出OracleXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,OracleERP最佳技术实践upBeginPOHeadersdressLINMIPTIONOMUNITPRNEED_BEupEndPOHeaders其中的F和E是分组起始、终止标志,注意这次它们所处的位置,这样可以做到根据数upBeginPOHeadersdress码eginesscriptiontyOMceeupEndPOHeaders这个例子还缺少很多元素,仅供练习,源文件为CUXXMLPDEMO.rtf。.6.8.预览报表lHTMLRTFOracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,OracleERP最佳技术实践完整的输出文件请看CUXXMLPDEMO.xls。1.7.最简单的例子.注册数据源和模版1.7.1.注册数据源N:XMLPublisherAdministrator/Home/DataDefinitions/CreateDataDefinition定义数据源,需要注意,数据源代码需要和并发请求的代码一致,也可以上传预览数1.7.2.注册模版,并和数据源关联N:XMLPublisherAdministrator/Home/Templates/CreateTemplateXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础14of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>OracleERP最佳技术实践June6,20071.8.最简单的例子.运行报表1.8.1.提交请求操作和提交普通的请求类似,唯一注意的是多了个Layout选项,默认会选中同语言的在11.5.10CU1或Patch3435480之前,需要分两步完成,第一步运行请求,第二步运行XMLReportPublisher来生成输出:XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础15of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,20071.8.2.查看输出运行结果和我们在XMLPDesktop中预览的基本一样,下面是个PDF的结果:XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyBIPublisher基础16of42相信随着XMLP版本的不断升级,其Desktop端的可视化功能将大大简化我们的设计工作,不过目前还有些地方不通过手工编写命令是无法完成的;此外,虽然模版开发是Word,但有些“鲜为人知”的Word功能需要额外提示下。所以本章收录的是常见问题的处理办法,并未包括完整的UserGuide功能,当然也不2.1.2.XMLP和XSL相信随着XMLP版本的不断升级,其Desktop端的可视化功能将大大简化我们的设计工作,不过目前还有些地方不通过手工编写命令是无法完成的;此外,虽然模版开发是Word,但有些“鲜为人知”的Word功能需要额外提示下。所以本章收录的是常见问题的处理办法,并未包括完整的UserGuide功能,当然也不2.1.2.XMLP和XSL-FO可以采取两种方式编写布局语言,一是XSL语句,二是XMLP简易语句,个人建议使用前者,因为其是国际通行标准。另外,这两种语法可以混合使用,比如上面的条件格在RTF中直接写的只能是XMLP简易语句;在窗体域中则上述两者皆可。脚中可以使用。XMLP提供的语法,都是一种简化的“代号”,实际都要翻译成XSL,如果你精通XSL-FO,那么也可以在窗体域中直接用该语法,自由而灵活!如下SQL可以查到转换后的XSL-FO:SELECTFROMWHERE ANDANDt2.application_short_name,t.template_code,t.template_name,t.xdo_file_type,xdo.xdo_templates_tlt1,xdo.xdo_templates_bt1.template_code=t2.template_codeemplatecodetlobcodet1.LANGUAGE=‘US’t2,t3ANDt1.template_code=‘CUXXMLPDEMO’Tips:C:\ProgramFiles\Oracle\XMLPublisherDesktop\samples\RTFtemplates有非常2.2.1.建议做法June6,20072.RTF模版开发2.1.本章概述2.2.布局格式化2.1.1.关注内容虽然可以代码控制,但既然依托Word作为可视化设计工具,我们就尽量使用Word功XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发17of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumberOracleERP最佳技术实践June6,20072.2.3.行截断与禁止折行单据打印中对格式的要求比较高,如果某一行过长或者出现多次折行,就会破坏版小结。固定行高不行,虽然设计时看到“固定”了,如果不加控<xsl:attributexdofo:ctx="block"name="wrap-option">no-wrap</xsl:attribute><xsl:attributexdofo:ctx="block"name="overflow">hidden</xsl:attribute>如固定显示3行,多余部分截断,目前通过模版无法实现,只有在数据源中先将数据截至刚好3行的字符数,然后利用自动折行功能。这里还要注意空格,如果遇到空格,后条件格式化不同的颜色、不同的列数、不同的标题、不同的布局风格等等,IF<?if:CURRENCY_CODE="CNY"?>任何布局<?endif?><?if:CURRENCY_CODE!="CNY"?>任何布局<?endif?><?if@column:CURRENCY_CODE="CNY"?>字段值和格式<?endif?>XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发18of42XMLPublisher要点荟萃FileRef:深入浅出XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践2.3.字段计算技巧DocRef:<DocumentReferenceNumber>June6,2007<?if@row:position()mod2=0?><xsl:attributexdofo:ctx="incontext"name="background-color">gray</xsl:attribute><?endif?><?if:QUANTITY>100?><xsl:attributexdofo:ctx="block"name="background-color">red</xsl:attribute><?endif?>2.3.1.建议做法s2.3.2.组内合计N:TemplateBuilder/插入/字段Avarage。2.3.3.页内合计要实现本页合计数,需分两步:声明合计变量、显示合计变量(可带格式)。1、对QUANTITY进行本页合计,声明变量QTYTOTAL,注意写在QUANTITY对应<?addtotal:QTYTOTAL;’QUANTITY’?><?showtotal:QTYTOTAL?>.4.结转合计把上页的合计数显示到下页,与“页内合计”类似,需分两步:声明合计变量、显示用得少,可参考UserGuide“BroughtForward/CarriedForwardTotals”部分。OracleERP最佳技术实践DocRef:<DocumentReferenceOracleERP最佳技术实践June6,2007tals量,初始化为0;累加;在需要的<?xdoxslt:set_variable($_XDOCTX,’RTotalVar’,0)?>内,比如下面的QUANTITY<?xdoxslt:set_variable($_XDOCTX,‘RTotalVar’,xdoxslt:get_variable($_XDOCTX,’RTotalVar’)+QUANTITY)?><?xdoxslt:get_variable($_XDOCTX,’RTotalVar’)?>age2.4.1.新组分页分页是自然的,但如果想在某处强制分页如新组新页,那么可以使用Word的分页符(CTRL+ENTER快捷键),但会导致最后出现空白页;这样只能使用如下几种方式:1、分组声明中加@section,如<?for-each@section:G_PO_HEADER?>。<xsl:iftest="position()<last()"><xsl:attributename="break-before">page</xsl:attribute></xsl:if>3、<?endfor-each?>前加<xsl:attributename="break-after">page</xsl:attribute>,法下RTF最后无空白页,但PDF有空白页。4、<?endfor-each?>前加<xsl:attributename="break-before">page</xsl:attribute>.4.2.条件分页、固定行分页<?if:CURRENCY_CODE="CNY"?><xsl:attributename="break-before">page</xsl:attribute><?endif?>each下语句控制每页5行:<?if:position()mod5=0?><xsl:attributename="break-before">page</xsl:attribute><?endif?>XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发20of42XMLPublisher要点荟萃FileRef:深入浅出XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践2.5.使用多媒体元素DocRef:<DocumentReferenceNumber>June6,20073.页眉页脚2、扩展的页眉页脚,可使用<?start:body?><?endbody?>把主体部分“框”起来,凡要借foreach:<?initialnumber:1?>。这里的“1”,实际上也文件中的XML元素来替换。.4.5.末页、奇偶页不同Word眉页脚”不同。<?start@last:body?><?endbody?>报表本身仅有一页时,则用<?start@lastfirst:body?><?endbody?>例子“Advanced\LastPage”,注意布局需要独立成页,即之前需要加分页符。<?section:forcecount;’end-on-even-layout’?>如果仅显示空白页,则用<?section:forcecount;’end-on-even’?><?section:forcecount;’end-on-odd-layout’?>空白页,则用<?section:forcecount;’end-on-odd空白页,则用2.5.1.Word功能可以使用公式、绘图(如组织结构图、线条等)、艺术字、剪贴画。如果想通过代码在有限范围内控制这些对象,比如显示文字、缩放、旋转、移动、复制,可参考UserGuide中的“Drawing,ShapeandClipArtSupport”。2.5.2.复选框中代表True,不选代表False,需要我们输入条件表达式,OracleERP最佳技术实践2.5.3.下拉框DocRef:<DocumentReferenceNumber>June6,2007插入下拉框窗体域,定义下拉框的元素,并同样在“自己键入”内输入需要引用的XML标记如<%AREA_INDEX%>。这里要注意元素的顺序,因为是用顺序号和运行时XML,AREA_INDEX是自然数1、2……。超链接可以直接利用Word功能设置超链接,也可以在链接地址中,全部或部分引用XML数{SUPPLIER_SITE_URL}或者:8000/OA_MEDIA/{CURRENCY_CODE}.gif2.5.5.图片可以直接利用Word功能插入图片,也可以仅将该图片当作占位图,在图片的“设置图1、来自网站的图片:url:{‘http://localhost:8000/OA_MEDIA/forms_logo.gif’}。2、来自EBS的图片:url:{‘${OA_MEDIA}/forms_logo.gif’}。4、动态拼接的地址:url:{concat(SERVER,’/’,IMAGE_DIR,’/’,IMAGE_FILE)}。<fo:instream-foreign-objectcontent-type="image/jpg"><xsl:value-ofselect="IMAGE_ELEMENT"/></fo:instram-foreign-object>.6.图表可使用TemplateBuilder向导插入图表,类型有:条形图-垂直、条形图-水平、饼图、片格式”网站标签页内的“可选文字”里看XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发22of42XMLPublisher要点荟萃FileRef:深入浅出XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-Forinternaluseonly//QUANTITY"Oracle//QUANTITY"2.6.其它常用语法2.6.1.字段引用DocRef:<DocumentReferenceNumber>June6,2007<xsl:valueofselect="xdofo:fieldname="在前面的窗体域中,我们直接引用XML文件中的Tag标记,如<?QUANTITY?>。这种对XML元素的引用,是相对当前层次的组来说;如果上层组中,有个同名Tag,就要<xsl:valueofselect="xdofo:fieldname="<xsl:value-ofselect=".//QUANTITY"xdofo:field-name="QUANTITY"/>--../数引用../QUANTITY"-/>/>xslvalueofselectposition>stXSL。.6.3.分组、排序、重新分组<?for-each:XML元素?><?sort:XML元素;’ascending’;data-type=‘text’?><?sort:XML元素;’ascending’;data-type=‘text’?>……<?endfor-each?>数据为“SalesReport”,重新按年、月分组,理解如下实例,需要一点“想象力”:GYEAR-GMONTHSalesrySalesinthousandUSD)999EEEE考“累计数”部分。声明参数:<xsl:paramname="P_NAME"xdofo:ctx="begin"/>用$引用参数:<?if:AMOUNT>$P_NAME?>OracleERP最佳技术实践传入参数:参考API部分。空值判断DocRef:<DocumentReferenceNumber>June6,2007<?if:Element_Name!=""?>SomethineHere<?endif?><?if:Element_NameandElement_Name=""?>SomethineHere<?endif?><?if:not(Element_Name)?>SomethineHere<?endif?>Word体域中的格式化功能,也可以在窗体域中输入XMLP的格式化命令,这两者不能同时使用,建议使用前者;后者语法参考UserGuide“NumberandDateFormatting理解上下文上下文代表XMLP语句的作用域,比如一个If语句,到底是针对一个单元格、一行、还XMLP下文含义等价XSL-FO类似Word中节的概念,不同Section的页码将重新编号、页眉页脚也重新开始,通column,通常用来格式化列、动态显示列、交叉报表列cell仅作用于表格中的一个单元格,通常与column配合使用,实现交叉报表block用于表格中的一个单元格或者RTF中的一个自然段fo:blocksinlineThecontextwillbecomethesinglestatementinsideanblock.Thiscontextisusedforvariables.fo:inlinentextThestatementisinsertedimmediatelyafterthesurroundingstatement.Thisisthedefaultfor<?sort?>statementsthatneedtofollowthesurroundingfor-eachasthefirstelement.inblockThestatementbecomesasinglestatementinsideanfo:block(RTFparagraph).Thisistypicallynotusefulforcontrolstatements(suchasifandfor-each)butisusefulforstatementsthatgeneratetext,suchascall-template.inlinesThestatementwillaffectmultiplecompleteinlinesections.Aninlinesectionistextthatusesthesameformatting,suchasagroupofwordsrenderedasbold.SeeIfStatementsinBoilerplateText,58.beginThestatementwillbeplacedatthebeginningoftheXSLstylesheet.Thisisrequiredforglobalvariables.SeeDefiningParameters,81.endThestatementwillbeplacedattheendoftheXSLstylesheet.XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发24of42OracleERP最佳技术实践2.7.高级布局2.7.1.动态列DocRef:<DocumentReferenceNumber>June6,2007动态列的含义是:设计时不知道有多少列,运行时XML数据文件中有确切的列数。如例子“Advanced\DynamicColumns\TestScore”:stScoreRowHeaderandSplittingColumnHeaderandGroupsContentandSplitting标题(必需):<?split-column-header:TestScore?><?TestScoreRange?>列宽(可选):<?split-column-width:@width?>数据(必需):<?split-column-data:TestScore?><?NumOfStudents?>ossTab交叉报表也叫矩阵报表、数据透视表,需要实现行列转换、数据汇总,实现机制和“动态列”完全不同,主要用重新分组的功能。我们使用“SalesReport”的数据,构IndustryHEADERYEARfor:INDUSTRYsum(sales)endHEADER:<?horizontal-break-table:1?>YEAR:<?for-each-group@column:ROW;YEAR?><?YEAR?><?endfor-each-group?>for:<?for-each-group:ROW;INDUSTRY?>INDUSTRY:<?INDUSTRY?>sum(sales):<?for-each-group@cell:current-group();YEAR?><?sum(current-group()//SALES)?><?endfor-each-group?><?endfor-each-group?>5.6.3之后,可以在TemplateBuilder中通过向导完成,不需要手工写代码。2.7.3.属性控制对文档的控制,可以在服务器端统一配置,参见“服务器端配置”,也可以在模版级别进行控制,比如控制生成的PDF文件密码、字体路径,可以通过Word的“文件/属XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发25of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>JuneOracleERP最佳技术实践嵌套模板是在模板中定义一个子模板,然后在需要的地方调用它,如在页眉页脚中调限制。主体部分没有任何区别。<?template:internaltemplateYOUR_TEMPLATE_NAME?>…………<?endtemplate?><?call:internaltemplateYOUR_TEMPLATE_NAME?>2.7.5.Word目录(TOC,TableofContent)Word有自动产生目录的功能,那么在模版中如何实现呢?按照UserGuide中的说明,2.7.6.PDF标签(Bookmarks)F1、静态TOC<?copy-to-bookmark:?>TOC<?endcopy-to-bookmark:?>1、动态TOCXMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发26of42OracleERP最佳技术实践<?convert-to-bookmark:?>TOC<?endconvert-to-bookmark:?>DocRef:<DocumentReferenceNumber>June6,2007XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyRTF模版开发27of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,20073.其它数据源和模版开发(可选)DataTemplateDataTemplate的优势在于支持BLOB数据、支持分不式查询。数据源采用XML文件定义,而不是用PL/SQL或者OracleReports。DataTemplate同3、在XMLPublisher管理员职责定义数据源时,需要上传DataTemplate详情可参考UserGuide相应章节。3.2.PDF模版.eText模版3.4.FO模版XMLPublisher要点荟萃其它数据源和模版开发(可选)28of42FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-ForinternaluseonlyOracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,20074.集成和API4.1.并发请求.Fnd_Request.Submit若要利用程序提交XMLPublisher输出的请求,之前要先用Fnd_Request.Add_Layout添加并发程序对应的模版,再调用Fnd_Request.Submit。 4.1.2.实例 DECLARE l_request_idNUMBER; l_resultBOOLEAN;BEGIN fnd_global.apps_initialize(user_id=>1110,resp_id=>50237,resp_appl_id=>20003); l_result:=fnd_request.add_layout(template_appl_name=>'SCF',--ShortName template_code=>'CUXXMLPDEMO',--ShortName template_language=>'en',--fnd_natural_languages_vl.language_code template_territory=>'00',-- output_format=>'PDF'--lookup_type='XDO_TEMPLATE_TYPE' ll_request_id:=fnd_request.submit_request(application=>'SCF',program=>'CUXXMLPDEMO',description=>'',start_time=>'',sub_request=>FALSE,argument1=>chr(0)); dbms_output.put_line(l_request_id);END;5.6.3后,可以将现有的Reports报表转换成XMLPublisher报表。4.2.1.实例未完待续,等我学好OAF回来4.3.即时预览4.3.1.实例未完待续,等我学好OAF回来4.4.即时打印未完待续,等我学好OAF回来XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-Forinternaluseonly集成和API29of42OracleERP最佳技术实践4.5.即时分发未完待续,等我学好OAF回来DocRef:<DocumentReferenceNumber>June6,2007XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-Forinternaluseonly集成和API30of42OracleERP最佳技术实践DocRef:<DocumentReferenceNumber>June6,2007XMLPublisher要点荟萃FileRef:XMLPublisher要点荟萃FileRef:深入浅出OracleEBS之XMLPublisher.doc(v.DRAFT1A)CompanyConfidential-Forinternaluseonly5.相关专题讨论5.1.Viewer设置5.1.1.关于ViewerEBS中,点击请求的Output,弹出的那个窗口,就是标准的APPSVIEWER,不过其功能实在烂透了,只能看看标准的文本,其他Rich文本就得借助Tools/Copy,送到客户5.1.2.Viewer逻辑1、依据fnd_cp_opp_req.published_request(req_id)判断请求是否发布,如果是,那么文件名和类型在表fnd_conc_req_outputs中,否则在fnd_concurrent_requests。ProfileAPPSVIEWER发送给浏览器,这样客户端如IE就知道该用什么图标、什么程序来打开了;如果有MIME用户选择一个。4、如果是APPSVIEWER,那么就先查看,不管是不是乱码;点击Tools/Copy后参照Tips:XMLP有Java写成的“浏览器”,可以集成到OAF页面中!5.1.3.ViewerProfile时,系统才会直接跳过APPSVIEWER,直接使用浏览器来查看,其他的,包括我们关心的RTF和Excel,就要看Profile“Viewer:Text”的设置了。ProfileViewer:Text字符模式Viewer,也是默认的Viewer;不设置的话就是APPSVIEWER,设置的话只能是“Browser”Viewer:ApplicationforHTMLHTML的Viewer。如果是Web应用,则系统直接写死使用“Browser”,这个Profile不起作用,我们通常使用的Viewer:ApplicationforPDFPD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论