此制作方法是结合HTML语言及PL/SQL语言,以所见即所得方式发布的报表,发布的结果可直接拷贝到EXCEL中进行编辑,方便实用.
1. 制作报表模板
建议利用DreamWaver 制作. 主要工作是画报表布局及表头.然后拷出生成的HTML语句.如下:
设计窗口:
代码窗口:
生成的HTML 语句如下:
无标题文档
----------表头区域--------------
姓名
年龄
性别
部门
工资
----------表头区域--------------
----------数据生成区域--------------
DATA1
DATA2
DATA3
DATA4
DATA5
----------数据生成区域--------------
2. 编写PL/SQL 程序包
利用上面的HTML 语句,结合PL/SQL及标准的发布语句 HTP.P 来建议过程,总体路是:
A. 用HTP.P 先生成报表的标题部分需显示的内容.
B. 用HTP.P 再生成HTML语句的表头区上面的所有语句.
C. 用CURSOR提取需要在数据区域显示的数据,并建立循环.
D. 在循环体中用HTP.P显示HTML语句中的数据生成区域,当然,其中的DATA用上一步的CURSOR来显示.
E. 利用循环重复做上一步的动作.
F. 最后利用HTP.P显示报表表尾部分的内容.
例句如下:
DECLARE
CURSOR SS IS
SELECT XXXX
FROM XXXX
WHERE XXXX
BEGIN
HTP.P(‘这是一张测试报表’); --输出报表名称
HTP.P(SYSDATE); --输入日期
HTP.P(‘
无标题文档
----------表头区域--------------
姓名
年龄
性别
部门
工资
’); –输出表头
FOR I IN SS LOOP ---打开游标
HTP.P(‘
’||I.DATA1||’
’||I.DATA2||’
’||I.DATA3||’
’||I.DATA4||’
’||I.DATA5||’
‘); ---提取数据,中间绿色的为游标字段
END LOOP;
HTP.P(‘
‘) –输出表尾
END;
注: 上面例句是假定报表无任何格式.如有格式,可先在DW中设好,这样的话,HTML语句会不太一样.
另请注意: 如你定义变量来存储上面的HTML字符串,然后用HTP.P(变量)的方式写的话,一定要把变量的字节数定义的大点,否则可能报错.
3. 注册WEB/SQL
路径: 系统管理员/安全性/WEB PL/SQL
说明: 名称为你编写的 PL/SQL的包名及过程名,类型选”程序包过程”
4. 注册功能
路径: 系统管理员/应用/功能
说明: 功能名自定义, 用户功能名自定义,建议用真实的报表名
说明: 类型为”SSWA PLSQL函数”,支持维护模式为”无”,上下文为”责任”
说明: WEB HTML 定义为上个步骤所定义的WEB PL/SQL 程序包
5. 注册菜单
说明: 上面有提示的均为真实的FORM(即用来调用REPORT的FORM.另外设计)
下面没有提示的均为隐含的功能,即上个步骤所注册的WEB/SQL功能.
6. 设计FORM
制作用来传递参数的FORM,设计方法同正常的EBS FORM.
说明: 在运行按钮里必须写入调用上述隐含功能的语句,如下:
FND_FUNCTION.EXECUTE( '功能简称', 'Y', 'N');一般写在最后
7. 注册FORM
方法略,但须注意,正常FORM的功能与隐含的报表功能须在一个菜单中.
8. 参数传递
这种方法可能导致参数传递比较麻烦. 而 WEB/PLSQL好象又不支持参数的传递,因此一般我们这样实现:
A. 建立存储参数的数据库表.
B. 在FORM上选择参数,在运行报表前,先把参数INSERT到上面的表中,注意,须同时INSERT USER_ID(用户ID), RESP_ID(职责ID), RESP_APPL_ID(应用ID).语句如下:
insert into XXXX
(USER_ID,
RESP_ID,
RESP_APPL_ID,
--其余略
)
VALUES ( FND_GLOBAL.USER_ID,
FND_GLOBAL.RESP_ID,
FND_GLOBAL.RESP_APPL_ID,
--其余略
);
上述语句写在FORM里的运行报表前执行.
C. 在PL/SQL程序包里先初始化客户信息,语句如下:
USER_ID := fnd_global.USER_ID;
resp_id := fnd_global.RESP_ID;
RESP_APPL_ID := fnd_global.RESP_APPL_ID;
D. 在PL/SQL程序包里的游标应根据上面三个用户信息ID,去参数表里取出参数,然后再打开游标.取出正确的数据.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10359218/viewspace-677419/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10359218/viewspace-677419/