在Report中取得帐户描述(3)
九月 27, 2008 in Oracle EBS二次开发
本文介绍在 Oracle Report Builder中使用用户出口函数(USER_EXIT)取得账户的描述。
在Oracle EBS的环境下,使用Oracle Report Builder可以很方便的取得关键性弹性域相关的数据信息,主要分为两个步骤来实现:
1)根据弹性域动态创建SQL语句,这个步骤生成的输出作为第二步骤的输入;
2)根据输出的要求显示数据。
一、初始化
在编写的SQL语句中添加词义变量(通过Placeholder实现);调用FND FLEXSQL用户出口函数来创建查询,并指定参数设定。
这样一来,报表在运行SQL查询运行之前根据用户出口函数的参数指定将词义变量替换为具体的数据库列,如编写了如下的查询语句:
SELECT &LEXICAL1 alias, column
FROM table
WHERE &LEXICAL2
如调用FND FLEXSQL用户出口函数的时候指定了弹性域有两个段组成,SEGMENT1的值小于2,即&LEXICAL1被替换为 “SEGMENT1||’\n’||SEGMENT2″,&LEXICAL2被替换为 “SEGMENT1 < 2″ 。这样实际的SQL查询语句则为:
SELECT SEGMENT1||’\n’||SEGMENT2 alias, column
FROM table
WHERE SEGMENT1 < 2
在这个阶段,我们还可以使用SELECT, ORDER BY, GROUP BY或者WHERE 语句来更改SQL语句;保证每个词义变量调用一次FND FLEXSQL用户出口函数。
二、显示
这一步骤就是将取出的弹性域数据根据要求显示出来,使用FND FLEXIDVAL 用户出口函数来处理。需要添加一个公式列(Formula Clumn)来包括显示的弹性域信息。
必须为每一条记录调用一次FND FLEXIDVAL
三、详细的实现步骤
- 添加一个用户参数 P_CONC_REQUEST_ID(Number),这个参数是在用户出口函数初始化的时候需要使用
- 在报表触发器BeforeReport中调用用户出口函数 FND SRWINIT 来初始化环境:取得并发程序相关信息和预制文件信息
- 在报表触发器AfterReport中调用用户出口函数 FND SRWEXIT 来释放用户出口函数中使用的内存
- 定义SQL中需要使用的词义变量,即定义一个Placeholder,并根据需要取出的段来设置空时的值
- 在报表触发器BeforeReport中调用用户出口函数 FND FLEXSQL来初始化SQL
- 在报表触发器BeforeReport中调用用户出口函数 FND FLEXSQL,并设置MODE=”WHERE”来限制查询的数据
- 在报表触发器BeforeReport中调用用户出口函数 FND FLEXSQL,并设置MODE=”ORDER BY”来对段列的数据进行排序
- 显示段值或段值的描述,通过创建公式列(Formula Column),并在公式列的触发器中调用FND FLEXIDVAL用户出口函数来显示弹性域数据
四、示例展示
下面以一个实际的例子将上面的步骤做出展示
目的:开发一个报表,打印出账户组合以及账户组合的描述、自然账户的描述
样式:
Combination Description Account Desc
———————– ————————————————————————————————————- ——————————–
100.1160.1210.0000.0000 US Company.EM2 Maintenance Plant.Receivables – Trade.Default.Future Use Receivables
100.1160.5902.0000.0000 US Company.EM2 Maintenance Plant.Invoice Price Variance.Default.Future Use Invoice Price Variance
100.1160.2220.0000.0000 US Company.EM2 Maintenance Plant.Uninvoiced Receipt Accrua.Default.Future Use Uninvoiced Receipt Accrua
100.1160.4100.0000.0000 US Company.EM2 Maintenance Plant.Product Revenue.Default.Future Use Product Revenue
关于如何取得账户描述的系列已结束:
-
