在Report中取得帐户描述(2)
九月 26, 2008 in Oracle EBS二次开发
本文介绍通过SQL语句取得账户段值对应的描述。
编写SQL的思路
- 通过预制文件取得当前的帐簿信息
- 通过表gl_set_of_books表取得帐户结构ID
- 根据结构ID从弹性域相关表中取得段值的描述
- 并根据帐户段的设置来连接段
编写SQL来取得段的描述存在如下的问题
- SQL相对复杂
- 如果帐户段之间存在依赖关系就比较麻烦
- 写出的SQL移植性差
- SQL性能容易出现瓶颈
下面是取得一个段值描述的SQL语句
SELECT DESCRIPTION
FROM FND_FLEX_VALUES_VL B
WHERE B.FLEX_VALUE = 代码
AND EXISTS( SELECT NULL
FROM FND_ID_FLEX_SEGMENTS_VL D,
GL_SETS_OF_BOOKS E
WHERE D.ID_FLEX_CODE = ‘GL#’
AND D.ID_FLEX_NUM = E.CHART_ACCOUNT_ID
AND E.SET_OF_BOOK_ID=预置文件GL_SET_OF_BKS_ID
AND D.APPLICATION_COLUMN_NAME=SEGMENT?
AND D.FLEX_VALUE_SET_ID= B.FLEX_VALUE_SET_ID)
其中SEGMENT? 代表了需要取得第几段的值,如果是第一段则为 SEGMENT1 ,依次类推;‘GL#’是帐户关键性弹性域的代码
如果是从属段,还需要添加额外一个条件:
SELECT DESCRIPTION
FROM FND_FLEX_VALUES_VL B
WHERE B.FLEX_VALUE = 代码
AND B.PARENT_FLEX_VALUE_LOW = 父段的代码
虽然在报表中我们推荐使用USER_EXIT的方式取得关键性弹性域的段值描述,但是上面的SQL在一些场合下也会使用到。