Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang1ORACLEEBS—报表开发工具之闲碎Author:Jarwang(王重东)CreateDate:January10,2011CreateLocation:BeiJingUpdateDate:ControlNo:CurrentEdition:1.0声明:本文可以任意免费转载、复制、传播。但您务必保持其完整性!Ifyoucopythisdocument,yououghttokeepthedocumentcompletely.Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang2DocumentControlModifyRecord日期作者版本更改参考January10,2010jarwang1.0Approved姓名职位签字Distribute编码姓名地点和位置1234Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang3ContentDocumentControl2ModifyRecord2Approved2Content3Preface5ReportBuilder6Download6Installation6Development6Report入门例子6Report页面设置10数据模型、固定框、循环框10实现记录汇总行动态伸缩12Report多数据源12查询视图无数据12Report数据域13Report汇总项13Report动态条件查询14矩阵报表14Report编译出错14Discoverer16Download16Installation16Discovererforweb16DiscovererforDesktop16Development17Discoverer快速入门示例17Discoverer工作表数值型显示21通过工作簿找到对应的Discoverer职责21DiscovererJOIN之使用22Discoverer数值型无法正确显示23Discoverer上钻/下钻24Discoverer分类汇总求AP供应商余额27OracleHTMLReport29Configuration29Development29CreatethePackage29CreatetheConcurrentrequest31RuntheConcurrentrequest32OracleWEBPL/SQLReport33InstallationError!Bookmarknotdefined.Development33XMLPublisher34Foundation34Download35Installation35Development36XMLPublishierforInvoice36CreatetheConcurrentrequest42DeployXMLPublisher43OracleDBI46Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang4Installation46Configuration46DBI之报表开发48DBI维度报表开发52OracleBIEE工具59Download59BIEE工具之体念59BIPublisher工具之体念60GLFSG63DownloadError!Bookmarknotdefined.OtherNotes64Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang5PrefaceOracleEBS的报表工具,相对于OracleForm、OracleOAF界面开发工具而言,可谓五花八门。ToolsPurposeOracleReportBuilderOracle的最初报表工具。即使是R12,在打印凭证之类报表时,仍是首选。OracleDiscovererOracle最初的BI分析工具,现在的版本为Discoverer10g。OracleWEBADI严格上来说并不是报表工具,只是与Excel高度集中。也可用于报表开发。OracleHTML报表通过调用EBS内置fnd_file函数编写HTML报表。OracleWEBPL/SQL报表通过调用Oracle内置htp函数编写HTML报表。OracleDailyBIOracleEBS内置的BI分析工具。OracleXMLPublisher号称是ReportBuilder替代产品。OracleBIPublishierOracleXMLPublishier升级版。OracleBIEEOracleBI最新套件。Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang6ReportBuilderOracle的东西总是要“标新立异”,report也不列外,非得搞个什么循环框、固定框之类专有概念。外面大多数报表工具,如crystalreport、JavaBirt、VBActiveReport等报表工具,其基本概念是一致的。而OracleReport就不一样了。什么循环框、固定框,不就是几group么?好像换个概念,技术含量就比较高似得?还有Report的撤销重做功能,居然只能有一次。Faint!DownloadInstallationDevelopmentReport入门例子1、新建报表设置布局的尺寸2、创建SQL语句数据源点击LayoutModel,创建SQL数据源Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang7点击OK按钮3、切换到LayoutModel添加一个固定框修改固定框的背景色4、在固定框中添加一个循环框。Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang8指定循环框的的数据来源5、在循环框上方再添加一个固定框,用于展现报表的题头。修改固定框属性6、在循环框上方再添加一个固定框,用于展现报表的列标题。修改固定框属性7、在循环框内添加数据域Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang9调整后的布局运行结果8、在循环框、固定框添加划线。运行结果9、查看REPORT的页边距设置Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang10Report页面设置数据模型、固定框、循环框1.0数据模型与循环框的层次1.1布局原则一般布局方法是先画固定框,然后在其内套入:1.表头固定框,2.表数据源循环框。Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang11最外层的固定框属性设置:注:最外层固定框的“打印对象在”必须设置为“第一页”。表头固定框属性设置:注:表头的“打印对象在”必须设置为“全部页”。表数据源属性设置:1.2实现自动分页。当记录总数不只一页时,要实现自动分页,必须将最外层的固定框或循环框“打印对象在”设置为“第一页”。Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang12实现记录汇总行动态伸缩效果:固定框会紧接着循环框的位置。Report多数据源Report的数据源来源多条SQL语句,SQL语句之间实现条件关联。查询视图无数据如果确认SQL语句确有数据,则有可能是OU的设置的问题。在报表的BeforeParameterForm触发器加入初始化条件。functionBeforePFormreturnbooleanisbeginAPPS.FND_GLOBAL.apps_initialize(user_id=APPS.FND_GLOBAL.user_id,resp_id=APPS.FND_GLOBAL.resp_id,resp_appl_id=APPS.FND_GLOBAL.resp_appl_id);Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang13return(TRUE);end;Report数据域OracleReport引用数据模型的数据源,有二种方式。1.较常规的做法。直接使用工具栏上的“域”标签,然后设置相应数据源2.使用“文本”标签,然后用“&”进行引用。3.在PL/SQL中引用报表域文本的值,只需在PL/SQL直接引用域对应源字段名称即可(无须加组名)。Report汇总项Report的汇总项比较灵活,在不同的组其汇总规则是可以多变的。这也会隐藏一些不易发现的问题。比如,下面这个数据源分为三个组。这个数据源大量使用了汇总项,但汇总项的默认汇总规则是基于整个数据源的,也是就说汇总项是基于整个REPORT的。如图所示:Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang14这也是会造成错误的原因,因为我们在使用汇总项,会自以认为REPROT会帮我们处理好这个汇总规则。可事实却相反。这个汇总项的“重设于”属性就是汇总规则。显然处于分组的汇总“重设于”应该基于相应的组。Report动态条件查询如果一条SQL的查询条件是动态的,SQL语句本身是无法做到这个功能。在JAVA中常见的做法进行这字符串拼接来达到这一功能。在Report也差不多,在触发器事件中进行字符串拼接。增加一个报表用户参数p_batch_id_char、p_batch_id_temp在报表AfterParameterForm触发器,加入字符串拼接条件functionAfterPFormreturnbooleanisbeginifnvl(:p_batch_id_char,'A')='A'then–通过条件,来进行字符串拼接。:p_batch_id_temp:='and1=1';else:p_batch_id_temp:='andto_char(m.fee_batch_id)in('||:p_batch_id_char||')';endif;return(TRUE);end;在数据模型的SQL语句中加入刚才拼接的字符串。Select*fromtable_namewhere&p_batch_id_temp注:是用“&”,不是PL/SQL中的“||”。矩阵报表矩阵报表,不要被Oracle的概念给忽悠了。其实就是crystalreport中是交叉报表。Report编译出错错误1:在本机上可以执行成功,但上传在EBS服务器时,执行报表请求时报错。错误提示:SpawnedProcess15601Author:JarWang(王重东)QQ:jarwang@sina.comCopyright(R):Jarwang15REP-0736:此处存在未编译的程序单元.REP-1247:报表包含未编译的PL/SQL.原因分析:很有可能是程序包、视图、表等对象,没有授权或是失效了。解决:授权REPORT中所有到的程序包、视图、表等对象错误2:在本机上可以执行成功,但上传在EBS服务器时,执行报表请求报错。错误提示:CurrentNLS_LANGandNLS_NUMERIC_CHARACTERSEnvironmentVariablesare:SIMPLIFIEDCHINESE_CHINA.ZHS16GBK'.,'REP-3000:启动OracleToolkit时发生内部错误.REP-3000:启动OracleToolkit时发生内部错误.解决:以图形界面登陆EBS服务器,进入$COMMON_TOP/admin/scripts/EBSNAME关闭r