使用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通訊輸出,所以如果大批量的取消防止程式過多導致系統宕機,最好是一個跑完之後再取消另一個
可參考更改需求日期的程式碼