Cancel po line using Plsql script PO_DOCUMENT_CONTROL_PUB.CONTROL_DOCUMENT

 ************** Cancel PO Line *****************#

DECLARE
 v_return_status   VARCHAR2 (10);
 v_msg_data        VARCHAR2(1000);
 v_po_header_id    NUMBER        := 2503180;
 v_doc_subtype     VARCHAR2(10)  := 'STANDARD';
 v_doc_type        VARCHAR2(10)  := 'PO';
 v_org_id          NUMBER        := 894;
 v_action          VARCHAR2(10)  := 'CANCEL';
 v_action_date     DATE          := SYSDATE;
 l_user_id NUMBER :=40231;
 l_resp_id NUMBER :=20707;
 l_appl_id NUMBER :=201;

  BEGIN

 fnd_global.apps_initialize(l_user_id, l_resp_id, l_appl_id);
MO_GLOBAL.INIT('PO');
mo_global.set_policy_context ('S',v_org_id);
 DBMS_OUTPUT.PUT_LINE ('Calling API For Cancelling Documents');
PO_DOCUMENT_CONTROL_PUB.CONTROL_DOCUMENT (p_api_version => 1.0
                                         ,p_init_msg_list  =>fnd_api.g_true 
                                         ,p_commit          =>fnd_api.g_false
                                         ,x_return_status  =>v_return_status
                                         ,p_doc_type      =>v_doc_type
                                         ,p_doc_subtype   =>v_doc_subtype
                                         ,p_doc_id        =>v_po_header_id
                                         ,p_doc_num       =>NULL
                                         ,p_release_id    =>NULL
                                         ,p_release_num   =>NULL
                                         ,p_doc_line_id   =>NULL
                                         ,p_doc_line_num  =>NULL
                                         ,p_doc_line_loc_id =>NULL
                                         ,p_doc_shipment_num => NULL
                                         ,p_action           => v_action
                                         ,p_action_date      => v_action_date
                                         ,p_cancel_reason    => 'OLD PURCHASE ORDER'
                                         ,p_cancel_reqs_flag => 'N'
                                         ,p_print_flag       => NULL
                                         ,p_note_to_vendor   => NULL
                                         ,p_use_gldate       => NULL
                                         ,p_org_id           => v_org_id);
COMMIT;
DBMS_OUTPUT.PUT_LINE('The Return Status of the API : '|| v_return_status);
IF v_return_status = fnd_api.g_ret_sts_success THEN
 COMMIT;
 DBMS_OUTPUT.PUT_LINE ('Cancellation of PO is Sucessfull : '||v_po_header_id) ;
 ELSE
  DBMS_OUTPUT.PUT_LINE ('Cancellation of PO Failed ');
 ROLLBACK;
 FOR i IN 1 .. FND_MSG_PUB.COUNT_MSG LOOP
   v_msg_data := FND_MSG_PUB.GET( p_msg_index =>i,p_encoded => 'F');
  DBMS_OUTPUT.PUT_LINE( i|| ') '|| v_msg_data);
  END LOOP;
END IF;
END;

Post a Comment