ITPub博客

首页 > Linux操作系统 > Linux操作系统 > WEB PL/SQL Report 的开发方法

WEB PL/SQL Report 的开发方法

Linux操作系统 作者:hu825065235 时间:2016-05-26 18:18:41 0 删除 编辑

此制作方法是结合HTML语言及PL/SQL语言,以所见即所得方式发布的报表,发布的结果可直接拷贝到EXCEL中进行编辑,方便实用.

1. 制作报表模板

建议利用DreamWaver 制作. 主要工作是画报表布局及表头.然后拷出生成的HTML语句.如下:

设计窗口:

 

代码窗口:

 

生成的HTML 语句如下:

<html>

<head>

<meta. http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>无标题文档</title>

</head>

<body>

<table width="740" border="1">

----------表头区域--------------

<tr>

<td>姓名</td>

<td>年龄</td>

<td>性别</td>

<td>部门</td>

<td>工资</td>

</tr>

----------表头区域--------------

----------数据生成区域--------------

<tr>

<td>DATA1</td>

<td> DATA2</td>

<td> DATA3</td>

<td> DATA4</td>

<td> DATA5</td>

</tr>

----------数据生成区域--------------

</table>

</body>

</html>

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(‘ <html>

<head>

<meta. http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>无标题文档</title>

</head>

<body>

<table width="740" border="1">

----------表头区域--------------

<tr>

<td>姓名</td>

<td>年龄</td>

<td>性别</td>

<td>部门</td>

<td>工资</td>

</tr>

’); –输出表头

FOR I IN SS LOOP ---打开游标

HTP.P(‘<tr>

<td>’||I.DATA1||’</td>

<td> ’||I.DATA2||’</td>

<td> ’||I.DATA3||’</td>

<td> ’||I.DATA4||’</td>

<td> ’||I.DATA5||’</td>

</tr>

‘); ---提取数据,中间绿色的为游标字段

END LOOP;

HTP.P(‘</table>

</body>

</html>

‘) –输出表尾

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/29507357/viewspace-2107510/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2014-02-26

  • 博文量
    34
  • 访问量
    75783