EBS 个性化:Custom.pll修改标准Form的LOV

例:修改采购订单界面的供应商LOV。

--供应商LOV对应的记录组原始的SQL: 
select distinct
       pov.vendor_name, 
       pov.segment1, 
       decode(pov.hold_flag,'Y','*',null), 
       pov.hold_flag, 
       pov.vendor_id, 
       pov.num_1099, 
       pov.vat_registration_num 
from po_vendors pov,
     po_supplier_sites_val_v pssv
WHERE pov.enabled_flag = 'Y' 
  and sysdate between nvl(pov.start_date_active, sysdate-1) and nvl(pov.end_date_active, sysdate+1) 
  and pov.vendor_id = pssv.vendor_id
  and nvl(pssv.rfq_only_site_flag, 'N') ='N' 
  and (:po_headers.approved_date is null or 
      (:po_headers.approved_date is not null and 
      (pssv.invoice_currency_code = :po_headers.currency_code or 
            pssv.invoice_currency_code is null))) 
order by upper(pov.vendor_name)

CUSTOM.pll客制如下:

package body custom IS

  PROCEDURE set_po_vendor_lov is
    l_query_string           varchar2(2000);
    l_supplier_group_id      recordgroup;
  begin 
    if name_in('system.cursor_item') = 'PO_HEADERS.VENDOR_NAME' then
        --原始SQL中'替换为' || '''' || '拼接字符串
        --:po_headers.approved_date、:po_headers.currency_code放到字符串中不能成功创建Record GROUP,
        --也没有找到如何传参,所有删除了相关SQL条件语句
        l_query_string := 'select distinct
                           pov.vendor_name, 
                           pov.segment1, 
                           decode(pov.hold_flag,' || '''' || 'Y' || '''' || ',' || '''' || '*' || '''' || ',null), 
                           pov.hold_flag, 
                           pov.vendor_id, 
                           pov.num_1099, 
                           pov.vat_registration_num 
                    from po_vendors pov,
                         po_supplier_sites_val_v pssv
                    WHERE pov.enabled_flag = ' || '''' || 'Y' || '''' || ' 
                      and sysdate between nvl(pov.start_date_active, sysdate-1) and nvl(pov.end_date_active, sysdate+1) 
                      and pov.vendor_id = pssv.vendor_id
                      and nvl(pssv.rfq_only_site_flag, ' || '''' || 'N' || '''' || ') =' || '''' || 'N' || '''' || '  
                      and pov.vendor_name like ' || '''' || '東莞%' || '''' || '
                    order by upper(pov.vendor_name)' ;
          fnd_message.debug('l_query_string: ' || l_query_string);    --test only      
        
         --record group创建一次后,第二次如果再次创建就会报错,所以先判断record group是否已存在,有则先删除    
        if not id_null(find_group('CUX_SUPPLIER_NAME')) then 
            delete_group('CUX_SUPPLIER_NAME'); 
        end if; 
        
        l_supplier_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;


  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-FORM-INSTANCE' THEN
        --判断当前Item是否等于VENDOR_NAME,某一些 Form会出现no data found的错误(例如应用开发员的功能form),
        --这是因为该Form在打开的时候system.cursor_item为空,所以要把item的判断写在set_po_vendor_lov
        if form_name = 'POXPOEPO' and  block_name = 'PO_HEADERS' /* and item_name = 'PO_HEADERS.VENDOR_NAME'*/ then
            set_po_vendor_lov;
        end if;
    end if;
  end event; 
  
end custom;

编译CUSTOM.pll并测试客制效果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值