Report总结
Author:<JEAN>
Creation Date:1/5/2007
Last Updated:May1,2007
Document Ref:<Document Reference Number>
Version:DRAFT1A
关于如何把在report builder下创建的报表以PDF的格式输出,具体步骤如下:
一.SQL的编辑(灵活的利用ebs下的help,来层层拨开,查询字段)查询FORM中的后台表和字段用到help/record history及
help/diagnostics/examine/在编辑sql中如果要求有参数的关联的时候一定要注意查询语句的书写,参数关联的字段可以参考视图中的where语句。
举个参数关联的例子
B.JE_BATCH_ID+0=H.JE_BATCH_ID+0
B.JE_BATCH_ID=nvl(:P_BATCH_NAME,B.JE_BATCH_ID)
H.NAME=nvl(:P_JOURNAL_NAME,H.NAME)
想要关联B.NAME和H.NAME这两个参数,注意第二个SQL语句的书写,之所以这样写是因为这两个参数是通过BATCH_ID来关联的。
然后让我们看一下在EBS中的VALUE SET中的BATCH_NAME参数的设置
VALUE---B.NAME
ID---JE_BATCH_ID这样BATCH_NAME参数传出的实际是
JE_BATCH_ID只是用B.NAME来描述,这样指示性强一些。
其实定义Table类型的值集的时候,有三个字段其中value和Id都为值,Id的优先级高于Value,但一般我们只定义Value,如果要关联参数的时候会用到ID,关联子集定义的语法为where field_name=$FLEX$. value_set_name;
在写sql语句的时候我们经常会遇到这个问题,在pl/sql中运行某个视图,不能显示出数据,但是在界面上确有数据,这主要是因为视图是OU屏蔽的,因此需要你在pl/sql中初始化你的身份,这样你就可以在任何pl/sql环境中运行EBS的视图了,例如PO_HEADERS,PO_LINES 等。
二.进入report builder来设置数据模型,再利用报表向导按要求输出报表,分组时不要漏字段,在file/manage/编译报表,保存报表,格式一定注意以下几点:
1.建立报表后,选中报表名称段,按F4打开属性,字符模式->用字符单位设计->选择”是”。
2.修改encoding="UTF-8",为后面的XML输出作准备,至于为什么修改为"UTF-8",Chrisyang回在讨论课的时候和大家讨论:)3.在布局模型中,选择主要节段,按F4打开属性,字符模式->报表高度和报表宽度按照设计书填写。在字符模式下的布局设置是相当有讲究的,很多次的错都处在body size。在这里详细说一下,纸张的page size是指纸的实际物理大小,含边距,不是打印机可以打印的范围,实际上Oracle Report Layout的Main Section属性,其中的Section区域的Width和Height指的就是Page Size.1inch=72points;设计字符模式的报表,假如设置了width为x,Character Mode Report Width为y,那么,x*72/y最好为整数。比如A4横向,x为11,y 为132;Height的设置也需要符合这个要求。(引自一前辈的经验) report的默认设置是letter型的
区段的宽8.5高11
字符模式的报表宽80高66
我一般设置
区段的宽11高8.5
字符模式的报表宽180高58
再ebs中设置18058landscape型
Style对于一般报表,使用landwide,比如80*66最常规的报表,但是对超大报表设置landwide就不行了,设置BACS模式,Colums,rows放空,对于超大报表采用这个。
具体的打印设置大家可以参考黄建华前辈的:Oracle EBS11i报表打印设置基本原理
三:在ftp下到对应的路径,把保存的报表上传。
四:在EBS下设置
1.Define Executable:Concurrent->Program->Executable 2.Define program:Concurrent->Program->Define
在Define Executable的时候,一般的report程式Executable Method请使用oracle reports,在file name那里使用报表文件的名称,如果是procedure请使用pl/sql stored procedure,file name请使用“包名.procedure名”。
这里说一下上挂包和report的不同之处:向系统注册报表的时候,参数是无法根据顺序自动对应,需要我们指定Token,即报表的参数名称;而对于Procudure是可以根据位置自动对应的,即使定义的参数名称和Procedure参数名称不一样。这个可以这样理解,Procudure的参数是明确的,参数有多少个、顺序如何是由Procedure明确定义的;而对于报表来说,参数非常多,如果传了某个参数,就用该参数,否则Report用本身的默认值,没有顺序和个数的强制要求;另外procedure有且只有两个out put(return_code说明:0/success,1/warning,2/error)参数,其他的in参数可以自动根据顺序对应。在并发请求输出的时候,
输出到请求的输出:FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
'XXXXXXX');
输出到请求的日志:FND_FILE.PUT_LINE(FND_FILE.LOG,'XXXXXX');一般情况是把报表的内容输出到OUTPUT,把报表中间的debug逻辑输出到log中。
3.value sets设置:一般来说,常用的value sets,分为两种,一种是基于table的数据来源,一种不基于table的。对于基于table的数据来源,validation type选择table,选择了table才能使用按钮edit information,点击进入,table name处,可以是table,view或者查询段,但是,建议使用view来写,因为这里一旦设置好后,不能修改。如果要修改,只能将这个value set删除了,重新设置一个新的。TABLE可以写伪列名,这样的话,value处就要在栏位前加上伪列名前缀。一般来说,栏位设置value和meaning两个就可以,这样在选择画面中能看到两个栏位,value是传入的值,meaning是解释或者描述,方便使用者的选取。但是本例中将id栏位也写上了,这时显示的还是value和meaning两个,但是传入值变了,不再是value,而是ID。ID和VALUE可以相同,可以不相同。前面参数关联已经详细解释过,此处不再赘言。
对于WHERE/ORDER BY框里,这里一定记住写上WHERE/ORDER BY 的关键字(这一点一定要注意)。如果要关联已经定义的栏位子集,使用语法为:
where field_name=$FLEX$.value_set_name;
4.挂请求,提交,察看Log View查看日志/Output View输出内容。在练习的过程中,要锻炼自己依据日志的提示信息来诊断错误,输出的内容是XML编译出来的报表。
保存到本地并且改名为[l].
5在word下编辑,插入字段,倒入XML数据,然后用用Word来美化设计的报表(表格);保存文件为[f]。注意一定要保存位rtf格式。
6.进入EBS(以sysadmin登陆),进入(XML Publisher)职责。先创建(Data Defination),再创建(Template)。因为模板定义是会应用到数据定义,所以先数据定义再模板定义。命名的规范凡是出现ID,CODE,FORM,REPORT一定要定义为大写字母且。不超过8个字符。不论什么命名都要有意义这样做出来的东西才有价值.
7.最后在EBS下再次提交请求,来输出PDF格式的报表。
个人总结最容易出错的地方:参数关联设置(report中的sql书写)
布局设置
一些细节方面
truncated命令不记录日志:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论