Translate

Wednesday, August 6, 2014

Mass Cancel Sales Order API Oracle

Mass Cancel Sales Order API Oracle 


You can use the apps.oe_order_pub.process_order to cancel an order line.

Also note that this code was used to create a new order line.



-- Sales Order Cancel Script to be used in R12

set serveroutput on
DECLARE
 p_api_version_number        NUMBER :=1.0;
 p_init_msg_list             VARCHAR2(10) := FND_API.G_FALSE;
 p_return_values             VARCHAR2(10) := FND_API.G_FALSE;
 p_action_commit             VARCHAR2(10) := FND_API.G_FALSE;
 x_return_status             VARCHAR2(1);
 x_msg_count                 NUMBER;
 x_msg_data                  VARCHAR2(100);
  
 l_header_rec                OE_ORDER_PUB.Header_Rec_Type;
 l_header_adj_tbl            OE_ORDER_PUB.Header_Adj_Tbl_Type;
 l_header_scr_tbl            OE_ORDER_PUB.Header_Scredit_Tbl_Type;
 l_action_request_tbl        OE_ORDER_PUB.Request_Tbl_Type;

 l_line_tbl                  OE_ORDER_PUB.Line_Tbl_Type;
 l_line_adj_tbl              OE_ORDER_PUB.line_adj_tbl_Type;
 l_line_scredit_tbl          OE_ORDER_PUB.Line_Scredit_Tbl_Type;

 l_return_status             VARCHAR2(1000);
 l_msg_count                 NUMBER;
 l_msg_data                  VARCHAR2(1000);

 p_action_request_tbl        OE_ORDER_PUB.Request_Tbl_Type :=  oe_order_pub.G_MISS_REQUEST_TBL;

 -- out variables need to be defined seperately in R12 as per doc bug 7337251  

 o_header_rec                OE_ORDER_PUB.Header_Rec_Type;
 o_line_tbl                  OE_ORDER_PUB.Line_Tbl_Type;
 o_action_request_tbl        OE_ORDER_PUB.Request_Tbl_Type;
 o_header_adj_tbl            OE_ORDER_PUB.Header_Adj_Tbl_Type;
 o_line_adj_tbl              OE_ORDER_PUB.line_adj_tbl_Type;
 o_header_scr_tbl            OE_ORDER_PUB.Header_Scredit_Tbl_Type;
 o_line_scredit_tbl          OE_ORDER_PUB.Line_Scredit_Tbl_Type;

 o_header_val_rec            OE_ORDER_PUB.Header_Val_Rec_Type;
 o_Header_Adj_val_tbl        OE_ORDER_PUB.Header_Adj_Val_Tbl_Type;
 o_Header_price_Att_tbl      OE_ORDER_PUB.Header_Price_Att_Tbl_Type;
 o_Header_Adj_Att_tbl        OE_ORDER_PUB.Header_Adj_Att_Tbl_Type;
 o_Header_Adj_Assoc_tbl      OE_ORDER_PUB.Header_Adj_Assoc_Tbl_Type;
 o_Header_Scredit_tbl        OE_ORDER_PUB.Header_Scredit_Tbl_Type;
 o_Header_Scredit_val_tbl    OE_ORDER_PUB.Header_Scredit_Val_Tbl_Type;
 o_line_val_tbl              OE_ORDER_PUB.Line_Val_Tbl_Type;
 o_Line_Adj_val_tbl          OE_ORDER_PUB.Line_Adj_Val_Tbl_Type;
 o_Line_price_Att_tbl        OE_ORDER_PUB.Line_Price_Att_Tbl_Type;
 o_Line_Adj_Att_tbl          OE_ORDER_PUB.Line_Adj_Att_Tbl_Type;
 o_Line_Adj_Assoc_tbl        OE_ORDER_PUB.Line_Adj_Assoc_Tbl_Type;
 o_Line_Scredit_val_tbl      OE_ORDER_PUB.Line_Scredit_Val_Tbl_Type;
 o_Lot_Serial_tbl            OE_ORDER_PUB.Lot_Serial_Tbl_Type;
 o_Lot_Serial_val_tbl        OE_ORDER_PUB.Lot_Serial_Val_Tbl_Type;

 X_DEBUG_FILE VARCHAR2(100);
 l_msg_index_out NUMBER(10);
BEGIN
 dbms_output.enable(1000000);
 Fnd_Global.apps_initialize(1318,21623,660);
 MO_GLOBAL.INIT('ONT'); -- MOAC 
 oe_msg_pub.initialize;
 oe_debug_pub.initialize;
 X_DEBUG_FILE := OE_DEBUG_PUB.Set_Debug_Mode('FILE');
 oe_debug_pub.SetDebugLevel(5); -- Use 5 for the most debuging output, I warn  you its a lot of data
 dbms_output.put_line('START OF NEW DEBUG');

 --This is to cancel an order
 -- Initialize the record to missing

 l_header_rec                   := OE_ORDER_PUB.G_MISS_HEADER_REC;
 l_header_rec.header_id         := 193343;
 l_header_rec.cancelled_flag    := 'Y';
 l_header_rec.change_reason     := 'Not provided';
 l_header_rec.operation         := OE_GLOBALS.G_OPR_UPDATE;

 -- Call To Process Order API

 OE_ORDER_PUB.process_order (
  p_api_version_number       => 1.0
  , p_init_msg_list          => fnd_api.g_false
  , p_return_values          => fnd_api.g_false
  , p_action_commit          => fnd_api.g_false
  , x_return_status          => l_return_status
  , x_msg_count              => l_msg_count
  , x_msg_data               => l_msg_data
  , p_header_rec             => l_header_rec
  , p_line_tbl               => l_line_tbl
  , p_action_request_tbl     => l_action_request_tbl
  -- OUT PARAMETERS
  , x_header_rec             => o_header_rec
  , x_header_val_rec         => o_header_val_rec
  , x_Header_Adj_tbl         => o_Header_Adj_tbl
  , x_Header_Adj_val_tbl     => o_Header_Adj_val_tbl
  , x_Header_price_Att_tbl   => o_Header_price_Att_tbl
  , x_Header_Adj_Att_tbl     => o_Header_Adj_Att_tbl
  , x_Header_Adj_Assoc_tbl   => o_Header_Adj_Assoc_tbl
  , x_Header_Scredit_tbl     => o_Header_Scredit_tbl 
  , x_Header_Scredit_val_tbl => o_Header_Scredit_val_tbl
  , x_line_tbl               => o_line_tbl
  , x_line_val_tbl           => o_line_val_tbl
  , x_Line_Adj_tbl           => o_Line_Adj_tbl
  , x_Line_Adj_val_tbl       => o_Line_Adj_val_tbl
  , x_Line_price_Att_tbl     => o_Line_price_Att_tbl
  , x_Line_Adj_Att_tbl       => o_Line_Adj_Att_tbl
  , x_Line_Adj_Assoc_tbl     => o_Line_Adj_Assoc_tbl
  , x_Line_Scredit_tbl       => o_Line_Scredit_tbl
  , x_Line_Scredit_val_tbl   => o_Line_Scredit_val_tbl
  , x_Lot_Serial_tbl         => o_Lot_Serial_tbl
  , x_Lot_Serial_val_tbl     => o_Lot_Serial_val_tbl
  , x_action_request_tbl     => o_action_request_tbl
 );

 dbms_output.put_line('OM Debug file: '  ||oe_debug_pub.G_DIR||'/'||oe_debug_pub.G_FILE);
 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_msg_data
   , p_msg_index_out => l_msg_index_out
  );
  DBMS_OUTPUT.PUT_LINE('message is: ' || l_msg_data);
  DBMS_OUTPUT.PUT_LINE('message index is: ' || l_msg_index_out);
 END LOOP;
 -- Check the return status
 IF l_return_status = FND_API.G_RET_STS_SUCCESS
 THEN
  dbms_output.put_line('Process order Sucess');
 ELSE
  dbms_output.put_line('Failed');
 END IF;
-- debug output
 dbms_output.put_line('Debug Output');
 FOR i in 1..OE_DEBUG_PUB.g_debug_count
 LOOP
  dbms_output.put_line(OE_DEBUG_PUB.G_debug_tbl(i));
 END LOOP;
 END;
/
commit;

No comments:

Post a Comment