REM Refer to metalink Doc ID 1406047.1 for more details
REM Note: This API supports only set of attributes at
REM line/shipment/distribution level as listed above with
REM Approval option.
REM Any other PO attributes in Type PO_CHANGES_REC_TYPE then listed REM above are reserved for Internal References/Usage and not
REM supported via this API.REM 1. PO_CHANGES_REC_TYPE:
REM This object represents header of PO. It can be created by supplying header_id of a PO.
REM e.g.
REM l_header PO_CHANGES_REC_TYPE;
REM l_header.create_object(p_po-header_id => <po_header_id>, p_po_release_id => <release_id>);
REM In case of a PO, release_id should be supplied and release_id will be null. Release_id is used while creating object of release header.
REM Optional parameters to create object are:
REM 1. p_line_changes (PO_LINES_REC_TYPE)
REM 2. p_shipment_changes(PO_SHIPMENTS_REC_TYPE)
REM 3. p_distribution_changes (PO_DISTRIBUTIONS_REC_TYPE)
REM These parameters are the objects of line, shipment and distribution respectively.
REM 2. PO_LINES_REC_TYPE:
REM This object represents line in a PO. It can be created using line_id of a line.
REM e.g.
REM l_line PO_LINES_REC_TYPE;
REM l_line.create_object(p_po_line_id => <line_id>);
REM create_object method takes following optional parameters which represent change in line.
REM 1. Unit price
REM 2. Vendor product number
REM 3. Quantity
REM 4. Start Date
REM 5. Expiration date
REM 6. Amount
REM 7. Unit of measure
REM 8. Secondary Quantity
REM 9. Secondary UOM
REM 3. PO_SHIPMENTS_REC_TYPE:
REM This object represents shipment in a PO. It can be created using line_location_id of a line.
REM e.g.
REM l_ship PO_SHIPMENTS_REC_TYPE;
REM l_ship.create_object(p_po_line_location_id => <line_location_id>);
REM create_object method takes following optional parameters which represent change in line.
REM 1. Quantity
REM 2. promised date
REM 3. Price override
REM 4. Parent line location id -- To copy data from other existing shipment.
REM 5. Need by date
REM 6. Ship to location id
REM 7. Sales order update date
REM 8. Amount
REM 9. Unit of measure
REM 10. Secondary quantity
REM 11. Secondary UOM
REM 4. PO_DISTRIBUTIONS_REC_TYPE:
REM This object represents distribution in a PO. It can be created using distribution_id of a line.
REM e.g.
REM l_dist PO_DISTRIBUTIONS_REC_TYPE;
REM l_dist.create_object(p_po_distribution_id => <distribution_id>);
REM create_object method takes following optional parameters which represent change in line.
REM 1. Quantity ordered
REM 2. Parent distribution id
REM 3. Amount ordered
REM 4. Unit of measure
REM Simple Update
DECLARE
l_result NUMBER;
l_progress NUMBER;
l_errors po_api_errors_rec_type;
l_chg po_changes_rec_type;
l_shipment_changes po_shipments_rec_type;
l_return_status VARCHAR2(30);
BEGIN
--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 => &header_id
, p_po_release_id => &release_id);
-- Add a Line Changes to the Change Object
l_chg.line_changes.add_change(
p_po_line_id => &po_line_id
, p_quantity => &value);
-- Add Shipment Changes to the Change Object
l_chg.shipment_changes.add_change(
p_po_line_location_id => &line_location_id
, p_quantity => &value);
-- Add Distribution Level Changes
l_chg.distribution_changes.add_change(
p_po_distribution_id => &po_distribution_id
, p_quantity_ordered => &value);
-- 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_fals
-- 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.COUNT
LOOP
DBMS_OUTPUT.put_line( ' Error is '
|| l_errors.MESSAGE_TEXT( i)
|| ' - name'
|| l_errors.message_name( i));
END LOOP;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'error :'
|| SQLERRM);
END;
REM Update and Approve
DECLARE
l_result NUMBER;
l_progress NUMBER;
l_errors po_api_errors_rec_type;
l_chg po_changes_rec_type;
l_shipment_changes po_shipments_rec_type;
l_return_status VARCHAR2(30);
BEGIN
fnd_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 => &header_id
, p_po_release_id => &release_id);
-- Add a Line Changes to the Change Object
l_chg.line_changes.add_change(
p_po_line_id => &po_line_id
, p_quantity => &value);
-- Add Shipment Changes to the Change Object
l_chg.shipment_changes.add_change(
p_po_line_location_id => &line_location_id
, p_quantity => &value);
-- Add Distribution Level Changes
l_chg.distribution_changes.add_change(
p_po_distribution_id => &po_distribution_id
, p_quantity_ordered => &value);
-- 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.COUNT
LOOP
DBMS_OUTPUT.put_line( ' Error is '
|| l_errors.MESSAGE_TEXT( i)
|| ' - name'
|| l_errors.message_name( i));
END LOOP;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'error :'
|| SQLERRM);
END;
REM Note: This API supports only set of attributes at
REM line/shipment/distribution level as listed above with
REM Approval option.
REM Any other PO attributes in Type PO_CHANGES_REC_TYPE then listed REM above are reserved for Internal References/Usage and not
REM supported via this API.REM 1. PO_CHANGES_REC_TYPE:
REM This object represents header of PO. It can be created by supplying header_id of a PO.
REM e.g.
REM l_header PO_CHANGES_REC_TYPE;
REM l_header.create_object(p_po-header_id => <po_header_id>, p_po_release_id => <release_id>);
REM In case of a PO, release_id should be supplied and release_id will be null. Release_id is used while creating object of release header.
REM Optional parameters to create object are:
REM 1. p_line_changes (PO_LINES_REC_TYPE)
REM 2. p_shipment_changes(PO_SHIPMENTS_REC_TYPE)
REM 3. p_distribution_changes (PO_DISTRIBUTIONS_REC_TYPE)
REM These parameters are the objects of line, shipment and distribution respectively.
REM 2. PO_LINES_REC_TYPE:
REM This object represents line in a PO. It can be created using line_id of a line.
REM e.g.
REM l_line PO_LINES_REC_TYPE;
REM l_line.create_object(p_po_line_id => <line_id>);
REM create_object method takes following optional parameters which represent change in line.
REM 1. Unit price
REM 2. Vendor product number
REM 3. Quantity
REM 4. Start Date
REM 5. Expiration date
REM 6. Amount
REM 7. Unit of measure
REM 8. Secondary Quantity
REM 9. Secondary UOM
REM 3. PO_SHIPMENTS_REC_TYPE:
REM This object represents shipment in a PO. It can be created using line_location_id of a line.
REM e.g.
REM l_ship PO_SHIPMENTS_REC_TYPE;
REM l_ship.create_object(p_po_line_location_id => <line_location_id>);
REM create_object method takes following optional parameters which represent change in line.
REM 1. Quantity
REM 2. promised date
REM 3. Price override
REM 4. Parent line location id -- To copy data from other existing shipment.
REM 5. Need by date
REM 6. Ship to location id
REM 7. Sales order update date
REM 8. Amount
REM 9. Unit of measure
REM 10. Secondary quantity
REM 11. Secondary UOM
REM 4. PO_DISTRIBUTIONS_REC_TYPE:
REM This object represents distribution in a PO. It can be created using distribution_id of a line.
REM e.g.
REM l_dist PO_DISTRIBUTIONS_REC_TYPE;
REM l_dist.create_object(p_po_distribution_id => <distribution_id>);
REM create_object method takes following optional parameters which represent change in line.
REM 1. Quantity ordered
REM 2. Parent distribution id
REM 3. Amount ordered
REM 4. Unit of measure
REM Simple Update
DECLARE
l_result NUMBER;
l_progress NUMBER;
l_errors po_api_errors_rec_type;
l_chg po_changes_rec_type;
l_shipment_changes po_shipments_rec_type;
l_return_status VARCHAR2(30);
BEGIN
--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 => &header_id
, p_po_release_id => &release_id);
-- Add a Line Changes to the Change Object
l_chg.line_changes.add_change(
p_po_line_id => &po_line_id
, p_quantity => &value);
-- Add Shipment Changes to the Change Object
l_chg.shipment_changes.add_change(
p_po_line_location_id => &line_location_id
, p_quantity => &value);
-- Add Distribution Level Changes
l_chg.distribution_changes.add_change(
p_po_distribution_id => &po_distribution_id
, p_quantity_ordered => &value);
-- 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_fals
-- 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.COUNT
LOOP
DBMS_OUTPUT.put_line( ' Error is '
|| l_errors.MESSAGE_TEXT( i)
|| ' - name'
|| l_errors.message_name( i));
END LOOP;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'error :'
|| SQLERRM);
END;
REM Update and Approve
DECLARE
l_result NUMBER;
l_progress NUMBER;
l_errors po_api_errors_rec_type;
l_chg po_changes_rec_type;
l_shipment_changes po_shipments_rec_type;
l_return_status VARCHAR2(30);
BEGIN
fnd_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 => &header_id
, p_po_release_id => &release_id);
-- Add a Line Changes to the Change Object
l_chg.line_changes.add_change(
p_po_line_id => &po_line_id
, p_quantity => &value);
-- Add Shipment Changes to the Change Object
l_chg.shipment_changes.add_change(
p_po_line_location_id => &line_location_id
, p_quantity => &value);
-- Add Distribution Level Changes
l_chg.distribution_changes.add_change(
p_po_distribution_id => &po_distribution_id
, p_quantity_ordered => &value);
-- 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.COUNT
LOOP
DBMS_OUTPUT.put_line( ' Error is '
|| l_errors.MESSAGE_TEXT( i)
|| ' - name'
|| l_errors.message_name( i));
END LOOP;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line( 'error :'
|| SQLERRM);
END;
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.