Sunday, November 23, 2014

Update Sales Order Price list and Add required Modifier to Line level using standard API

Below anonymous block will update Sales order Price list and add 
Modifier (as per Business Requirement ) in Order Management.
(Note: Change values as per your requirement also ON DBMS Output window to see DBMS Output message.)



DECLARE  
  l_api_version_number NUMBER := 1;  
  l_return_status      VARCHAR2(2000);  
  l_msg_count          NUMBER;  
  l_msg_data           VARCHAR2(2000);  
  -- PARAMETERS  
  l_debug_level NUMBER := 5;   -- OM DEBUG LEVEL (MAX 5)  
  l_org         NUMBER := 194; -- OPERATING UNIT  
  l_no_orders   NUMBER := 1;   -- NO OF ORDERS  
  -- INPUT VARIABLES FOR PROCESS_ORDER API  
  l_header_rec oe_order_pub.header_rec_type;  
  l_line_tbl oe_order_pub.line_tbl_type;  
  l_action_request_tbl oe_order_pub.Request_Tbl_Type;  
  -- OUT VARIABLES FOR PROCESS_ORDER API  
  l_header_rec_out oe_order_pub.header_rec_type;  
  l_header_val_rec_out oe_order_pub.header_val_rec_type;  
  l_header_adj_tbl_out oe_order_pub.header_adj_tbl_type;  
  l_header_adj_val_tbl_out oe_order_pub.header_adj_val_tbl_type;  
  l_header_price_att_tbl_out oe_order_pub.header_price_att_tbl_type;  
  l_header_adj_att_tbl_out oe_order_pub.header_adj_att_tbl_type;  
  l_header_adj_assoc_tbl_out oe_order_pub.header_adj_assoc_tbl_type;  
  l_header_scredit_tbl_out oe_order_pub.header_scredit_tbl_type;  
  l_header_scredit_val_tbl_out oe_order_pub.header_scredit_val_tbl_type;  
  l_line_tbl_out oe_order_pub.line_tbl_type;  
  l_line_val_tbl_out oe_order_pub.line_val_tbl_type;  
  l_line_adj_tbl_out oe_order_pub.line_adj_tbl_type;  
  l_line_adj_val_tbl_out oe_order_pub.line_adj_val_tbl_type;  
  l_line_price_att_tbl_out oe_order_pub.line_price_att_tbl_type;  
  l_line_adj_att_tbl_out oe_order_pub.line_adj_att_tbl_type;  
  l_line_adj_assoc_tbl_out oe_order_pub.line_adj_assoc_tbl_type;  
  l_line_scredit_tbl_out oe_order_pub.line_scredit_tbl_type;  
  l_line_scredit_val_tbl_out oe_order_pub.line_scredit_val_tbl_type;  
  l_lot_serial_tbl_out oe_order_pub.lot_serial_tbl_type;  
  l_lot_serial_val_tbl_out oe_order_pub.lot_serial_val_tbl_type;  
  l_action_request_tbl_out oe_order_pub.request_tbl_type; 
  lt_line_adj_tbl OE_ORDER_PUB.Line_Adj_Tbl_Type;  
  l_msg_index  NUMBER;  
  l_data       VARCHAR2(2000);  
  l_loop_count NUMBER;  
  l_debug_file VARCHAR2(200);  
BEGIN  
  -- INITIALIZATION REQUIRED FOR R12  
  mo_global.set_policy_context ('S', l_org);  
  mo_global.init('ONT');  
  -- INITIALIZE DEBUG INFO  
  IF (l_debug_level > 0) THEN  
    l_debug_file   := OE_DEBUG_PUB.Set_Debug_Mode('FILE');  
    oe_debug_pub.initialize;  
    oe_debug_pub.setdebuglevel(l_debug_level);  
    Oe_Msg_Pub.initialize;  
  END IF;  
  -- INITIALIZE ENVIRONMENT  
  fnd_global.apps_initialize (user_id => 2106, resp_id => 50663, resp_appl_id => 660);  
  -- INITIALIZE HEADER RECORD  
  l_header_rec := OE_ORDER_PUB.G_MISS_HEADER_REC;  
  -- POPULATE REQUIRED ATTRIBUTES  
  l_header_rec.operation               := OE_GLOBALS.G_OPR_UPDATE;
 l_header_rec.header_id := 71477;
   
    -- Indexation Applicability  
  -- INITIALIZE ACTION REQUEST RECORD  
  l_action_request_tbl(1) := OE_ORDER_PUB.G_MISS_REQUEST_REC;
  l_action_request_tbl(1).request_type := oe_globals.g_book_order;
  l_action_request_tbl(1).entity_code := oe_globals.g_entity_header;
  -- INITIALIZE LINE RECORD  
  l_line_tbl(1)                   := OE_ORDER_PUB.G_MISS_LINE_REC;  
  l_line_tbl(1).operation         := OE_GLOBALS.G_OPR_UPDATE; -- Mandatory Operation to Pass 
  l_line_tbl(1).line_id := 240148;
  -- INITIALIZE PRICE ADJUSTMENT RECORD
  lt_line_adj_tbl(1)                     := OE_ORDER_PUB.G_MISS_LINE_ADJ_REC;
  lt_line_adj_tbl(1).operation           := OE_GLOBALS.G_OPR_CREATE;
  lt_line_adj_tbl(1).applied_flag       := 'Y';  
  lt_line_adj_tbl(1).line_index         := 1;
  lt_line_adj_tbl(1).list_header_id     := 6007;  -- Need To change as per business requirement
  lt_line_adj_tbl(1).list_line_id       := 6007;  -- Need To change as per business requirement  
  lt_line_adj_tbl(1).header_id     := 71477;
  lt_line_adj_tbl(1).line_id       := 240148;
  lt_line_adj_tbl(1).updated_flag       := 'Y';
  lt_line_adj_tbl(1).automatic_flag     := 'Y';
  lt_line_adj_tbl(1).operand             := 20;
  lt_line_adj_tbl(1).arithmetic_operator := 'AMT';
    
  FOR i IN 1..l_no_orders  
  LOOP -- BEGIN LOOP  
    -- CALLTO PROCESS ORDER API  
    oe_order_pub.process_order( p_org_id => l_org, 
                                p_operating_unit => NULL, 
                                p_api_version_number => l_api_version_number, 
                                p_header_rec => l_header_rec, 
                                p_line_tbl => l_line_tbl, 
                                p_action_request_tbl => l_action_request_tbl, 
p_line_adj_tbl => lt_line_adj_tbl,
-- OUT variables  
                                x_header_rec => l_header_rec_out, 
                                x_header_val_rec => l_header_val_rec_out, 
                                x_header_adj_tbl => l_header_adj_tbl_out, 
                                x_header_adj_val_tbl => l_header_adj_val_tbl_out, 
                                x_header_price_att_tbl => l_header_price_att_tbl_out, 
                                x_header_adj_att_tbl => l_header_adj_att_tbl_out, 
                                x_header_adj_assoc_tbl => l_header_adj_assoc_tbl_out, 
                                x_header_scredit_tbl => l_header_scredit_tbl_out, 
                                x_header_scredit_val_tbl => l_header_scredit_val_tbl_out, 
                                x_line_tbl => l_line_tbl_out, 
                                x_line_val_tbl => l_line_val_tbl_out, 
                                x_line_adj_tbl => l_line_adj_tbl_out, 
                                x_line_adj_val_tbl => l_line_adj_val_tbl_out, 
                                x_line_price_att_tbl => l_line_price_att_tbl_out, 
                                x_line_adj_att_tbl => l_line_adj_att_tbl_out, 
                                x_line_adj_assoc_tbl => l_line_adj_assoc_tbl_out, 
                                x_line_scredit_tbl => l_line_scredit_tbl_out, 
                                x_line_scredit_val_tbl => l_line_scredit_val_tbl_out, 
                                x_lot_serial_tbl => l_lot_serial_tbl_out, 
                                x_lot_serial_val_tbl => l_lot_serial_val_tbl_out, 
                                x_action_request_tbl => l_action_request_tbl_out, 
                                x_return_status =>  l_return_status, 
                                x_msg_count => l_msg_count, 
                                x_msg_data => l_msg_data);  
    -- CHECK RETURN STATUS  
    IF l_return_status  = FND_API.G_RET_STS_SUCCESS THEN  
      IF (l_debug_level > 0) THEN  
        DBMS_OUTPUT.PUT_LINE('Sales Order Successfully Created');  
      END IF;  
      COMMIT;  
    ELSE  
      IF (l_debug_level > 0) THEN  
        DBMS_OUTPUT.PUT_LINE('Failed to Create Sales Order');  
      END IF;  
      ROLLBACK;  
    END IF;  
  END LOOP;   
  -- DISPLAY ERROR MSGS  
  IF (l_debug_level > 0) THEN  
    FOR i IN 1 .. l_msg_count  
    LOOP  
      oe_msg_pub.get( p_msg_index => i ,p_encoded => Fnd_Api.G_FALSE ,p_data => l_data ,p_msg_index_out => l_msg_index);  
      DBMS_OUTPUT.PUT_LINE('message is:' ||l_data);  
      DBMS_OUTPUT.PUT_LINE('message index is:' ||l_msg_index);  
    END LOOP;  
  END IF;     
END;

No comments:

Post a Comment