CUSTOM.PLL的使用
在开发中对系统标准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的使用的更多相关文章
- Form_通过Custom.pll新增菜单项(案例)
2014-05-31 Created By BaoXinjian
- 修改CUSTOM.PLL文件调用客户化FORM&修改标准FORM
修改custom.pll文件里 的过程event:参考例子如下,修改好后上传至$AU_TOP/resource 运行编译frmcmp_batch CUSTOM apps/apps module_typ ...
- 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 ...
- Form_通过Zoom客制化跳转页面功能(案例)
2012-09-08 Created By BaoXinjian
- FORM调用FORM(标准调客户化&客户化调标准)并执行查询的实现研究
一.先来个比较简单的,标准FORM调用客户话FORM并执行查询 1.修改CUSTOM.PLL,使用 fnd_function.execute实现打开和传递参数 参考例子如下 PROCEDURE eve ...
- EBS开发常用编译命令
一.编译FORM 1.将脚本写成shell脚本 cd $AU_TOP/forms/ZHS export FORMS_PATH=.:$FORMS_PATH:$AU_TOP/forms/ZHS frmcm ...
- Deploying Customizations in Oracle E-Business Suite Release 12.2
DeployingCustomizations in Oracle E-Business Suite Release 12.2 This documentdescribes how to deploy ...
- PS_Form个性化复杂需求新增Menu并调用Request(案例)
2014-06-01 Created By BaoXinjian
- Oracle Form个性化案例(一)
业务场景: 现有Form A,需通过A中的菜单栏中调用另一Form B,需将某值作为参数传入Form B中:
随机推荐
- [SDOI 2009]HH去散步
Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...
- [HNOI2004]树的计数
题目描述 输入输出格式 输入格式: 输入文件第一行是一个正整数n,表示树有n个结点.第二行有n个数,第i个数表示di,即树的第i个结点的度数.其中1<=n<=150,输入数据保证满足条件的 ...
- [USACO14DEC]后卫马克Guard Mark
题目描述 FJ将飞盘抛向身高为H(1 <= H <= 1,000,000,000)的Mark,但是Mark 被N(2 <= N <= 20)头牛包围.牛们可以叠成一个牛塔,如果 ...
- [HNOI2004]敲砖块
题目描述 在一个凹槽中放置了 n 层砖块.最上面的一层有n 块砖,从上到下每层依次减少一块砖.每块砖 都有一个分值,敲掉这块砖就能得到相应的分值,如下图所示. 14 15 4 3 23 33 33 7 ...
- NOIP2015-D2T3运输计划
题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球. 小 P 掌管一家 ...
- SPOJ Coconuts 最大流 最小割
A group of n castle guards are voting to determine whether African swallows can carry coconuts. Whil ...
- Windows下使用notepad++对文本进行行列转换
行转列: Ctrl + F 选择替换 查找目标:填写指定的内容 替换为:\r\n 查找模式:正则表达式 单击替换或全部替换按钮 列转行: Ctrl + F 选择替换 查找目标:\r\n 替换为:不 ...
- 开发一个 app 有多难?
171 个回答 默认排序 道衍天机 有事情的加微信1293190838找我 1,150 人赞同了该回答 ----------------------------------------------- ...
- Oracle VM VirtualBox虚拟机内Linux系统硬盘扩容步骤(CentOS6.5)
1.首先获取要扩容的虚拟机的 UUID VBoxManage 改命令在C:\Program Files\Oracle\VirtualBox目录内,可先添加该目录到环境变量.C:\Users\yzkj- ...
- ignorable tips
枚举 索引从0开始 sort 默认升序排列 Array.Sort(intSort); //复制数组 Array.Copy(intSort,intNew,3); intsort 源数组 intnew ...