对于custom.pll二次开发

转载自:http://wfly2004.blog.163.com/blog/static/117642720081111112246364/

转载自:http://anwenforever.blog.163.com/blog/static/133483106201123112640885/?fromdm&isFromSearchEngine=yes

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之后,就会避免这些问题。


Custom.pll里面有两个函数和一个过程,我们要修改的是 event这个过程,通过测试发 现此过程会在WHEN-NEW-FORM-INSTANCE ; WHEN-NEW-BLOCK-INSTANCE ;  WHEN-NEW-RECORD-INSTANCE ;WHEN-NEW-ITEM-INSTANCE ; WHEN-VALIDATE-RECORD这些触发器触发时候执行,了解的这个特性我们就可以在这个procedure中写入添加菜单的代码如下:

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');

  Record_Status Varchar2(30) := Name_In('system.record_status');
 v_Stage       Varchar2(1000);

  IfForm_Name = 'GLXJEENT' And Block_Name = 'LINES' and

     Event_Name = 'WHEN-NEW-BLOCK-INSTANCE'Then

    Declare

      Special_Menu_Name Varchar2(2000);

    Begin
    Special_Menu_Name := 'Longqin Add Action Message Test';

      App_Special2.Instantiate('SPECIAL42', Special_Menu_Name, Null, True);

      Return;
 End;
  If ((Form_Name = 'GLXJEENT') and (Block_Name = 'LINES') And
 (Event_Name = 'SPECIAL42')) Then

    --当Form为GLXJEENT,BLOCK为LINES,点击菜单Longqin Add Action Message Test时候执行下列PL/SQL代码。
  FND_MESSAGE.DEBUG('Longqin Add Action Message Test');

    --execute PL/SQL BLOCK
else

    return;

  END IF;
end event;

修改完成后上传Custom.pll编译,就可以到相应的界面看看效果了.(特 别提示:Custom.pll是标准的库文件,如果我们每次添加修改菜单都修改此文件难免会出现问题,因此建议将Custom.pll复制一份改个名 称,Custom.pll调用我们复制的custom.pll文件,以后就只用修改我们复制的custom.pll文件,这样可以减少系统出现故障的机 率);

 

 在CUSTOM.pll文件中获取某个项的值:

l_line_type_id := name_in('LINE.LINE_TYPE_ID');

你可能感兴趣的:(对于custom.pll二次开发)