Oracle EBS Form个性化 联系客服

发布时间 : 星期一 文章Oracle EBS Form个性化更新完毕开始阅读9bc6553843323968011c923f

Custom.pll 个性化

从以上的描述,我们可以看到form个性化满足了我们对form做某些更改的需求,但是还是有不少的局限。Oracle给我们的个性化还提供了一个途径:CUSTOM.PLL。

CUSTOM.PLL可以实现我们更加复杂的个性化需求。因为在这里,我们可以写更加复杂的PLSQL,但是与我们直接在form里做修改相比,还是有很多限制的。CUSTOM.PLL是标准的library,不管是调试还是其它的,都会影响到全局

从本质上来说,form个性化和CUSTOM.PLL是相同的,可以发现如果选择了:帮助-诊断-自定义代码-关闭。CUSTOM.PLL的代码也不起作用了。

代码实现

编译命令

CUSTOM.pll路径:$AU_TOP/RESOURCE

在$AU_TOP/RESOURCE路径下编译CUSTOM.pll的命令:

frmcmp_batch module=$AU_TOP/RESOURCE /CUSTOM.pll userid=apps/apps Module_Type=LIBRARY

Custom.pll中的Function和Procedure ?

function zoom_available return Boolean; 是否启用工具栏中:view-zoom ,例如

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 = 'FNDCPMCP' AND block_name = ' CONC_PROG' THEN RETURN TRUE; ELSE RETURN FALSE; END IF; RETURN FALSE; END zoom_available; ? function style(event_name varchar2) return integer;

是用来指定下面event里面代码执行的方式,是先执行,后执行,还是覆盖。可选的有:custom.before、custom.after、custom.override、custom.standard(默认值).例如:

FUNCTION style(event_name VARCHAR2) RETURN INTEGER IS BEGIN IF event_name IN ('SPECIAL10', 'SPECIAL11', 'SPECIAL12') THEN RETURN custom.override; ELSE RETURN custom.standard; END IF; END style; ? procedure event(event_name varchar2) 这是主要代码,这里面允许使用的触发器有

ZOOM 、WHEN-NEW-FORM-INSTANCE 、

WHEN-NEW-BLOCK-INSTANCE 、WHEN-NEW-RECORD-INSTANCE 、WHEN-NEW-ITEM-INSTANCE 、WHEN-VALIDATE-RECORD,还有special 代码结构为:

PROCEDURE event(event_name VARCHAR2) IS form_name VARCHAR2(30) := name_in('system.current_form'); block_name VARCHAR2(30) := name_in('system.cursor_block'); BEGIN IF (event_name = 'ZOOM') THEN ……--个性化代码 ELSIF (event_name = 'WHEN-NEW-FORM-INSTANCE') THEN IF (form_name = 'FNDCPMCP' AND block_name = 'CONC_PROG') THEN ……--个性化指定的form、block、trigger的代码 END IF; ELSIF (event_name = 'WHEN-NEW-BLOCK-INSTANCE') THEN …… ELSIF (event_name = 'SPECIAL10') THEN …… ELSE NULL; END IF; END event; 个性化方法比较

通常会建议首先使用form个性化,其次是custom.pll。在使用custom.pll时,也建议不直接在custom.pll里面做客户化。因为custom.pll是标准的library,不管是调试还是其它的,都会影响到全局。有人建议比较好的做法是复制一份custom.pll来做个性化,比较认同。具体步骤:

将custom.pll另外copy一份,起名为xx_custom.pll,把xx_custom.pll加载到custom.pll下(用form builder打开custom.pll,在Attached Libraries里面加上xx_custom.pll),然后在custom.pll的event 里面写代码:xx_custom.event(event_name); 。这样,我们的客户化代码都可以放在xx_custom.pll这个library里面,降低了风险。(这个没试过,不知道效果会怎么样,o(∩_∩)o )

未决与已结问题

未决问题

序号 问题 解决方案 负责人 目标日期 实际日期 1 2

已结问题

序号 问题 解决方案 负责人 目标日期 实际日期