DECLARE
-- Local variables here
i INTEGER;
l_return_status VARCHAR2(10);
p_retcode VARCHAR2(2000);
p_errbuf VARCHAR2(2000);
v_x_return_status VARCHAR2(250);
v_x_exception_msg VARCHAR2(250);
BEGIN
-- Test statements here
/* FOR rec IN (SELECT pha.org_id,
pha.segment1,
pha.po_header_id erp_header_id
FROM po_headers_all pha
WHERE 1 = 1
AND pha.org_id = 85
AND pha.segment1 LIKE '20903'
AND pha.created_by = 1573
AND pha.cancel_flag <> 'Y')
LOOP*/
/* apps.fnd_global.apps_initialize(user_id => 1150, -- V_USER_ID,
resp_id => 50758, --P_RESP_ID, 50757 50737 50758
resp_appl_id => 201);
apps.mo_global.init('PO');*/
begin
fnd_global.apps_initialize(user_id => 8162,
resp_id => 50692,
resp_appl_id => 20003);
mo_global.init('M');
end;
--DBMS_OUTPUT.PUT_LINE(P_USER_ID || '*' || V_USER_ID || '*' ||P_RESP_ID);
dbms_output.put_line('------' || '213'/*rec.segment1 */|| '------');
dbms_output.put_line(l_return_status);
apps.po_document_control_pub.control_document(p_api_version => 1.0, -- p_api_version
p_init_msg_list => apps.fnd_api.g_true, -- p_init_msg_list
p_commit => apps.fnd_api.g_true, -- p_commit
x_return_status => l_return_status, -- x_return_status
p_doc_type => 'PO', -- p_doc_type
p_doc_subtype => 'STANDARD', -- p_doc_subtype
p_doc_id => 529432,--NULL, -- p_doc_id
p_doc_num => '213',--rec.segment1, -- p_doc_num
p_release_id => NULL, -- p_release_id
p_release_num => NULL, -- p_release_num
p_doc_line_id => 885980,--NULL, -- p_doc_line_id
p_doc_line_num => NULL, --REC.LINE_NUM, -- p_doc_line_num
p_doc_line_loc_id => NULL, --rec.Line_Location_Id, -- p_doc_line_loc_id
p_doc_shipment_num => NULL, -- p_doc_shipment_num
p_action => 'CANCEL', -- p_action
p_action_date => SYSDATE, -- p_action_date
p_cancel_reason => '测试取消采购订单', -- p_cancel_reason
p_cancel_reqs_flag => 'N', -- p_cancel_reqs_flag
p_print_flag => NULL, -- p_print_flag
p_note_to_vendor => NULL,
p_use_gldate => NULL, -- <ENCUMBRANCE FPJ>
p_org_id => 295/*rec.org_id*/); -- p_note_to_vendor
-- Get any messages returned by the Cancel API
COMMIT;
FOR i IN 1 .. apps.fnd_msg_pub.count_msg
LOOP
dbms_output.put_line(apps.fnd_msg_pub.get(p_msg_index => i,
p_encoded => 'F'));
p_errbuf := apps.fnd_msg_pub.get(p_msg_index => i,
p_encoded => 'F');
END LOOP;
COMMIT;
IF l_return_status = 'S' THEN
BEGIN--重新审批采购订单
apps.po_document_action_pvt.do_approve(p_document_id => 529432,--rec.erp_header_id, --PO_HEADER_ID
p_document_type => 'PO',
p_document_subtype => 'STANDARD',
p_note => NULL,
p_approval_path_id => NULL,
x_return_status => v_x_return_status,
x_exception_msg => v_x_exception_msg);
dbms_output.put_line('V_X_RETURN_STATUS:' || v_x_return_status);
dbms_output.put_line('V_X_EXCEPTION_MSG:' || v_x_exception_msg);
IF v_x_return_status = 'S' THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
END;
dbms_output.put_line('Y');
dbms_output.put_line('取消成功');
COMMIT;
ELSE
dbms_output.put_line('E');
dbms_output.put_line('取消失败:' || p_errbuf);
END IF;
COMMIT;
----update po_header
----更新头行的审批状态
-- END LOOP;
END;