report builder 中的函数 srw.user_exit 的用法详细介绍

[复制链接]
查看11 | 回复1 | 2014-10-22 14:12:00 | 显示全部楼层 |阅读模式
有没有人有详细的函数 srw.user_exit介绍呀?
最近改报表看到这样的函数,不是很明白。

回复

使用道具 举报

千问 | 2014-10-22 14:12:00 | 显示全部楼层
一、Oracle Report中使用用户出口函数

而在Oracle Report中需要去调用用户出口函数的时候就使用SRW.USER_EXIT函数来实现,在Report中如何使用弹性域的用户出口函数在开发手册上已经有了比较详细的使用说明,大的步骤有两个:
使用 FND FLEXSQL 取得数据,FND FLEXSQL提供的功能就是动态组建SQL语句,并根据提供的参数进行查询
使用 FND FLEXIDVAL 来格式化数据并显示在报表上面,FND FLEXIDVAL提高的功能就是根据FND FLEXSQL取出的数据根据提供的参数进行格式化

在Oracle Report工具中经常使用SRW.USER_EXIT来取得一些和弹性域有关的值:
1)最常见的就是关键性弹性域的描述,Oracle EBS中关键性弹性域中段值的描述是通过独立型值集来定义的,自己来写SQL取得段的描述比较麻烦,主要是随着系统设置的不同,弹性域段的结构是不一样 的,而且会出现段之间存在依赖关系的情况,这样取得段值的描述就更麻烦了,而且在报表需求中可能有的地方需要显示一段,有的地方是两段,等等的需求。
实际的例子可以查看GL模块中的标准报表 GLYRLGLG.rdf(Journals – Entry/日记帐 – 分录),当然有这种用法的报表非常多

2)而另外一个在Oracle Report常用的用户出口函数是关于本位币和外币转换和格式化的函数,由于很多使用需要在报表中即显示本位币的金额又需要显示外币的金额,但是系统中只 存储了本位币的金额;而如果不使用用户出口函数来实现从本位币金额到外币金额的转换,那转换和格式化金额就比较麻烦,使用Oracle已经实现的用户出口 函数就比较简单

在Report中实现本位币和外币转换格式化的例子有APXINAGE.rdf(Invoice Aging Report/发票帐龄报表),使用的例子:
BEGIN
SRW.REFERENCE(:C_INV_DUE_AMT_3);
SRW.REFERENCE(:C_BASE_CURRENCY_CODE);
SRW.REFERENCE(:P_MIN_PRECISION);
SRW.USER_EXIT(‘FND FORMAT_CURRENCY
CODE=”:C_BASE_CURRENCY_CODE”
DISPLAY_WIDTH=”15″
AMOUNT=”:C_INV_DUE_AMT_3″
DISPLAY=”:C_INV_DUE_AMT_3_F”
MINIMUM_PRECISION=”:P_MIN_PRECISION”‘);
RETURN(:C_INV_DUE_AMT_3_F);
END;

参数的详细解释请参考弹性域使用手册
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行