DECLAREl_resultNUMBER;
l_progressNUMBER;
l_errors PO_API_ERRORS_REC_TYPE;
l_chg PO_CHANGES_REC_TYPE;
l_shipment_changes PO_SHIPMENTS_REC_TYPE;
l_return_statusVARCHAR2(30);BEGINfnd_global.apps_initialize(user_id => &user_id,--This function execution is required before launching the approval work flow.
resp_id => &responsibility_id,
resp_appl_id=> &resp_application_id);--to set org context in a R12 env
mo_global.set_policy_context (‘S‘, &org_id);--Create an Object for Changes
--po_changes_rec_type constructor takes either po_header_id OR po_release_id to construct the object.
--In case of purchase order pass po_release_id as NULL.
l_chg := po_changes_rec_type.Create_object(p_po_header_id => , p_po_release_id => );--Add a Line Changes to the Change Object
l_chg.line_changes.add_change(p_po_line_id => , p_quantity => );--Add Shipment Changes to the Change Object
l_chg.shipment_changes.add_change(p_po_line_location_id => , p_quantity => );--Add Distribution Level Changes
l_chg.distribution_changes.add_change(p_po_distribution_id => , p_quantity_ordered => );--Now call the change api to execute the above changes
PO_DOCUMENT_UPDATE_GRP.UPDATE_DOCUMENT(p_api_version => 1.0,--pass this as 1.0
p_init_msg_list => fnd_api.G_TRUE,--pass this as TRUE
x_return_status => l_return_status,--returns the result of execution
p_changes => l_chg,--changes obj. contains all changes intended to be made on document
p_run_submission_checks => fnd_api.G_FALSE,--set to TRUE if want to perform submission check
p_launch_approvals_flag => fnd_api.G_TRUE,--set to TRUE if want to launch approval work flow after making the changes
p_buyer_id => NULL,--buyer id
p_update_source => NULL, --name of a source who is calling this API. In case of manual call can be passed as NULL
p_override_date => NULL,
x_api_errors=> l_errors,--list of errors if any occurred in execution
p_mass_update_releases => NULL);IF l_errors IS NOT NULL THEN
FOR i IN 1.. l_errors.message_text.COUNTLOOP
dbms_output.Put_line(‘Error is‘ || l_errors.Message_text(i) || ‘- name‘ ||l_errors.Message_name(i));ENDLOOP;END IF;COMMIT;
EXCEPTIONWHEN OTHERS THENdbms_output.Put_line(‘error :‘ ||sqlerrm);END;