在开发中对系统标准form的修改一般不建议修改系统原有FORM,对所需要修改的内容一般写在CUSTOM.PLL里即可,应为每个form运行的时候都会调用CUSTOM.PLL具体概念性东西可参考网上资料,很多的这里不再重述,只针应用做介绍

一,开发对象:程序 PROCEDURE event(event_name VARCHAR2);

二.判断在哪里触发

举例

IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-FORM-INSTANCE' THEN
--SET_MENU_ITEM_PROPERTY('SPECIAL.MENU15',LABEL,'自动创建');
--FND_MESSAGE.DEBUG('WHEN-NEW-FORM-INSTANCE');
set_menu_item_property('FILE.SAVE', enabled, PROPERTY_ON);-- able save menu
app_special2.instantiate('SPECIAL13', special_menu_name13, NULL, TRUE); --添加菜单API
app_special2.instantiate('SPECIAL14', special_menu_name14, NULL, TRUE); --添加菜单API
app_special2.instantiate('SPECIAL15', special_menu_name15, NULL, TRUE); --添加菜单API RETURN;
END IF;
IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-ITEM-INSTANCE' /*AND
block_name = 'INV_SUM_FOLDER'*/ THEN
IF name_in('INV_SUM_FOLDER.QUICK_PO_NUMBER') IS NULL THEN
set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_false);
ELSE
set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_true);
END IF;
--IF :SYSTEM.FORM_ATATUS = 'NEW' OR :SYSTEM.FORM_ATATUS = 'CHANGED' THEN
--V_STATUS := SYSTEM.BLOCK_ATATUS;
--FND_MESSAGE.DEBUG('SYSTEM.BLACK_ATATUS');
-- END IF;
V_INVOICE_ID := NAME_IN('INV_SUM_FOLDER.INVOICE_ID');
SELECT COUNT(*)
INTO V_COUNT
FROM AP_INVOICE_LINES_ALL L
WHERE l.invoice_id = V_INVOICE_ID
AND L.PO_LINE_ID IS NOT NULL
AND L.amount <> 0;
--FND_MESSAGE.DEBUG(V_INVOICE_ID||'---'||V_COUNT);
IF V_COUNT = 0 THEN
app_special.enable('SPECIAL15', property_OFF);
ELSE
app_special.enable('SPECIAL15', property_on);
END IF;
RETURN; END IF;

IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-BLOCK-INSTANCE' THEN

    --SET_MENU_ITEM_PROPERTY('SPECIAL.MENU15',LABEL,'自动创建');
app_special.enable('SPECIAL13', property_on);
app_special.enable('SPECIAL14', property_on);
app_special.enable('SPECIAL15', property_on); RETURN;
END IF;

三.获取FORM里面ITEM的值

V_INVOICE_ID :=  NAME_IN('INV_SUM_FOLDER.INVOICE_ID');

四.工具里面菜单开发

定义变量

form_name          VARCHAR2(30) := name_in('system.current_form');
block_name varchar2(30) := name_in('system.cursor_block');
special_menu_name13 VARCHAR2(2000);
special_menu_name14 VARCHAR2(2000);
special_menu_name15 VARCHAR2(2000);

菜单名称

 special_menu_name13 := '返利';
special_menu_name14 := '订单';
special_menu_name15 := '更新';

初始化菜单

 IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-FORM-INSTANCE' THEN
--SET_MENU_ITEM_PROPERTY('SPECIAL.MENU15',LABEL,'自动创建');
--FND_MESSAGE.DEBUG('WHEN-NEW-FORM-INSTANCE');
set_menu_item_property('FILE.SAVE', enabled, PROPERTY_ON);-- able save menu
app_special2.instantiate('SPECIAL13', special_menu_name13, NULL, TRUE); --添加菜单API
app_special2.instantiate('SPECIAL14', special_menu_name14, NULL, TRUE); --添加菜单API
app_special2.instantiate('SPECIAL15', special_menu_name15, NULL, TRUE); --添加菜单API RETURN;
END IF;

启用菜单

IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-BLOCK-INSTANCE' THEN

    --SET_MENU_ITEM_PROPERTY('SPECIAL.MENU15',LABEL,'自动创建');
app_special.enable('SPECIAL13', property_on);
app_special.enable('SPECIAL14', property_on);
app_special.enable('SPECIAL15', property_on); RETURN;
END IF;

触发菜单执行功能

 IF ((form_name = 'APXINWKB') /*and (Block_Name = 'LINES')*/
AND (event_name = 'SPECIAL13')) THEN

五。调用客户化FORM

IF ((form_name = 'APXINWKB') /*and (Block_Name = 'LINES')*/
AND (event_name = 'SPECIAL13')) THEN
IF name_in('System.Form_Status') = 'CHANGED' THEN
old_level := NAME_IN('system.message_level');
COPY('5','system.message_level');
commit;
COPY(old_level,'system.message_level');
END IF;
param_to_pass1 := name_in('INV_SUM_FOLDER.ORG_ID');
param_to_pass2 := name_in('INV_SUM_FOLDER.VENDOR_ID');
param_to_pass4 := name_in('INV_SUM_FOLDER.INVOICE_ID');
param_to_pass5 := name_in('INV_SUM_FOLDER.ACCTS_PAY_CODE_COMBINATION_ID');
param_to_pass6 := name_in('INV_SUM_FOLDER.GL_DATE');
param_to_pass7 := name_in('INV_SUM_FOLDER.SET_OF_BOOKS_ID');
--FND_MESSAGE.DEBUG('CUSTOM.PLL');
--FND_MESSAGE.DEBUG('param_to_pass4 '||param_to_pass4);
--FND_MESSAGE.DEBUG('param_to_pass5 '||param_to_pass5);
--FND_MESSAGE.DEBUG('param_to_pass6 '||param_to_pass6);
--FND_MESSAGE.DEBUG('param_to_pass7 '||param_to_pass7);
V_PROPERTY := Get_Menu_Item_Property('FILE.SAVE',enabled);
--FND_MESSAGE.DEBUG('V_PROPERTY '||V_PROPERTY);
--set_menu_item_property('FILE.SAVE', enabled, PROPERTY_OFF);-- disable save menu fnd_function.execute(function_name => 'CUXAPREBATE',
open_flag => 'Y',
session_flag => 'Y',
other_params => 'G_ORG_ID="' || param_to_pass1 ||
'" G_VENDOR_ID="' ||
param_to_pass2 || /*'"'||*/
'" G_INVOICE_ID="' ||
param_to_pass4 ||
'" G_CCID="' ||
param_to_pass5 ||
'" G_GL_DATE="' ||
param_to_pass6 ||
'" G_SET_OF_BOOKS_ID="' ||
param_to_pass7 || '"'); ELSIF ((form_name = 'APXINWKB') /*and (Block_Name = 'LINES')*/
AND (event_name = 'SPECIAL14')) THEN
param_to_pass3 := name_in('INV_SUM_FOLDER.QUICK_PO_NUMBER');
fnd_function.execute(function_name => 'CUXAPPOINFOR',
open_flag => 'Y',
session_flag => 'Y',
other_params => 'G_PO_NUMBER="' || param_to_pass3 ||
'"' ); END IF;

六。更新FORM上数据

IF ((form_name = 'APXINWKB') /*and (Block_Name = 'LINES')*/
AND (event_name = 'SPECIAL15')) THEN
BEGIN
--fnd_message.debug('XXXXXXXX:'||NAME_IN('INV_SUM_FOLDER.VENDOR_ID'));
V_INVOICE_ID := NAME_IN('INV_SUM_FOLDER.INVOICE_ID');
FOR REC_INVOICE IN rec_invoice_line(p_invoice_id => V_INVOICE_ID) LOOP open rec_invoice_lok(p_invoice_id => REC_INVOICE.INVOICE_ID); BEGIN
SELECT H.TERM_ID
INTO V_TERM_ID
FROM CUX_OMS_PO_HEADERS H,PO_HEADERS_ALL PH
WHERE H.PO_NUMBER = PH.SEGMENT1
AND H.PROCESS_STATUS = 'COMPLETE'
AND PH.PO_HEADER_ID = REC_INVOICE.PO_HEADER_ID;
EXCEPTION
WHEN OTHERS THEN
FND_MESSAGE.DEBUG('V_TERM_ID:'||SQLERRM);
END ; BEGIN
SELECT rt.transaction_date
into v_date
FROM rcv_transactions rt
WHERE rt.TRANSACTION_ID = REC_INVOICE.RCV_TRANSACTION_ID
AND ROWNUM = 1;
EXCEPTION
WHEN OTHERS THEN
FND_MESSAGE.DEBUG('v_date:'||SQLERRM);
END ;
SELECT V.NAME
INTO V_NAME
FROM ap_terms_vl V
WHERE V.TERM_ID = V_TERM_ID; COPY(V_NAME,'INV_SUM_FOLDER.TERMS_NAME');
COPY(V_TERM_ID,'INV_SUM_FOLDER.TERMS_ID');
COPY(v_date,'INV_SUM_FOLDER.TERMS_DATE');
/*UPDATE AP_INVOICES_ALL
SET TERMS_ID = V_TERM_ID,
TERMS_DATE = v_date
WHERE INVOICE_ID = REC_INVOICE.INVOICE_ID;*/ close rec_invoice_lok;
exit;
END LOOP;
old_level := NAME_IN('system.message_level');
COPY('5','system.message_level');
commit;
COPY(old_level,'system.message_level');
--query_block(p_block_name =>'INV_SUM_FOLDER');
EXCEPTION
WHEN OTHERS THEN
FND_MESSAGE.DEBUG('更新发票头时出现错误:'||sqlerrm);
END;
ELSE
RETURN;
END IF;

七.失效/生效 FORM项或者菜单

  IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-ITEM-INSTANCE' /*AND
block_name = 'INV_SUM_FOLDER'*/ THEN
IF name_in('INV_SUM_FOLDER.QUICK_PO_NUMBER') IS NULL THEN
set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_false);
ELSE
set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_true);
END IF;
--IF :SYSTEM.FORM_ATATUS = 'NEW' OR :SYSTEM.FORM_ATATUS = 'CHANGED' THEN
--V_STATUS := SYSTEM.BLOCK_ATATUS;
--FND_MESSAGE.DEBUG('SYSTEM.BLACK_ATATUS');
-- END IF;
V_INVOICE_ID := NAME_IN('INV_SUM_FOLDER.INVOICE_ID');
SELECT COUNT(*)
INTO V_COUNT
FROM AP_INVOICE_LINES_ALL L
WHERE l.invoice_id = V_INVOICE_ID
AND L.PO_LINE_ID IS NOT NULL
AND L.amount <> 0;
--FND_MESSAGE.DEBUG(V_INVOICE_ID||'---'||V_COUNT);
IF V_COUNT = 0 THEN
app_special.enable('SPECIAL15', property_OFF);
ELSE
app_special.enable('SPECIAL15', property_on);
END IF;
RETURN; END IF;



CUSTOM.PLL的使用的更多相关文章

  1. Form_通过Custom.pll新增菜单项(案例)

    2014-05-31 Created By BaoXinjian

  2. 修改CUSTOM.PLL文件调用客户化FORM&修改标准FORM

    修改custom.pll文件里 的过程event:参考例子如下,修改好后上传至$AU_TOP/resource 运行编译frmcmp_batch CUSTOM apps/apps module_typ ...

  3. Error : APP-FND-01926: The custom event WHEN-LOGON-CHANGED raised unhandled exception: ORA-06502: PL

    In this Document   _afrLoop=440418974213449&id=1508865.1&_afrWindowMode=0&_adf.ctrl-stat ...

  4. Form_通过Zoom客制化跳转页面功能(案例)

    2012-09-08 Created By BaoXinjian

  5. FORM调用FORM(标准调客户化&客户化调标准)并执行查询的实现研究

    一.先来个比较简单的,标准FORM调用客户话FORM并执行查询 1.修改CUSTOM.PLL,使用 fnd_function.execute实现打开和传递参数 参考例子如下 PROCEDURE eve ...

  6. EBS开发常用编译命令

    一.编译FORM 1.将脚本写成shell脚本 cd $AU_TOP/forms/ZHS export FORMS_PATH=.:$FORMS_PATH:$AU_TOP/forms/ZHS frmcm ...

  7. Deploying Customizations in Oracle E-Business Suite Release 12.2

    DeployingCustomizations in Oracle E-Business Suite Release 12.2 This documentdescribes how to deploy ...

  8. PS_Form个性化复杂需求新增Menu并调用Request(案例)

    2014-06-01 Created By BaoXinjian

  9. Oracle Form个性化案例(一)

    业务场景: 现有Form A,需通过A中的菜单栏中调用另一Form B,需将某值作为参数传入Form B中:

随机推荐

  1. [BZOJ 3332]旧试题

    Description 圣诞节将至.一年一度的难题又摆在wyx面前——如何给妹纸送礼物. wyx的后宫有n人,这n人之间有着复杂的关系网,相互认识的人有m对.wyx想要量化后宫之间的亲密度,于是准备给 ...

  2. bzoj1272 Gate Of Babylon

    [问题描述] [输入格式] [输出格式] [样例输入] 2 1 10 13 3 [样例输出] 12 [样例说明] [数据范围] 先容斥,考虑枚举哪些条件强制不满足,即直接选出b[i]+1件宝具 假设强 ...

  3. Go学习——go+channel实战(转)

    转载:http://studygolang.com/articles/2423 背景 在最近开发的项目中,后端需要编写许多提供HTTP接口的API,另外技术选型相对宽松,因此选择Golang + Be ...

  4. bzoj 3745: [Coci2015]Norma

    Description Solution 考虑分治: 我们要统计跨越 \(mid\) 的区间的贡献 分最大值和最小值所在位置进行讨论: 设左边枚举到了 \(i\),左边 \([i,mid]\) 的最大 ...

  5. bzoj 3673&3674: 可持久化并查集 by zky

    Description n个集合 m个操作 操作: 1 a b 合并a,b所在集合 2 k 回到第k次操作之后的状态(查询算作操作) 3 a b 询问a,b是否属于同一集合,是则输出1否则输出0 0& ...

  6. [Noi2013]向量内积

    来自FallDream的博客,未经允许,请勿转载,谢谢. 两个d 维向量A=[a1,a2,...,ad]与B=[b1,b2,...,bd]的内积为其相对应维度的权值的乘积和,即: $\sum_{i=1 ...

  7. WebStorm配置node.js调试

    最近因为工作关系,一直在做node.js的开发,学习了koa框架,orm框架sequelize,以及swagger文档的配置.但是,最近因为swagger文档使用了es6的修饰器那么个东西(在java ...

  8. Python中模块之random的功能介绍

    random的功能介绍 random模块的方法如下: betavariate 获取一个range(0,1)之前的随机浮点数 方法:random.betavariate(alpha,beta) 返回值: ...

  9. c语言第四次作业e

    ---恢复内容开始--- (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"Th ...

  10. Cisco 的基本配置实例之四----vlan的规划及配置(接入交换机)

    4.2 接入交换机的相关配置 ## 在此例中,我们联入的是一台接入交换机,此交换机的gi0/1口上联至核心交换机.也就意味着我们需要配置gi0/1为trunk口.具体的配置如下: D-2960-3(c ...