如何在report中使用fnd_profile.value

    问题:在ebs的report客户化开发中,fnd_profile.value('RESP_ID')  ,fnd_profile.VALUE('GL_SET_OF_BKS_ID') 等无效。

    解约方法:在report中使用fnd_profile.value的oracle标准方法为:
       1、添加用户参数p_conc_request_id
       2、在BeforeReport和AfterReport两个report trigger中,添加srw.user_exit('FND SRWEXIT');
即可在report中正常使用fnd_profile.value.

 

function BeforeReport return boolean is
begin

begin
SRW.USER_EXIT('FND SRWINIT');
exception when srw.user_exit_failure then
srw.message(3001,'Error in SRWINIT');
raise;
end;
return (TRUE);
end;


 

function AfterReport return boolean is
begin

begin
SRW.USER_EXIT('FND SRWEXIT');
exception when srw.user_exit_failure then
srw.message(4001,'Error in SRWEXIT');
end;

return (TRUE);
end;

 

 

原因:The   oracle   standard   report   always   use   srw.user_exit   ('FND   SRWINIT')   to   get   the   previous
 session   information  depend   on   p_conc_request_id,and   set   the   client   session   to   be   the   same   OU.
Because   the   application   is   difference   session   with   concurrent   program.If   you   use   fnd_profile.value(...)
  to   get   the   profile.You   may   get   the   same   OU   ,eventhough   you   change   OU. 
  You   can   also   get   the   correct   OU   by   using   definitoin   of   parameter   to   pass   in   report.

posted @ 2012-03-13 17:26  我不卖豆腐  阅读(1944)  评论(0编辑  收藏  举报