Oracle EBS Html报表开发总结

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle EBS Html报表开发总结

一需求分析

1 确认需求

1.1 确定参数类型、个数,可否为空,是否必输。

1.2 提炼、分析和自习审查已经收集到的需求,以确保所有的风险承担者都明确其含义并找到其中的错误和其他不足的地方(在必要的情况下向顾问提出改进建议);

1.3 确认报表样式、title等;

2 确定字段

确认报表中的表项取值及应满足的逻辑条件,拿到正确的字段;

3 涉及计算的字段取值

报表中需要计算的表项具体计算公式;

4 数据获取

找字段方法总结:

4.1 从EBS中的历史记录来找到该字段是来自哪个视图,再从帮助下的诊断来找到字段的名称;

4.2 利用弹性域来找字段,首先找到是否是描述性弹性域,再找到弹性域的名称,从弹性域中找到字段;

Step1.找到该描述性弹性域的名称

Step2.切换职责,在【系统管理员】中查找该描述性弹性域

即可查看该弹性域内EBS字段对应的基表字段,如下:

4.3 从弹性域中的块下找到system,字段是last query 下来找整个form下的字段;路径:帮助→诊断→检查

块:SYSTEM

字段:LAST_QUERY

值:查询当前FORM中所有字段用到的SQL语句,包括字段名,基表或视图。

4.4 自己添加一条数据来进行先后对比确定EBS中的项目对应的基表字段;

二报表设计

1 表头设计

1.1报表行动态

在报表的输出中,报表的表头数据是作为报表的参数输出

例如下表

该表中的测试序列,开发序列等都是作为报表的参数输出的,只能选一个或全选,不选则全出,每个序列下的职务信息都是根据序列来查出来显示在报表中,在此如何控制报表的样式。

首先测试序列作为一个游标循环输出,在内层循环根据序列作为一个游标输出,在控制表样

时根据序列查出该序列的colspan:

for xulie in (根据参数取序列) loop

在此处算该序列的colspan即该序列下有多少职务,在输出序列时传到其colspan中

For zhiwu in (序列游标作为条件查询该序列的职务信息)loop

输出职务的信息,在输出时注意报表的格式,注意输出部分是列还是行的循环输出。

End loop;

End loop;

1.2报表列动态

在报表的输出过程中,表行是作为参数输出的,具体以下表为例

月份,一级组织和二级组织都是作为参数的一部分,在此处详细介绍在输出报表时关于如何控制表样算行的三种方法:

1) 嵌套Table的方法

在此处主要介绍表头下面的表格输出

月份

');

for 一级组织in (一级组织的所有信息) loop

在此处查询该一级组织下的二级组织的个数ln_row1

fnd_file.put_line(fnd_file.output

,'

');

for 二级组织in(根据一级组织查询的所有二级组织的信息)loop

从报表可知该rowspan 值为1

fnd_file.put_line(fnd_file.output

,'

');

end loop;

end loop;

end loop;

该算法的优点:该算法能在输出之前根据需求算好该

一级组织

二级组织..

嵌套表的优点:嵌套table的方法在使用时不用去考虑一级组织和二级组织的行数,只需要按照HTML的格式在输出部分循环输出就可以。

嵌套表的缺点:嵌套table的方法的缺点很明显,数据可以按照你想实现的实现,但是

表的各种属性要严格控制,否则就出现上下列不对齐,而且嵌套table的方法在循环输出的时候要严格控制它的开始输出的HTML标记和在循环结束时应该有的结束标记,表格嵌套的越多逻辑越容易乱

注意:在使用嵌套table的方法时要注意表头是作为一个table标签的,否则就会出现列不对应的情况,如下图。表头也使用嵌套,通过ID来标识它们的一一对应性。

2) 在输出之前算好该

标签的rowspan值

例如在此报表中,月份的rospan值就应该是所有的二级组织的行数再加上所有的一级组织的行数(因为每个一级组织有个合计要算),;然后一级组织的rospan值就是该一级组织下的所有二级组织的行数再加上1(因为该一级组织有个合计要算)。每个rowspan都应该在输出之前将其算好赋予一个变量值,然后在输出的时候将此变量值传到HTML的rowspan中。例如此报表的处理方式如下:

先算出所有的二级组织的行数和一级组织的行数之和ln_month_row,此为月份的rowspan值

for v_month in 月份的游标loop

fnd_file.put_line(fnd_file.output

,'

' ||月份|| '' ||一级组织|| '' ||二级组织|| '报表二级组织后面的列
的rospan值,能实现报表的表样,相比于嵌套table的方法该方法在表样格式上控制简单,而且报表格式良好。

该算法的缺点:在算行数的时候如果二级组织有重名(即不同一级组织下有相同名字的二级组织)就会影响到行数的算法,对此的处理使用的是在查询时加上之前的一级组织字段,保证唯一,即:

select distinct 一级组织字段,二级组织字段from 表;

如果二级组织为空没有值,也会影响到行数,在输出时需要判断rowspan是否为0,如果为0则让其为1,二级组织为空,这样报表才能出来。

3) 使用字符串缓冲区

使用字符串缓冲区的方法是将一级组织和二级组织的信息先显示出来但不输出,在每层循环里面用一个变量来统计rospan,并将该循环的内容放到一个字符串缓冲区内,直到所有的循环跑完之后,再输出这个缓冲区的内容。具体介绍以此报表为例