取消采购订单头时,只有在行没有完全被接收的情况才可以,不然会报错说完全接收的行不能取消
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通信输出,所以如果大批量的取消防止程序过多导致系统宕机,最好是一个跑完之后再取消另一个
可参考更改需求日期的代码