Monday, 20 February 2017

Requistion Add line,delete line,update line details,and distributions API

/*You can use the api to add new line/distribution,Update/delete  existing line/distribution*/
DECLARE
   l_req_hdr       PO_REQUISITION_UPDATE_PUB.req_hdr;
   l_ret_status    VARCHAR2 (10);
   l_msg_count     NUMBER;
   l_msg_data      VARCHAR2 (4000);
   l_line_tbl      PO_REQUISITION_UPDATE_PUB.req_line_tbl;
   l_dist_tbl      PO_REQUISITION_UPDATE_PUB.req_dist_tbl;
   l_req_hdr_id    NUMBER;
   l_req_line_id   NUMBER;
   l_req_line_no   NUMBER;
   l_item_id number;
   l_req_no varchar2(40);
   v_msg       NUMBER := NULL;
  MESSAGE VARCHAR2 (2000);
  out_message varchar2(5000);
  l_msg_index_OUT number;
BEGIN
PO_LOG.d_stmt:=TRUE;
FND_GLOBAL.APPS_INITIALIZE(103338,23436, 396);
fnd_profile.put('AFLOG_ENABLED', 'Y');
fnd_profile.put('AFLOG_MODULE', '%');
fnd_profile.put('AFLOG_LEVEL','1');
fnd_profile.put('AFLOG_FILENAME', '');
fnd_log_repository.init;
 apps.fnd_msg_pub.delete_msg;
   SELECT requisition_header_id,segment1
     INTO l_req_`hdr_id,l_req_no
     FROM po_requisition_headers_all
    WHERE segment1 = '107904'
    and org_id = 81;

   SELECT requisition_line_id, line_num,item_id
     INTO l_req_line_id, l_req_line_no,l_item_id
     FROM po_requisition_lines_all
    WHERE requisition_header_id = l_req_hdr_id
    and org_id = 81;
    l_line_tbl.delete;
   l_req_hdr.segment1 := l_req_no;
   l_req_hdr.org_id := 81;
   l_req_hdr.requisition_header_id := l_req_hdr_id;
   l_req_hdr.description := 'Test via API -Darpan';

   l_line_tbl (1).requisition_number := l_req_no;
   l_line_tbl (1).requisition_header_id := l_req_hdr_id;
   l_line_tbl (1).requisition_line_num := l_req_line_no;
   l_line_tbl (1).requisition_line_id := l_req_line_id;
   L_LINE_TBL(1).quantity  := 25;
   l_line_tbl (1).org_id := 81;

   l_line_tbl (2).requisition_number := l_req_no;
   l_line_tbl (2).requisition_header_id := l_req_hdr_id;
   l_line_tbl (2).requisition_line_num := 2;
 
   --l_line_tbl (2).requisition_line_id := l_req_line_id;
   l_line_tbl (2).org_id := 81;
   l_line_tbl (2).ITEM_ID := l_item_id;
    l_line_tbl (2).item_description := 'Health Club Card 100249 Khalid Abdulrahman Nasser AL-Buraihi';
   -- l_line_tbl (2).order_type_lookup_code:= 'QUANTITY' ;
   -- l_line_tbl (2).purchase_basis:= 'GOODS';
   --l_line_tbl (2).matching_basis:='QUANTITY';
   l_line_tbl (2).destination_organization_id:=86;
    l_line_tbl (2).vendor_id:=318146;
    --l_line_tbl (2).encumbered_flag:='N';
    --l_line_tbl (2).quantity_delivered:=0;
   L_LINE_TBL (2). currency_code  :='SAR';
   L_LINE_TBL(2).quantity  := 25;
   L_LINE_TBL(2).unit_price := 10;
   L_LINE_TBL(2).CATEGORY_ID := 143;
   L_LINE_TBL(2).deliver_to_location_id := 451;
    L_LINE_TBL(2).to_person_id:=397;
   l_line_tbl(2).LINE_TYPE_ID  := 1;
   l_line_tbl(2).source_type_code := 'VENDOR';
   --l_line_tbl(2).source_type := 'VENDOR';
   l_line_tbl(2).destination_type_code := 'EXPENSE';
   -- l_line_tbl(2).DESTINATION_CONTEXT:= 'EXPENSE';
   l_line_tbl(2).ACTION_FLAG := 'NEW';
   L_LINE_TBL(2).unit_meas_lookup_code := 'EA';
--  
--  
     l_dist_tbl (2).requisition_number := l_req_no;
     l_dist_tbl (2).coa_id:=1001;
   l_dist_tbl (2).req_header_id  :=l_req_hdr_id;
    l_dist_tbl (2).req_line_num:= 2;
   l_dist_tbl (2).distribution_num := 3;
   --l_dist_tbl (2).requisition_dist_id := l_req_dist_id;
   l_dist_tbl (2).org_id := 81;
   l_dist_tbl (2).charge_account_id := 129916;
   --L_dist_TBL (2). currency_code  :='SAR';
   L_dist_TBL(2).budget_account_id   := 129916;
   L_dist_TBL(2).accrual_account_id := 1091;
   L_dist_TBL(2).variance_account_id := 129916;
   l_dist_tbl(2).req_line_quantity  := 25;
   --l_dist_tbl(2).req_line_amount := 'VENDOR';
   l_dist_tbl(2).CODE_COMBINATION_ID := 129916;
   l_dist_tbl(2).ACTION_FLAG := 'NEW';
 
 
   
   PO_REQUISITION_UPDATE_PUB.update_requisition ('F',
                                                 'Y',
                                                 l_ret_status,
                                                 l_msg_count,
                                                 l_msg_data,
                                                 'N',
                                                 l_req_hdr,
                                                 l_line_tbl,
                                                 l_dist_tbl);
   DBMS_OUTPUT.put_line ('Return Status' || l_ret_status);
   DBMS_OUTPUT.put_line ('Message Count' || l_msg_count);
   DBMS_OUTPUT.put_line ('Msg Data' || l_msg_data);
 
 IF l_ret_status = 'E' OR l_ret_status = 'U'
  THEN
     MESSAGE := MESSAGE || 'return status: ' || l_ret_status || ' msg: ';
     IF (FND_MSG_PUB.Count_Msg > 0)
     THEN
        FOR i IN 1 .. FND_MSG_PUB.Count_Msg
        LOOP
           FND_MSG_PUB.Get (p_msg_index       => i,
                            p_encoded         => 'F',
                            p_data            => out_message,
                            p_msg_index_OUT   => l_msg_index_OUT);
           MESSAGE := MESSAGE || ' ' || out_message;
        END LOOP;
     END IF;
  END IF;
  dbms_output.put_line(MESSAGE);
END;

1 comment:

  1. Hi, for my data the quantity, unit and uom lookup code are null. I am getting the below error:
    After header call statusS
    After line update statusE
    Return StatusE
    Message Count1
    Msg DataNumber of Requisition Lines in Error: 1 Some unit of measure conversions are not defined

    Cause: Some unit

    return status: E msg: Some unit of measure conversions are not defined

    Cause: Some unit



    PL/SQL procedure successfully complete

    Kindly guide me in order to resolve this error. Thank you.

    ReplyDelete