zoukankan      html  css  js  c++  java
  • 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;




    
  • 相关阅读:
    钢铁雄心4陆战攻略
    装甲军团1跳出问题
    Git:解决报错:fatal: The remote end hung up unexpectedly
    保存网页到zotero研究
    面向服务软件工程
    华为matebook x pro监听耳机电流声
    战争游戏红龙修改手册
    manjaro20安装teamviewer出现sudo teamviewer –daemon start无响应
    manjaro20WPS缺少字体
    manjora20不小心卸载,重新安装terminal,软件商店/软件中心linux类似
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299428.html
Copyright © 2011-2022 走看看