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

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

二.判断在哪里触发

举例

  1. IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-FORM-INSTANCE' THEN
  2. --SET_MENU_ITEM_PROPERTY('SPECIAL.MENU15',LABEL,'自动创建');
  3. --FND_MESSAGE.DEBUG('WHEN-NEW-FORM-INSTANCE');
  4. set_menu_item_property('FILE.SAVE', enabled, PROPERTY_ON);-- able save menu
  5. app_special2.instantiate('SPECIAL13', special_menu_name13, NULL, TRUE); --添加菜单API
  6. app_special2.instantiate('SPECIAL14', special_menu_name14, NULL, TRUE); --添加菜单API
  7. app_special2.instantiate('SPECIAL15', special_menu_name15, NULL, TRUE); --添加菜单API
  8.  
  9. RETURN;
  10. END IF;
  1. IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-ITEM-INSTANCE' /*AND
  2. block_name = 'INV_SUM_FOLDER'*/ THEN
  3. IF name_in('INV_SUM_FOLDER.QUICK_PO_NUMBER') IS NULL THEN
  4. set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_false);
  5. ELSE
  6. set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_true);
  7. END IF;
  8. --IF :SYSTEM.FORM_ATATUS = 'NEW' OR :SYSTEM.FORM_ATATUS = 'CHANGED' THEN
  9. --V_STATUS := SYSTEM.BLOCK_ATATUS;
  10. --FND_MESSAGE.DEBUG('SYSTEM.BLACK_ATATUS');
  11. -- END IF;
  12. V_INVOICE_ID := NAME_IN('INV_SUM_FOLDER.INVOICE_ID');
  13. SELECT COUNT(*)
  14. INTO V_COUNT
  15. FROM AP_INVOICE_LINES_ALL L
  16. WHERE l.invoice_id = V_INVOICE_ID
  17. AND L.PO_LINE_ID IS NOT NULL
  18. AND L.amount <> 0;
  19. --FND_MESSAGE.DEBUG(V_INVOICE_ID||'---'||V_COUNT);
  20. IF V_COUNT = 0 THEN
  21. app_special.enable('SPECIAL15', property_OFF);
  22. ELSE
  23. app_special.enable('SPECIAL15', property_on);
  24. END IF;
  25. RETURN;
  26.  
  27. END IF;

  1. IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-BLOCK-INSTANCE' THEN
  2.  
  3. --SET_MENU_ITEM_PROPERTY('SPECIAL.MENU15',LABEL,'自动创建');
  4. app_special.enable('SPECIAL13', property_on);
  5. app_special.enable('SPECIAL14', property_on);
  6. app_special.enable('SPECIAL15', property_on);
  7.  
  8. RETURN;
  9. END IF;

三.获取FORM里面ITEM的值

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

四.工具里面菜单开发

定义变量

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

菜单名称

  1. special_menu_name13 := '返利';
  2. special_menu_name14 := '订单';
  3. special_menu_name15 := '更新';

初始化菜单

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

启用菜单

  1. IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-BLOCK-INSTANCE' THEN
  2.  
  3. --SET_MENU_ITEM_PROPERTY('SPECIAL.MENU15',LABEL,'自动创建');
  4. app_special.enable('SPECIAL13', property_on);
  5. app_special.enable('SPECIAL14', property_on);
  6. app_special.enable('SPECIAL15', property_on);
  7.  
  8. RETURN;
  9. END IF;

触发菜单执行功能

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

五。调用客户化FORM

  1. IF ((form_name = 'APXINWKB') /*and (Block_Name = 'LINES')*/
  2. AND (event_name = 'SPECIAL13')) THEN
  3. IF name_in('System.Form_Status') = 'CHANGED' THEN
  4. old_level := NAME_IN('system.message_level');
  5. COPY('5','system.message_level');
  6. commit;
  7. COPY(old_level,'system.message_level');
  8. END IF;
  9. param_to_pass1 := name_in('INV_SUM_FOLDER.ORG_ID');
  10. param_to_pass2 := name_in('INV_SUM_FOLDER.VENDOR_ID');
  11. param_to_pass4 := name_in('INV_SUM_FOLDER.INVOICE_ID');
  12. param_to_pass5 := name_in('INV_SUM_FOLDER.ACCTS_PAY_CODE_COMBINATION_ID');
  13. param_to_pass6 := name_in('INV_SUM_FOLDER.GL_DATE');
  14. param_to_pass7 := name_in('INV_SUM_FOLDER.SET_OF_BOOKS_ID');
  15. --FND_MESSAGE.DEBUG('CUSTOM.PLL');
  16. --FND_MESSAGE.DEBUG('param_to_pass4 '||param_to_pass4);
  17. --FND_MESSAGE.DEBUG('param_to_pass5 '||param_to_pass5);
  18. --FND_MESSAGE.DEBUG('param_to_pass6 '||param_to_pass6);
  19. --FND_MESSAGE.DEBUG('param_to_pass7 '||param_to_pass7);
  20. V_PROPERTY := Get_Menu_Item_Property('FILE.SAVE',enabled);
  21. --FND_MESSAGE.DEBUG('V_PROPERTY '||V_PROPERTY);
  22. --set_menu_item_property('FILE.SAVE', enabled, PROPERTY_OFF);-- disable save menu
  23.  
  24. fnd_function.execute(function_name => 'CUXAPREBATE',
  25. open_flag => 'Y',
  26. session_flag => 'Y',
  27. other_params => 'G_ORG_ID="' || param_to_pass1 ||
  28. '" G_VENDOR_ID="' ||
  29. param_to_pass2 || /*'"'||*/
  30. '" G_INVOICE_ID="' ||
  31. param_to_pass4 ||
  32. '" G_CCID="' ||
  33. param_to_pass5 ||
  34. '" G_GL_DATE="' ||
  35. param_to_pass6 ||
  36. '" G_SET_OF_BOOKS_ID="' ||
  37. param_to_pass7 || '"');
  38.  
  39. ELSIF ((form_name = 'APXINWKB') /*and (Block_Name = 'LINES')*/
  40. AND (event_name = 'SPECIAL14')) THEN
  41. param_to_pass3 := name_in('INV_SUM_FOLDER.QUICK_PO_NUMBER');
  42. fnd_function.execute(function_name => 'CUXAPPOINFOR',
  43. open_flag => 'Y',
  44. session_flag => 'Y',
  45. other_params => 'G_PO_NUMBER="' || param_to_pass3 ||
  46. '"' ); END IF;

六。更新FORM上数据

  1. IF ((form_name = 'APXINWKB') /*and (Block_Name = 'LINES')*/
  2. AND (event_name = 'SPECIAL15')) THEN
  3. BEGIN
  4. --fnd_message.debug('XXXXXXXX:'||NAME_IN('INV_SUM_FOLDER.VENDOR_ID'));
  5. V_INVOICE_ID := NAME_IN('INV_SUM_FOLDER.INVOICE_ID');
  6. FOR REC_INVOICE IN rec_invoice_line(p_invoice_id => V_INVOICE_ID) LOOP
  7.  
  8. open rec_invoice_lok(p_invoice_id => REC_INVOICE.INVOICE_ID);
  9.  
  10. BEGIN
  11. SELECT H.TERM_ID
  12. INTO V_TERM_ID
  13. FROM CUX_OMS_PO_HEADERS H,PO_HEADERS_ALL PH
  14. WHERE H.PO_NUMBER = PH.SEGMENT1
  15. AND H.PROCESS_STATUS = 'COMPLETE'
  16. AND PH.PO_HEADER_ID = REC_INVOICE.PO_HEADER_ID;
  17. EXCEPTION
  18. WHEN OTHERS THEN
  19. FND_MESSAGE.DEBUG('V_TERM_ID:'||SQLERRM);
  20. END ;
  21.  
  22. BEGIN
  23. SELECT rt.transaction_date
  24. into v_date
  25. FROM rcv_transactions rt
  26. WHERE rt.TRANSACTION_ID = REC_INVOICE.RCV_TRANSACTION_ID
  27. AND ROWNUM = 1;
  28. EXCEPTION
  29. WHEN OTHERS THEN
  30. FND_MESSAGE.DEBUG('v_date:'||SQLERRM);
  31. END ;
  32. SELECT V.NAME
  33. INTO V_NAME
  34. FROM ap_terms_vl V
  35. WHERE V.TERM_ID = V_TERM_ID;
  36.  
  37. COPY(V_NAME,'INV_SUM_FOLDER.TERMS_NAME');
  38. COPY(V_TERM_ID,'INV_SUM_FOLDER.TERMS_ID');
  39. COPY(v_date,'INV_SUM_FOLDER.TERMS_DATE');
  40. /*UPDATE AP_INVOICES_ALL
  41. SET TERMS_ID = V_TERM_ID,
  42. TERMS_DATE = v_date
  43. WHERE INVOICE_ID = REC_INVOICE.INVOICE_ID;*/
  44.  
  45. close rec_invoice_lok;
  46. exit;
  47. END LOOP;
  48. old_level := NAME_IN('system.message_level');
  49. COPY('5','system.message_level');
  50. commit;
  51. COPY(old_level,'system.message_level');
  52. --query_block(p_block_name =>'INV_SUM_FOLDER');
  53. EXCEPTION
  54. WHEN OTHERS THEN
  55. FND_MESSAGE.DEBUG('更新发票头时出现错误:'||sqlerrm);
  56. END;
  57. ELSE
  58. RETURN;
  59. END IF;

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

  1. IF form_name = 'APXINWKB' AND event_name = 'WHEN-NEW-ITEM-INSTANCE' /*AND
  2. block_name = 'INV_SUM_FOLDER'*/ THEN
  3. IF name_in('INV_SUM_FOLDER.QUICK_PO_NUMBER') IS NULL THEN
  4. set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_false);
  5. ELSE
  6. set_item_property('INV_SUM_CONTROL.MATCH', enabled, property_true);
  7. END IF;
  8. --IF :SYSTEM.FORM_ATATUS = 'NEW' OR :SYSTEM.FORM_ATATUS = 'CHANGED' THEN
  9. --V_STATUS := SYSTEM.BLOCK_ATATUS;
  10. --FND_MESSAGE.DEBUG('SYSTEM.BLACK_ATATUS');
  11. -- END IF;
  12. V_INVOICE_ID := NAME_IN('INV_SUM_FOLDER.INVOICE_ID');
  13. SELECT COUNT(*)
  14. INTO V_COUNT
  15. FROM AP_INVOICE_LINES_ALL L
  16. WHERE l.invoice_id = V_INVOICE_ID
  17. AND L.PO_LINE_ID IS NOT NULL
  18. AND L.amount <> 0;
  19. --FND_MESSAGE.DEBUG(V_INVOICE_ID||'---'||V_COUNT);
  20. IF V_COUNT = 0 THEN
  21. app_special.enable('SPECIAL15', property_OFF);
  22. ELSE
  23. app_special.enable('SPECIAL15', property_on);
  24. END IF;
  25. RETURN;
  26.  
  27. 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. [SDOI 2009]HH去散步

    Description HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但 是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回. 又 ...

  2. [HNOI2004]树的计数

    题目描述 输入输出格式 输入格式: 输入文件第一行是一个正整数n,表示树有n个结点.第二行有n个数,第i个数表示di,即树的第i个结点的度数.其中1<=n<=150,输入数据保证满足条件的 ...

  3. [USACO14DEC]后卫马克Guard Mark

    题目描述 FJ将飞盘抛向身高为H(1 <= H <= 1,000,000,000)的Mark,但是Mark 被N(2 <= N <= 20)头牛包围.牛们可以叠成一个牛塔,如果 ...

  4. [HNOI2004]敲砖块

    题目描述 在一个凹槽中放置了 n 层砖块.最上面的一层有n 块砖,从上到下每层依次减少一块砖.每块砖 都有一个分值,敲掉这块砖就能得到相应的分值,如下图所示. 14 15 4 3 23 33 33 7 ...

  5. NOIP2015-D2T3运输计划

    题目背景 公元 2044 年,人类进入了宇宙纪元. 题目描述 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球. 小 P 掌管一家 ...

  6. SPOJ Coconuts 最大流 最小割

    A group of n castle guards are voting to determine whether African swallows can carry coconuts. Whil ...

  7. Windows下使用notepad++对文本进行行列转换

    行转列: Ctrl + F  选择替换 查找目标:填写指定的内容 替换为:\r\n 查找模式:正则表达式 单击替换或全部替换按钮 列转行: Ctrl + F  选择替换 查找目标:\r\n 替换为:不 ...

  8. 开发一个 app 有多难?

    171 个回答 默认排序​ 道衍天机 有事情的加微信1293190838找我 1,150 人赞同了该回答 ----------------------------------------------- ...

  9. Oracle VM VirtualBox虚拟机内Linux系统硬盘扩容步骤(CentOS6.5)

    1.首先获取要扩容的虚拟机的 UUID VBoxManage 改命令在C:\Program Files\Oracle\VirtualBox目录内,可先添加该目录到环境变量.C:\Users\yzkj- ...

  10. ignorable tips

    枚举 索引从0开始 sort 默认升序排列  Array.Sort(intSort); //复制数组 Array.Copy(intSort,intNew,3); intsort 源数组 intnew ...