使用Form个性化修改标准Form的LOV2

(转Oracle Seeker)

在之前的文章 使用Custom.pll修改标准Form的LOV 中描述了如何使用Custom.pll修改LOV,现在介绍另外一种不需要修改fmb文件修改Form LOV的方法,使用Form的个性化工具。

本文结合一个简单的Form做描述,这是没有个性化之前的LOV,LOV取自表FND_USER,没有做任何条件限制。

Old_LOV

 

首先打开Form的个性化工具,点击菜单帮助–诊断–自定义代码–个性化:

Form_Personalization

 

一、选择触发器事件以及触发器对象

 

在打开的个性化窗口中

如下图,其中触发器选择WHEN-NEW-ITEM-INSTANCE,触发器对象选择HEADER.HEADER_ITEM(对应LOV的Item),保存:

Form_Personalization_Condition

 

二、确定触发器动作

    1.创建LOV的Record Group

       切换活动标签页,首先创建Record Group,为了简单起见,写死了一个查询条件,只出来两条记录:

 Form_Personalization_Action1

      

    2.修改LOV的Group Name属性

       在值对应那一栏填上之前创建的Record Group的名字:

Form_Personalization_Action2

 

最后保存退出,重新打开Form,就能看到效果了

New_LOV

 

三、总结

 

Form个性化和Custom.pll都是可以用来个性化Form的方法。当使用Form个性化修改LOV,用来创建的Record Group如果含有Form中的某个Item作为条件时(比如供应商地点的LOV中要以供应商作为条件),这时候如果把带有参数的查询条件作为Record Group的变元就会有问题。
因为个性化中创建Record Group的时候认为变元是一个字符串,我们加入了类似:PO_HEADERS.VENDOR_ID的字样它是不识别的。所以当遇到这样的情况,可以使用Custom.pll,通过name_in(’PO_HEADERS.VENDOR_ID’)来组合查询条件,然后在每次WHEN-NEW-ITEM-INSTANCE的时候,去动态的设置LOV来达到我们所期望的效果。

posted @ 2012-06-04 15:03  刘伟聪  阅读(283)  评论(0编辑  收藏  举报