自動處理【任務單工序移動介面表】程式

來源:互聯網
上載者:User

這個程式,根據輸入的參數可以自動處理WIP_MOVE_TXN_INTERFACE表。

雖然一般都是排一個“WIP 移動交易處理管理器”定期處理,但是個人認為這樣子處理還是有一定的滯後性。使用者想操作完畢立刻看到效果,但是老要等上幾分鐘。

所以專門開發了這個自動處理的程式。也是蠻實用。

邏輯也很簡單,就是自動認可一個“WIP 移動交易處理工作流程”處理對應GROUP_ID的資料。

代碼也共用出來:

   -----------------------------
   --處理介面表,可選處理方式
   -----------------------------
   PROCEDURE PROCESS_MOVE_TXN_INTERFACE(
      P_PROCESS_TYPE           VARCHAR2  ---處理方式,目前只有 提交請求 SUBMIT_REQUEST 希望以後有 立刻過賬 PROCESS_ONLINE
     ,P_GROUP_ID               NUMBER    ---處理的組ID
     ,x_REQUEST_ID           OUT NUMBER --輸出的請求ID
     ,x_retcode              OUT NUMBER  ---0:成功  非0:失敗( 或者:0:成功  1:警告   2:錯誤  ----注意:確定警告的時候要做什麼動作)
     ,x_errbuf               OUT VARCHAR2  ---具體的錯誤資訊
   )
      IS
       L_PROCESS_PHASE     NUMBER;                             --標識程式的進度
       ---
       L_REQUEST_ID        NUMBER;
       ---
   BEGIN
      x_retcode := 0;
      x_errbuf := Null;

      L_PROCESS_PHASE := 0;

      ---首先的第一步是:檢查不可以為空白的參數
      IF P_PROCESS_TYPE IS NULL OR P_GROUP_ID IS NULL
      THEN
         x_errbuf := '調用PROCESS_MOVE_TXN_INTERFACE的時候,必要的參數不存在,請檢查參數!';
         x_retcode := 2;
         RETURN;
      END IF;

      L_PROCESS_PHASE := 1;

     ------------Start------------
      IF P_PROCESS_TYPE = 'SUBMIT_REQUEST' THEN
        ---自動認可過賬的請求
        ---WIP 移動交易處理工作流程
        -----WIP Move Transaction Worker
        L_REQUEST_ID :=
        FND_REQUEST.SUBMIT_REQUEST( 'WIP', -- application
                                    'WICTWS', -- program
                                    NULL,
                                    NULL, -- start_time (optional)
                                    FALSE, -- sub_request
                                    to_char(P_GROUP_ID), -- Group id to process
                                    '1', -- 貌似都給1,不知道什麼情況下給2,需要驗證。
                                    '2400', -- 貌似都給2400
                                    '1', --  貌似都給1
                                    chr(0)
                                    );
        L_PROCESS_PHASE := 2;
        dbms_output.PUT_LINE('自動產生的請求ID:'||L_REQUEST_ID);
        IF L_REQUEST_ID = 0 THEN
          x_errbuf := '自動認可請求失敗!';
          x_retcode := 2;
          RETURN;
        ELSE
          x_errbuf := x_errbuf||'自動認可請求成功!請求ID:'||L_REQUEST_ID;
        END IF;
        x_REQUEST_ID := L_REQUEST_ID;
        L_PROCESS_PHASE := 3;
      ELSIF P_PROCESS_TYPE = 'PROCESS_ONLINE' THEN
         x_errbuf := '目前程式不支援處理方式:('||P_PROCESS_TYPE||')!請檢查參數!';
         x_retcode := 2;
         RETURN;
        L_PROCESS_PHASE := 5;
      ELSE
         x_errbuf := '參數P_PROCESS_TYPE('||P_PROCESS_TYPE||')無效,請檢查參數!';
         x_retcode := 2;
         RETURN;
      END IF;
      ------------End--------------

      L_PROCESS_PHASE := 6;

   EXCEPTION
      WHEN OTHERS
      THEN
         x_retcode := 2;
         x_errbuf :=
               'P_PROCESS_TYPE:'
            || P_PROCESS_TYPE
            || ' P_GROUP_ID:'
            || P_GROUP_ID
            || ' 產生移動交易處理的時候有異常錯誤!'
            || CHR(10)
            || '錯誤資訊:'
            || TO_CHAR(SQLCODE)
            || '-'
            || SQLERRM
            || CHR(10)
            || '程式進度:'
            || L_PROCESS_PHASE;
         ----可以適當編寫:如果錯誤,另外還需要處理的SQL
         ---因為如果前面有做UPDATE/INSERT/DELETE動作,雖然是跳到異常,但是,這動作不會自動復原的。
   END;

 

--------------------------測試部分:

DECLARE
   L_RETCODE      NUMBER;
   L_ERRBUF       VARCHAR2(4000);
   ---
   L_GROUP_ID      NUMBER;
   L_REQUEST_ID    NUMBER;
   ---
BEGIN
   fnd_client_info.set_org_context(104);
   fnd_global.APPS_Initialize( user_id=>5954, resp_id=>52054, resp_appl_id =>20003);
   L_GROUP_ID := 9999;
  ---立刻過賬
  XYG_PUB_WIP_PKG.PROCESS_MOVE_TXN_INTERFACE('SUBMIT_REQUEST',L_GROUP_ID,L_REQUEST_ID,L_RETCODE,L_ERRBUF);
  dbms_output.PUT_LINE(L_RETCODE || '-' || L_ERRBUF);
  IF L_RETCODE = 0 THEN
    dbms_output.PUT_LINE('成功產生請求ID:' || L_REQUEST_ID);
    COMMIT;
  ELSE
    dbms_output.PUT_LINE('過賬有異常問題發生!'||L_ERRBUF);
    ROLLBACK;
  END IF;
END;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.