来自于:http://oracleseeker.com/2008/09/21/use-custompll-personalize-forms-lov/
在开发过程中,经常碰到需要修改标准Form中LOV的需求,一般来说都是做一些条件限制。在不修改标准Form的fmb文件的前提下,可以通过Custom.pll来实现。
一、Custom.pll的工作机制
在EBS中大部分Form都是在TEMPLATE.fmb的基础上创建的,另外还有一些HR模块的Form是在HRTEMPLT.fmb的基础上创建的,这些模板Form在form级的触发器中会去调用custom.pll
这些Form级的触发器为:
- ZOOM
- WHEN-NEW-FORM-INSTANCE
- WHEN-NEW-BLOCK-INSTANCE
- WHEN-NEW-RECORD-INSTANCE
- WHEN-NEW-ITEM-INSTANCE
- WHEN-VALIDATE-RECORD
在HRMS模块,还有以下触发器也调用了custom.pll
- PRE-DELETE
- POST-DELETE
- PRE-UPDATE
- POST-UPDATE
- PRE-INSERT
- POST-INSERT
- POST-FORMS-COMMIT
- WHEN-CREATE-RECORD
- KEY-DELREC
1.jpg
在这些触发器中,会调用APP_STANDARD.EVENT过程中的call_all_libraries(event_name),call_all_libraries过程会调用custom.event(event_name)。
二、使用custom.pll修改标准form的LOV
从服务器下载custom.pll文件,使用form builder打开。点击PL/SQL Libraries,点击新建按钮,另存为pll文件,例如XXPOXPOEPO.pll,新建Package XXPOXPOEPO
新建procedure set_po_vendor_lov如下:
procedure set_po_vendor_lov
is
l_query_string varchar2(2000);
l_customer_group_id recordgroup;
l_temp_id number;
l_customer_lov lov;
begin
if name_in(‘system.cursor_item’) = ‘PO_HEADERS.VENDOR_NAME’ then
l_query_string :=
‘SELECT DISTINCT
pov.vendor_name,
pov.segment1
FROM po_vendors pov
WHERE pov.enabled_flag = ”Y” ;
if not id_null(find_group(‘CUX_SUPPLIER_NAME’)) then
delete_group(‘CUX_SUPPLIER_NAME’);
end if;
l_customer_group_id := create_group_from_query(‘CUX_SUPPLIER_NAME’, l_query_string);
set_lov_property(‘SUPPLIER_NAME’, GROUP_NAME, ‘CUX_SUPPLIER_NAME’);
end if;
end set_po_vendor_lov;
首先,使用create_group_from_query来创建一个lov record group,然后将我们需要修改的LOV的group置换为我们创建的group。由于这个过程是在when-new-item-instance中调用的,为了防止其他非使用该Lov的Item也执行改过程,所以在程序的开始进行了name_in(‘system.cursor_item’) = ‘PO_HEADERS.VENDOR_NAME’条件的判断,另外,由于record group创建一次在第二次如果再次创建就会报错,所以使用了
if not id_null(find_group(‘CUX_SUPPLIER_NAME’)) then
delete_group(‘CUX_SUPPLIER_NAME’);
end if;
删除group再创建(delete_group只能删除由程序创建的record group)。之所以用这种逻辑而不在创建的时候判断是否已经存在该group是因为这个query_string是动态的,所以在每次都创建才能保证每次LOV的结果是正确的。
接下来,就要把我们的pll添加到custom里面去,点击custom的Attached Libraries,点击添加按钮,选择XXPOXPOEPO。双击打开custom.pll中的custom package,将procedure event过程修改为如下:
procedure event(event_name varchar2) is
form_name varchar2(30) := name_in(‘system.current_form’);
block_name varchar2(30) := name_in(‘system.cursor_block’);
–item_name varchar2(30) := name_in(‘system.cursor_item’);
begin
if event_name = ‘WHEN-NEW-ITEM-INSTANCE’ then
if form_name = ‘POXPOEPO’
and block_name = ‘PO_HEADERS’
–and item_name = ‘PO_HEADERS.VENDOR_NAME’
then
XXPOXPOEPO.set_po_vendor_lov;
end if;
end if;
end event;
在开始的时候,我是在custom过程中去判断当前Item是否等于VENDOR_NAME(红颜色的代码),结果发现添加了改条件之后,某一些Form会出现no data found的错误(例如应用开发员的功能form),这是因为该Form在打开的时候system.cursor_item为空,所以要把item的判断写进了自己客户化的pll中。
最后,把custom.pll和xxpoxpoepo.pll上传到服务器$AU_TOP/resource目录下,使用下面的命令编译pll,退出EBS再重新登陆,LOV就生效了
f60gen module_type=LIBRARY module=CUSTOM userid=apps/apps
相关推荐
使用Custom.pll修改标准Form的LOV 16 实现主从关系Form中汇总行金额/数量 21 Oracle EBS客户化程序中格式化金额 25 Form中动态创建PopList 28 Oracle EBS环境下查找数据源(Form篇) 30 解决EBS中混淆经营单位和库存...
1G时钟.pll
使用MATLAB中的simulink,搭建了一个基于二阶广义积分器的软件锁相环
电机控制器,两种基于滑模观测器的PMSM无感矢量控制仿真(开关设置区分): 1. PLL+滑模(降低高频开关噪声); 2. arctan+滑模; 有配套算法原理资料
我们经常遇到一个问题:对于某个功能,Oracle是否提供标准的API给我们使用?如果有,则可以方便批量导入新的数据或者批量处理业务数据。 对于常用的EBS API说明以及相关的使用,黄建华的一篇文档常用接口开发参考>...
C++ programm. Digital pll.
PLL设计的经典书 简洁易懂,英文版 Table of Contents PLL BASICS .............................................................................................................................................
Phase Locked Loops (PLL) Introduction to PLL The concept of Phase Locked Loops (PLL) first emerged in the early 1930’s.But the technology was not developed as it now, the cost factor for developing ...
详细介绍PLL的原理,设计方法等 Table of Contents PLL BASICS ................................................................................................................................................
通过更改pll的参数修改系统时钟输出频率为任意值.
pll的matlab仿真模型,完整,可以使用
1.领域:matlab,PLL锁相环环路稳态 2.内容:通过MATLAB仿真分析PLL锁相环环路稳态频率响应和暂态响应+代码操作视频 3.用处:用于PLL锁相环环路稳态编程学习 4.指向人群:本科,硕士,博士等教研使用 5.运行...
采用matlab对FLL辅助PLL的载波跟踪进行仿真
PLL的单向仿真电路 可以直接打开使用的哈哈哈哈哈哈哈
UsetheMatlabtomodelthePLLsystemcomponent-pll_component_design_matlab.pdf This document will deal with the PLL component design from a control point of view. It is desired to be able to predict the ...
Matlab code function PLL analisys
PLL sin with interference analisys
PLL Saw function Analisys
自己搭建的锁相环电路PLL-pll0.mdl 自己搭建的锁相环电路(PLL)
该算法是介绍三相软件锁相环源代码,通过C编写