在Report中取得帐户描述(2)

九月 26, 2008 in Oracle EBS二次开发

 

本文介绍通过SQL语句取得账户段值对应的描述。

 

编写SQL的思路

 

  1. 通过预制文件取得当前的帐簿信息
  2. 通过表gl_set_of_books表取得帐户结构ID
  3. 根据结构ID从弹性域相关表中取得段值的描述
  4. 并根据帐户段的设置来连接段

 

编写SQL来取得段的描述存在如下的问题

 

  1. SQL相对复杂
  2. 如果帐户段之间存在依赖关系就比较麻烦
  3. 写出的SQL移植性差
  4. 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在一些场合下也会使用到。

相关文章:

  1. 在Report中取得帐户描述(3)

1 response to 在Report中取得帐户描述(2)

  1. 是不是可以写函数,用

    首先进行验证,其实就当着初始化变量

    fnd_flex_keyval.validate_ccid(appl_short_name => ‘SQLGL’,
    key_flex_code => ‘GL#’,
    structure_number => g_coa_id,
    combination_id => p_cc_id);

    获取段值

    fnd_flex_keyval.segment_value(1);

    获取段描述

    fnd_flex_keyval.segment_description(1);

    转自http://bbs.itjaj.com/thread-3930-1-1.html
    以避免sql 移植性差以及user_exit不能在本地运行时显示数据?

Leave a reply

You must be logged in to post a comment.