PostRank

2008/09/06

如何用XML Publisher繪製圖表

好一陣子沒碰XML Publisher了,最近有個任務需求,需要產出報表中帶圖表(長條圖、折線圖…),直覺就又想到這個老夥計了。假設要作個部門人數趨勢圖,首先準備一個Table,存放所需的部門每月人數信息。

Table aftest ( yearmonth ,employee )


















建立Oracle Reports 程式,當作XML Publisher的Data Source只要在Data Model填寫SQL即可,不需要創建Layout。然後將程式上傳至Oracle EBS指定的路徑下。















在Oracle EBS上註冊該報表,注意Output要改為 XML 喔。















提交運行剛才建立的報表,執行成功後,點擊View Output,可以得到一個XML文件。將此文件保存放在本機端。例如:AFTEST.XML

打開MS Word,用 XML Publisher Desktop 工具,進行建立模版。

1.資料->載入XML資料,選擇剛才保存的AFTEST.XML


2.插入->圖表,設定圖表信息


3.先以.rtf格式保存。AFTEST.rtf

4.預覽->PDF,以PDF格式預覽看看,結果是否符合。




登入Oracle EBS的XML Publisher Adminstrator權限,

1.註冊Data Definitions
XML Publisher Adminstrator->Data Definitions->Create Data Definition


2.註冊Templates
XML Publisher Adminstrator->Templates->Create Template
這裡需要個Template File就是剛才保存的AFTEST.rtf


回到Oracle EBS再次提交這支報表AFTEST。

哎呀,報錯了........

+---------------------------------------------------------------------------+
xxxxxxxxxxx: Version : UNKNOWN - Development

Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.

AFTEST module: AFTEST
+---------------------------------------------------------------------------+

Current system time is 06-SEP-2008 22:01:26

+---------------------------------------------------------------------------+


+-----------------------------
| Starting concurrent program execution...
+-----------------------------


APPLLCSP Environment Variable set to :

XML_REPORTS_XENVIRONMENT is :
/xxxxxxxxxora/8.0.6/guicommon6/tk60/admin/Tk2Motif_UTF8.rgb

XENVIRONMENT is set to /xxxxxxxxxxora/8.0.6/guicommon6/tk60/admin/Tk2Motif_UTF8.rgb


Current NLS_LANG and NLS_NUMERIC_CHARACTERS Environment Variables are :
American_America.UTF8

'.,'

Spawned Process 6204
REP-3000: Internal error starting Oracle Toolkit.

Report Builder: Release 6.0.8.25.0 - Production on Sat Sep 6 22:01:27 2008

(c) Copyright 1999 Oracle Corporation. All rights reserved.

Enter Username:
+---------------------------------------------------------------------------+
Start of log messages from FND_FILE
+---------------------------------------------------------------------------+
+---------------------------------------------------------------------------+
End of log messages from FND_FILE
+---------------------------------------------------------------------------+


+---------------------------------------------------------------------------+
Executing request completion options...

+------------- 1) PUBLISH -------------+
Beginning post-processing of request 265146 on node xxxxxxx at 06-SEP-2008 22:01:33.
Post-processing of request 265146 failed at 06-SEP-2008 22:01:33 with the error message:
One or more post-processing actions failed. Consult the OPP service log for details.

看來是在XML Publisher產生時出錯了,得檢查Output Post Processor的Logfile。

進入System Administrator權限,Concurrent->Manager->Administer->Output Post Processor->Process->Manager Log

@_@" 呃~~這是什麼問題呀?? 可惡,就差這最後一步就完成了。

我的環境是:Oracle EBS:11.5.10.2 Database:9.0.2.8 XML Publisher 5.0

[9/6/08 10:01:33 PM] [2046:RT265146] Executing post-processing actions for request 265146.
[9/6/08 10:01:33 PM] [2046:RT265146] Starting XML Publisher post-processing action.
[9/6/08 10:01:33 PM] [2046:RT265146]
Template code: AFTEST
Template app: xxxxxxxx
Language: en
Territory: US
Output type: PDF
[9/6/08 10:01:33 PM] [UNEXPECTED] [2046:RT265146] java.lang.ArrayIndexOutOfBoundsException: 0
at oracle.apps.xdo.common.image.ImageReader.checkFormat(ImageReader.java:107)
at oracle.apps.xdo.common.image.ImageReader.analyze(ImageReader.java:144)
at oracle.apps.xdo.common.image.ImageReader.load(ImageReader.java:310)
at oracle.apps.xdo.generator.pdf.PDFGenerator.createPDFImageReference(PDFGenerator.java:1760)
at oracle.apps.xdo.generator.pdf.PDFGenerator.getImage(PDFGenerator.java:1848)
at oracle.apps.xdo.template.fo.area.AreaTree.getImage(AreaTree.java:507)
at oracle.apps.xdo.template.fo.area.InstreamForeignObjectArea.(InstreamForeignObjectArea.java:40)
at oracle.apps.xdo.template.fo.elements.FOInstreamForeignObject.doLayout(FOInstreamForeignObject.java:80)
at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:180)
at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:142)
at oracle.apps.xdo.template.fo.elements.FOBlock.doLayout(FOBlock.java:76)
at oracle.apps.xdo.template.fo.elements.FOFlow.doLayout(FOFlow.java:76)
at oracle.apps.xdo.template.fo.elements.FormattingEngine.startLayout(FormattingEngine.java:148)
at oracle.apps.xdo.template.fo.elements.FormattingEngine.run(FormattingEngine.java:95)
at oracle.apps.xdo.template.fo.FOHandler.endElement(FOHandler.java:238)
at oracle.xml.parser.v2.XMLContentHandler.endElement(XMLContentHandler.java:196)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1212)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:301)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:268)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:149)
at oracle.apps.xdo.template.fo.FOProcessingEngine.process(FOProcessingEngine.java:266)
at oracle.apps.xdo.template.FOProcessor.generate(FOProcessor.java:959)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.runProcessTemplate(TemplateHelper.java:1766)
at oracle.apps.xdo.oa.schema.server.TemplateHelper.processTemplate(TemplateHelper.java:1277)
at oracle.apps.fnd.cp.opp.XMLPublisherProcessor.process(XMLPublisherProcessor.java:229)
at oracle.apps.fnd.cp.opp.OPPRequestThread.run(OPPRequestThread.java:153)

[9/6/08 10:01:33 PM] [2046:RT265146] Completed post-processing actions for request 265146.

沒有留言: