WEB PL/SQL Report 的开发方法

此制作方法是结合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/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值