Friday, 27 January 2012

Requisition Cancel Program(API)

Spec
Procedure XXXXXX_PO_REQ_CANCEL_PRG(errbuf out varchar2,retcode out varchar2,Req_num Number);
--------------------------------------------------------------------------
Body

Procedure XXXXXX_PO_REQ_CANCEL_PRG(errbuf out varchar2,retcode out varchar2,Req_num Number)
is

     l_return_status VARCHAR2 (1000);
     l_msg_count NUMBER;
     l_msg_data VARCHAR2 (1000);
     lv_header_id po_tbl_number;
     lv_line_id po_tbl_number;
     m NUMBER := NULL;
     l_msg_dummy VARCHAR2 (2000);    
     l_output VARCHAR2 (2000);
   
   Cursor lcur_req_can is
   Select  poh.requisition_header_id
           ,pol.requisition_line_id
           ,poh.authorization_status
           ,poh.Segment1 Po_Req_Num
           ,pol.item_description
           ,pol.line_num
           ,quantity
    From    po_requisition_headers_all poh
          ,po_requisition_lines_all   pol
    Where   poh.authorization_status  = 'APPROVED'
    And     poh.requisition_header_id = pol.requisition_header_id
    And     pol.line_location_id is null
    And     pol.source_type_code = 'VENDOR'
    And     nvl(pol.cancel_flag,'N') = 'N'
    And     poh.segment1 = nvl(Req_num,poh.segment1);
   
  BEGIN
     m := 1;
   FOR i IN lcur_req_can LOOP
      lv_header_id := po_tbl_number (i.requisition_header_id);
      lv_line_id := po_tbl_number (i.requisition_line_id);
         po_req_document_cancel_grp.cancel_requisition
                                    (p_api_version => 1.0,
                                     p_req_header_id => lv_header_id,
                                     p_req_line_id => lv_line_id,
                                     p_cancel_date => SYSDATE,
                                     p_cancel_reason => 'Cancelled Requisition',
                                     p_source => 'REQUISITION',
                                     x_return_status => l_return_status,
                                     x_msg_count => l_msg_count,
                                     x_msg_data => l_msg_data
                                     );
   END LOOP;
   COMMIT;
       FND_FILE.PUT_LINE(fnd_file.log,'Return Status is - '||l_return_status);
           IF l_return_status <> 'S'
             THEN
                fnd_msg_pub.get (m, fnd_api.g_false, l_msg_data, l_msg_dummy);
                l_output := (TO_CHAR (m) || ': ' || l_msg_data);
               FND_FILE.PUT_LINE(fnd_file.log,'Out put is - '||l_output);
           END IF;
  END;

No comments:

Post a Comment