(转Oracle Seeker)
在之前的文章 使用Custom.pll修改标准Form的LOV 中描述了如何使用Custom.pll修改LOV,现在介绍另外一种不需要修改fmb文件修改Form LOV的方法,使用Form的个性化工具。
本文结合一个简单的Form做描述,这是没有个性化之前的LOV,LOV取自表FND_USER,没有做任何条件限制。
首先打开Form的个性化工具,点击菜单帮助–诊断–自定义代码–个性化:
一、选择触发器事件以及触发器对象
在打开的个性化窗口中
如下图,其中触发器选择WHEN-NEW-ITEM-INSTANCE,触发器对象选择HEADER.HEADER_ITEM(对应LOV的Item),保存:
二、确定触发器动作
1.创建LOV的Record Group
切换活动标签页,首先创建Record Group,为了简单起见,写死了一个查询条件,只出来两条记录:
2.修改LOV的Group Name属性
在值对应那一栏填上之前创建的Record Group的名字:
最后保存退出,重新打开Form,就能看到效果了
三、总结
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来达到我们所期望的效果。