2013年7月30日 星期二

Oracle ERP R12. 如何透過Personalize功能呼叫另一form來回傳值. Get another form's result value (user personalize) .

狀況假設 :
A-Form(Rcv_transaction) 要呼叫另一客制form (B-Form),B-Form運算後產生一結果回轉A-Form

Step 1. 建立一function用來取回B-Formresult
:
create or replace function HPX_WEN_TEST_F(I_KEY VARCHAR2) return varchar2 is
  T_Result VARCHAR2(100);
  T_EXIT VARCHAR2(1) := 'N';
  T_EXIT_TIME DATE := SYSDATE+5/(24*60);
begin 
  WHILE T_EXIT = 'N' LOOP
    SELECT DECODE(COUNT(*),
                  0,'N',
                  'Y'),
           MAX(HC.VALUE_2)
      INTO T_EXIT,
           T_RESULT
      FROM HPX_CONFIG_T HC 假設該tableresult
     WHERE HC.KEY_ID = 'TEST'
       AND HC.VALUE_1 = I_KEY;  --Key,用來確認所抓取的資料無誤
    --
    IF T_EXIT_TIME <= SYSDATE THEN
      T_EXIT := 'Y'; --逾時離開以避免無窮迴圈
    END IF;
  END LOOP;
 
  return(T_Result);
end HPX_WEN_TEST_F;

Step 2. A-FormWHEN-NEW-FORM-INSTANCE 加入一LOCAL VARIABLE  KEY的宣告,
MENU BUTTON的宣告.
:





Step 3. 設定上述MENU BUTTON的功能行為.
:


埋入Debug用的訊息

將游標固定至等定ITEM
<重要>該步驟是為了A-Form重新取得控制取時只會觸發 WHEN-NEW-ITEM-INSTANCE 所以要知道是那一ITEM會被觸發


呼叫B-Form
注意 : 這裡的HPXINVF004是隨便設的,並不會真的寫入Result table ,這裡只是要模擬說明而已,假設會寫入Step 1Result table


Step 4. 設定A-Form重新取得控制權後的行為動作.並由判斷KEY是否有值來確認是否要進入該程序
注意 : B-Form返回A-Form時只會觸發 WHEN-NEW-ITEM-INSTANCE , 故上步驟會先GO_ITEM.


呼叫Step 1. 的Function來取回Result Table的值


清除Key,以避免誤動作


沒有留言:

張貼留言