来自于: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
相关推荐
最后,我们需要设置 Form 的行为和逻辑,使用 CUSTOM.PLL 来编写自定义代码。 EBS Form 个性化是一个功能强大且灵活的功能,提供了灵活的 Form 开发和自定义能力。通过 EBS Form 个性化,用户可以快速创建出满足...
1G时钟.pll
标题"PLL.rar_PLL_Sin Pll"暗示了这个压缩包内容与PLL相关,特别是与正弦波(sin)和PLL在干扰分析方面的应用有关。 描述中提到的"PLL sin with interference analisys"进一步确认了我们关注的重点是含有噪声干扰的...
但是,对于非标准API的查找和使用,通常需要借助Oracle提供的集成信息库,这是官方的查找API信息的资源。集成信息库可以提供所有Oracle EBS API的概况,但可能会存在说明不够详细具体,缺乏客制化使用例子的问题,这...
3. ICS9248BF-87.pll、ICS94225AF.pll、ICS950910AF.pll、ICS954127BFLF.pll、ICS9LPRS954BGLF.pll、ICS9UMS9610BL.pll、ICS9LPRS419DFLF.pll、ICS9148BF-26.pll:这些都是 Intersil(现为 Renesas,瑞萨电子)的PLL...
**锁相环(PLL)与SOGI二阶锁相环** 锁相环(Phase-Locked Loop,简称PLL)是一种广泛应用于通信、信号处理、频率合成等领域的电子系统。其基本工作原理是通过比较输入参考信号与系统产生的信号之间的相位差,调整...
**PLL(Phase-Locked Loop)锁相环原理详解** PLL,即锁相环,是一种广泛应用于通信、数字信号处理和时钟恢复等领域的电路技术。它通过比较输入信号与内部振荡器产生的信号之间的相位差,从而实现对振荡器频率的...
PLL 的硬件实现可以通过使用专门的 PLL 芯片或使用数字信号处理器来实现。常用的 PLL 硬件实现电路包括了鉴相器、环路滤波器和压控振荡器三个部分。 4. PLL 的软件实现 PLL 的软件实现可以通过使用数字信号处理器...
另一种方法是使用反正切函数(arctan)结合滑模观测器来估计电机的状态。在无传感器矢量控制中,电机的磁链和速度需要被实时估计。通过反正切函数,可以从电压和电流信号中解耦出这些信息。同样地,滑模观测器用于...
4. 数字PLL(DPLL):相对于传统的模拟PLL,DPLL使用数字信号处理技术,具有更高的精度和灵活性。 PLL技术是现代电子系统中不可或缺的一部分,理解其工作原理和应用对于设计高效、可靠的系统具有重要意义。通过深入...
PLL(Phase-Locked Loop,锁相环)是一种广泛应用于通信、信号处理和数字系统中的电路技术,用于同步信号或者恢复信号的时钟频率。在C++编程中,实现数字PLL可以涉及许多关键概念和步骤。这里我们将深入探讨PLL的...
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 ...
在这个“rtl.zip_PLL_RTL开发_pll VHDL_pll vhdl_频率控制”项目中,我们将深入探讨PLL的设计、RTL(Register Transfer Level,寄存器传输级)开发流程以及如何使用SPI(Serial Peripheral Interface)接口进行频率...
在模板例子中,我们可以修改 WHEN-NEW-FORM-INSTANCE 中文件夹数据块定义语句中的参数,确定对象名称(一般为 form 对象名称)、文件夹数据块名称、标题块名称、堆叠画布名称、窗口名称等。 例如,我们可以定义一个...
PLL(Phase-Locked Loop,锁相环)是一种广泛应用于通信、信号处理和数字系统中的电路技术,主要用于频率合成、频率锁定、相位同步等任务。本资料“PLL.rar”包含了关于PLL设计、参数调试和转速估算的MATLAB实现,这...
标题中的"easy pll.exe"指的是一个可执行文件,它是一个用于配置老款国半(National Semiconductor,现已被Texas Instruments收购)锁相环(PLL)芯片的工具,特别是LMX2326型号。这个工具提供了用户友好的界面,...
在使用这个资源时,可以结合具体的FPGA型号和开发环境,逐步了解并实践PLL参数的修改步骤,从而实现对系统时钟频率的精确控制。通过这样的学习,不仅可以掌握PLL的基本工作原理,还能提升FPGA设计中时钟管理的能力。
通过修改和运行代码,可以直观地看到PLL如何响应不同的输入信号,加深对PLL的理解。 总之,"PLL的MATLAB建模源代码"是一个宝贵的教育资源,它提供了一种动态、可交互的方式去探索和掌握锁相环的工作机制,同时也为...
PLL(Phase-Locked Loop,锁相环)是一种广泛...通过对"pll.mdl"文件的深入研究和修改,我们可以更深入地理解PLL的工作原理,以及如何利用MATLAB优化其性能。这在通信系统设计、信号同步和频率恢复等领域具有重要意义。
"pll2.Ddb"文件可能是使用某种电路设计软件(如Altium Designer或EAGLE)创建的PCB布局设计,包含了元件的位置、走线路径以及电源、接地等关键设计元素。设计师需要考虑信号完整性和电磁兼容性(EMC)问题,避免串扰...