1. 程式人生 > >使用API取消採購訂單,行,發運

使用API取消採購訂單,行,發運

取消採購訂單頭時,只有在行沒有完全被接收的情況才可以,不然會報錯說完全接收的行不能取消

declare
  v_resp_id number;--36954  83423  82436
  X_RETURN_STATUS VARCHAR2(10);
begin
   select decode(85,85,50643,86,50647,50643) into v_resp_id from dual;
       fnd_global.apps_initialize(user_id      => 1333,
                             resp_id      => v_resp_id,
                             resp_appl_id => 201);
       MO_GLOBAL.init('SQLAP');
       
   PO_DOCUMENT_CONTROL_PUB.CONTROL_DOCUMENT(P_API_VERSION      => 1.0
                                            , --版本資訊,目前為1.0
                                             P_INIT_MSG_LIST    => 'T'
                                            ,P_COMMIT           => 'T'
                                            ,X_RETURN_STATUS    => X_RETURN_STATUS
                                            , -- 返回介面執行結果,S為成功,E為錯誤,U為未知錯誤
                                             P_DOC_TYPE         => 'PO'
                                            ,P_DOC_SUBTYPE      => 'STANDARD'
                                            , -- 取消標準PO
                                             P_DOC_ID           => 36954
                                            ,P_DOC_NUM          => NULL
                                            , -- Po_header_id和單據編碼任選一個引數即可
                                             P_RELEASE_ID       => NULL
                                            ,P_RELEASE_NUM      => NULL
                                            ,P_DOC_LINE_ID      => 83424
                                            ,P_DOC_LINE_NUM     => NULL
                                            ,P_DOC_LINE_LOC_ID  => null  --po_line_location_id
                                            ,P_DOC_SHIPMENT_NUM => NULL
                                            ,P_ACTION           => 'CANCEL'
                                            , --固定值
                                             P_ACTION_DATE      => NULL
                                            ,P_CANCEL_REASON    => NULL
                                            , --Cancel原因
                                             P_CANCEL_REQS_FLAG => NULL
                                            ,P_PRINT_FLAG       => NULL
                                            ,P_NOTE_TO_VENDOR   => NULL
                                            ,P_USE_GLDATE       => 'N');
 
    COMMIT;    
    dbms_output.put_line(X_RETURN_STATUS);--取消po也會有po通訊輸出
       
end ;

注意:因為沒取消一次都會有PO通訊輸出,所以如果大批量的取消防止程式過多導致系統宕機,最好是一個跑完之後再取消另一個

可參考更改需求日期的程式碼