在ERP标准custom.pll文件中,填写下面类似代码:
FUNCTION zoom_available RETURN BOOLEAN IS
form_name varchar2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
BEGIN
if (form_name = 'WIPDJMDF') then
return TRUE;
elsif (form_name = 'POXSCASL' and block_name = 'ASL_SUPPLIERS') then
return TRUE;
else
return FALSE;
end if;
END zoom_available;上段代码表示我们在form_name为:“WIPDJMDF”,“POXSCASL”的时候ZOOM按钮可用;
然后在自己定义的pll文件中响应ZOOM按钮:procedure event(event_name varchar2) is
Form_Name Varchar2(30) := Name_In('system.current_form');
Block_Name Varchar2(30) := Name_In('system.current_block');
Item_Name Varchar2(30) := Name_In('system.current_item');
Form_Status Varchar2(30) := Name_In('system.form_status');
l_Record_Status Varchar2(30) := Name_In('system.record_status');
v_Stage Varchar2(1000);
v_item_id number;
V_vendor_name varchar2(300);
Begin/*when form. instance*/
DEFAULT_VALUE(null,'GLOBAL.XXUTS_MFG_REVISION_MPN'); /*全局参数*/
if (event_name = 'ZOOM' and form_name = 'POXSCASL') then
v_item_id:=Name_In('ASL_ITEMS.ITEM_ID');
FND_FUNCTION.EXECUTE(/*调用另一Form*/
function_name=>'XXUTS_MFG_ITEM_REVISION',
other_params =>'INVENTORY_ITEM_ID ='||v_item_id);
End if;
If (form_name = 'POXSCASL') and (event_name = 'WHEN-NEW-ITEM-INSTANCE') THEN
if NAME_IN('GLOBAL.XXUTS_MFG_REVISION_MPN') is not null then
copy(name_in('global.XXUTS_MFG_REVISION_MPN'),'ASL_SUPPLIERS.PRIMARY_VENDOR_ITEM');
COPY(null, 'global.XXUTS_MFG_REVISION_MPN');
end if;
end if;
end event;
当系统不自动激活菜单上的图标时,可以在数据块的 block-level 的 when-new-block-instance trigger中
添加如下代码:
以zoom为例子:set_menu_item_property('VIEW.ZOOM',ENABLED,PROPERTY_TURE)
在form-level 的相应的trigger(比如zoom trigger)中改写下列代码:
custom.event('ZOOM')
custom.pll是EBS标准的一个library,当系统启动的时候会加载这个library。
很多时候,我们会需要写一些pll文件,比如控制Form上某些item的属性,如果是控制标准Form的某些属性,那么我们就可以通过Library来实现,而不用去动标准的Form(一般我们建议不去修改标准的Form)。再比如在工具条上增加一些菜单,等等。
当然,所有这些我们都可以通过直接修改custom.pll来实现,但是,我们不建议这么做,我们可以copy custom.pll重命名为:xx_cn_custom.pll (名字自己取),然后把xx_cn_custom.pll加载到custom.pll下 (在custom.pll的event里,加上这段代码即可:xx_cn_custom.event;),这样,系统启动的时候就会通过custom.pll也把xx_cn_custom.pll启动起来,那么,以后有什么客户化的library都可以在xx_cn_custom.pll里面修改了。比如,我客户化了一个叫xx_wip_custom.pll的library,那么我只要在xx_cn_custom.pll的event的procedure里加上:xx_wip_custom.event;就可以了。
这样做的好处就是降低了风险,因为custom.pll是标准的library,不管是调试还是其它的,都会影响到全局,当我们加载xx_cn_custom.pll之后,就会避免这些问题
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25103190/viewspace-722007/ ,如需转载,请注明出处,否则将追究法律责任。