Sunday, November 23, 2014

Create Standard Sales Order using API

Below anonymous block will create Sales order 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;
  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_CREATE;
  l_header_rec.orig_sys_document_ref   := 'OE_ORDER_HEADERS_PRPTEST';
  l_header_rec.TRANSACTIONAL_CURR_CODE := 'USD';
  l_header_rec.pricing_date            := SYSDATE;
  l_header_rec.cust_po_number          := NUll;
  l_header_rec.sold_to_org_id          := 25074;
  l_header_rec.price_list_id           := 6015;
  l_header_rec.ordered_date            := SYSDATE;
  l_header_rec.shipping_method_code    := NULL;
  l_header_rec.sold_from_org_id        := 194;
  l_header_rec.ship_from_org_id        := 174;
  l_header_rec.ship_to_org_id          := 4926;
  l_header_rec.salesrep_id             := -3;
  l_header_rec.flow_status_code        :='ENTERED';
  l_header_rec.order_type_id           := 1485;
  -- REQUIRED HEADER DFF INFORMATIONS
  l_header_rec.attribute1  :=193;        -- Entering Branch
  l_header_rec.attribute3  := 'Y';       -- Indexation applicable
  l_header_rec.attribute5  := '2.5';     -- Indexation Tolerance percentage
 l_header_rec.attribute7  := 100000045; -- Field Sales representative
  l_header_rec.attribute11 := '100';     -- 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_CREATE; -- Mandatory Operation to Pass
  l_line_tbl(1).inventory_item_id := 524216;
  l_line_tbl(1).ordered_quantity  := 1;
  l_line_tbl(1).ship_from_org_id  := 174;
  l_line_tbl(1).subinventory      := NULL;
  -- REQUIRED LINE DFF INFORMATIONS
  l_line_tbl(1).attribute2  := '20.99998'; -- Gross Margin
  l_line_tbl(1).attribute3  := '101686'; -- Business Cost
  l_line_tbl(1).attribute10 := 'Y';     -- Original Cust Requested Qty
  l_line_tbl(1).attribute11 := '662.772';  -- Baseline Margin
  l_line_tbl(1).attribute16 := 'DBP';      -- Buy Price Basis
  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,
    -- 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