Sunday, June 24, 2012

Oracle Apps Change PO API Training


Following are the steps required in order to use the Change PO API to update a Standard Purchase order?
Login to the application

Navigate to the Purchase Order form and create a PO with a single line with quantity = 10, price = 1 and promised date = 31-MAR-2012 (use any date in the future as long as it is in an open period).


The first run of the API will demonstrate updating the Quantity of Line 1 of the PO to 25. Submit the cancel API using sqlplus as follows:

After the API completes, Re query the PO screen to check the changes


DECLARE
   l_result       NUMBER;
   l_api_errors   PO_API_ERRORS_REC_TYPE;
BEGIN
   -- This needs to be changed according to your environment setup.
   fnd_global.apps_initialize (1318, 50578, 201);
   -- mo_global.init('PO'); -- need for R12
   l_result :=
      PO_CHANGE_API1_S.update_po (x_po_number             => 23998,
                                  x_release_number        => NULL,
                                  x_revision_number       => 0,
                                  x_line_number           => 1,
                                  x_shipment_number       => 1,
                                  new_quantity            => 25,
                                  new_price               => NULL,
                                  new_promised_date       => NULL,
                                  launch_approvals_flag   => 'N',
                                  update_source           => NULL,
                                  version                 => '1.0',
                                  x_override_date         => NULL,
                                  x_api_errors            => l_api_errors,
                                  p_buyer_name            => NULL);

   IF (l_result <> 1)
   THEN
      -- Display the errors
      FOR i IN 1 .. l_api_errors.MESSAGE_TEXT.COUNT
      LOOP
         DBMS_OUTPUT.put_line (l_api_errors.MESSAGE_TEXT (i));
      END LOOP;
   END IF;
END;

COMMIT;

The second run of the API will demonstrate updating the Price of Line 1 of the PO to 0.9. Submit the cancel API using sqlplus as follows :
After the API completes, Re query the PO screen to check the changes


DECLARE
   l_result       NUMBER;
   l_api_errors   PO_API_ERRORS_REC_TYPE;
BEGIN
   -- This needs to be changed according to your environment setup.
   fnd_global.apps_initialize (1318, 50578, 201);
   -- mo_global.init('PO'); -- need for R12
   l_result :=
      PO_CHANGE_API1_S.update_po (x_po_number             => 23998,
                                  x_release_number        => NULL,
                                  x_revision_number       => 0,
                                  x_line_number           => 1,
                                  x_shipment_number       => 1,
                                  new_quantity            => NULL,
                                  new_price               => 0.9,
                                  new_promised_date       => NULL,
                                  launch_approvals_flag   => 'N',
                                  update_source           => NULL,
                                  version                 => '1.0',
                                  x_override_date         => NULL,
                                  x_api_errors            => l_api_errors,
                                  p_buyer_name            => NULL);

   IF (l_result <> 1)
   THEN
      -- Display the errors
      FOR i IN 1 .. l_api_errors.MESSAGE_TEXT.COUNT
      LOOP
         DBMS_OUTPUT.put_line (l_api_errors.MESSAGE_TEXT (i));
      END LOOP;
   END IF;
END;

COMMIT;

The third run of the API will demonstrate updating the Promised Date of Shipment 1 (of Line 1) of the PO to 30-Mar-2010. Submit the cancel API using sqlplus as follows :

After the API completes, Re query the PO screen to check the changes


DECLARE
   l_result       NUMBER;
   l_api_errors   PO_API_ERRORS_REC_TYPE;
BEGIN
   -- This needs to be changed according to your environment setup.
   fnd_global.apps_initialize (1318, 50578, 201);
   -- mo_global.init('PO'); -- need for R12
   l_result :=
      PO_CHANGE_API1_S.update_po (x_po_number             => 23998,
                                  x_release_number        => NULL,
                                  x_revision_number       => 0,
                                  x_line_number           => 1,
                                  x_shipment_number       => 1,
                                  new_quantity            => NULL,
                                  new_price               => NULL,
                                  new_promised_date       => '30-MAR-2010',
                                  launch_approvals_flag   => 'N',
                                  update_source           => NULL,
                                  version                 => '1.0',
                                  x_override_date         => NULL,
                                  x_api_errors            => l_api_errors,
                                  p_buyer_name            => NULL);

   IF (l_result <> 1)
   THEN
      -- Display the errors
      FOR i IN 1 .. l_api_errors.MESSAGE_TEXT.COUNT
      LOOP
         DBMS_OUTPUT.put_line (l_api_errors.MESSAGE_TEXT (i));
      END LOOP;
   END IF;
END;

COMMIT;