Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

savepoint error in trigger when it is fired

888025Jul 15 2014 — edited Jul 16 2014

Hi, I am getting the below error
ORA-04092 cannot set savepoint in trigger in package oe_order_pub procedure process_order


step - 1 , I have a standard package

OE_Order_PUB, I am unable to paste complete code of this package but just pasted the process_order procedure from the package which is overloaded
step - 2 , Custom procedure TEST_CONTI_PRC to call OE_Order_PUB.process_order


step - 3 , trigger which calls custom procedure TEST_CONTI_PRC


When it is called I am getting
ORA-04092 cannot set savepoint in trigger in package oe_order_pub procedure process_order

Is there a way i can resolve this issue

appreciate your help


============================code ===================================
step -1

====================================================


PROCEDURE Process_Order
(   p_org_id                        IN  NUMBER := NULL --MOAC
,   p_operating_unit                IN  VARCHAR2 := NULL -- MOAC
,   p_api_version_number            IN  NUMBER
,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
,   p_action_commit                 IN  VARCHAR2 := FND_API.G_FALSE
,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
,   p_header_rec                    IN  Header_Rec_Type :=
                                        G_MISS_HEADER_REC
,   p_old_header_rec                IN  Header_Rec_Type :=
                                        G_MISS_HEADER_REC
,   p_header_val_rec                IN  Header_Val_Rec_Type :=
                                        G_MISS_HEADER_VAL_REC
,   p_old_header_val_rec            IN  Header_Val_Rec_Type :=
                                        G_MISS_HEADER_VAL_REC
,   p_Header_Adj_tbl                IN  Header_Adj_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_TBL
,   p_old_Header_Adj_tbl            IN  Header_Adj_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_TBL
,   p_Header_Adj_val_tbl            IN  Header_Adj_Val_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_VAL_TBL
,   p_old_Header_Adj_val_tbl        IN  Header_Adj_Val_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_VAL_TBL
,   p_Header_price_Att_tbl          IN  Header_Price_Att_Tbl_Type :=
                                        G_MISS_HEADER_PRICE_ATT_TBL
,   p_old_Header_Price_Att_tbl      IN  Header_Price_Att_Tbl_Type :=
                                        G_MISS_HEADER_PRICE_ATT_TBL
,   p_Header_Adj_Att_tbl            IN  Header_Adj_Att_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_ATT_TBL
,   p_old_Header_Adj_Att_tbl        IN  Header_Adj_Att_Tbl_Type :=
    G_MISS_HEADER_ADJ_ATT_TBL
,   p_Header_Adj_Assoc_tbl            IN  Header_Adj_Assoc_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_ASSOC_TBL
,   p_old_Header_Adj_Assoc_tbl        IN  Header_Adj_Assoc_Tbl_Type :=
    G_MISS_HEADER_ADJ_ASSOC_TBL
,   p_Header_Scredit_tbl            IN  Header_Scredit_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_TBL
,   p_old_Header_Scredit_tbl        IN  Header_Scredit_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_TBL
,   p_Header_Scredit_val_tbl        IN  Header_Scredit_Val_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_VAL_TBL
,   p_old_Header_Scredit_val_tbl    IN  Header_Scredit_Val_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_VAL_TBL
,   p_Header_Payment_tbl            IN  Header_Payment_Tbl_Type :=
                                        G_MISS_HEADER_PAYMENT_TBL
,   p_old_Header_Payment_tbl        IN  Header_Payment_Tbl_Type :=
                                        G_MISS_HEADER_PAYMENT_TBL
,   p_Header_Payment_val_tbl        IN  Header_Payment_Val_Tbl_Type :=
                                        G_MISS_HEADER_PAYMENT_VAL_TBL
,   p_old_Header_Payment_val_tbl    IN  Header_Payment_Val_Tbl_Type :=
                                        G_MISS_HEADER_PAYMENT_VAL_TBL
,   p_line_tbl                      IN  Line_Tbl_Type :=
                                        G_MISS_LINE_TBL
,   p_old_line_tbl                  IN  Line_Tbl_Type :=
                                        G_MISS_LINE_TBL
,   p_line_val_tbl                  IN  Line_Val_Tbl_Type :=
                                        G_MISS_LINE_VAL_TBL
,   p_old_line_val_tbl              IN  Line_Val_Tbl_Type :=
                                        G_MISS_LINE_VAL_TBL
,   p_Line_Adj_tbl                  IN  Line_Adj_Tbl_Type :=
                                        G_MISS_LINE_ADJ_TBL
,   p_old_Line_Adj_tbl              IN  Line_Adj_Tbl_Type :=
                                        G_MISS_LINE_ADJ_TBL
,   p_Line_Adj_val_tbl              IN  Line_Adj_Val_Tbl_Type :=
                                        G_MISS_LINE_ADJ_VAL_TBL
,   p_old_Line_Adj_val_tbl          IN  Line_Adj_Val_Tbl_Type :=
                                        G_MISS_LINE_ADJ_VAL_TBL
,   p_Line_price_Att_tbl            IN  Line_Price_Att_Tbl_Type :=
                                        G_MISS_LINE_PRICE_ATT_TBL
,   p_old_Line_Price_Att_tbl        IN  Line_Price_Att_Tbl_Type :=
                                        G_MISS_LINE_PRICE_ATT_TBL
,   p_Line_Adj_Att_tbl              IN  Line_Adj_Att_Tbl_Type :=
                                        G_MISS_LINE_ADJ_ATT_TBL
,   p_old_Line_Adj_Att_tbl          IN  Line_Adj_Att_Tbl_Type :=
    G_MISS_LINE_ADJ_ATT_TBL
,   p_Line_Adj_Assoc_tbl              IN  Line_Adj_Assoc_Tbl_Type :=
                                        G_MISS_LINE_ADJ_ASSOC_TBL
,   p_old_Line_Adj_Assoc_tbl          IN  Line_Adj_Assoc_Tbl_Type :=
    G_MISS_LINE_ADJ_ASSOC_TBL
,   p_Line_Scredit_tbl              IN  Line_Scredit_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_TBL
,   p_old_Line_Scredit_tbl          IN  Line_Scredit_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_TBL
,   p_Line_Scredit_val_tbl          IN  Line_Scredit_Val_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_VAL_TBL
,   p_old_Line_Scredit_val_tbl      IN  Line_Scredit_Val_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_VAL_TBL
,   p_Line_Payment_tbl              IN  Line_Payment_Tbl_Type :=
                                        G_MISS_LINE_PAYMENT_TBL
,   p_old_Line_Payment_tbl          IN  Line_Payment_Tbl_Type :=
                                        G_MISS_LINE_PAYMENT_TBL
,   p_Line_Payment_val_tbl          IN  Line_Payment_Val_Tbl_Type :=
                                        G_MISS_LINE_PAYMENT_VAL_TBL
,   p_old_Line_Payment_val_tbl      IN  Line_Payment_Val_Tbl_Type :=
                                        G_MISS_LINE_PAYMENT_VAL_TBL
,   p_Lot_Serial_tbl                IN  Lot_Serial_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_TBL
,   p_old_Lot_Serial_tbl            IN  Lot_Serial_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_TBL
,   p_Lot_Serial_val_tbl            IN  Lot_Serial_Val_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_VAL_TBL
,   p_old_Lot_Serial_val_tbl        IN  Lot_Serial_Val_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_VAL_TBL
,   p_action_request_tbl     IN  Request_Tbl_Type :=
     G_MISS_REQUEST_TBL
,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ Header_Rec_Type
,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ Header_Val_Rec_Type
,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ Header_Adj_Tbl_Type
,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ Header_Adj_Val_Tbl_Type
,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ Header_Price_Att_Tbl_Type
,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ Header_Adj_Att_Tbl_Type
,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ Header_Adj_Assoc_Tbl_Type
,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ Header_Scredit_Tbl_Type
,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ Header_Scredit_Val_Tbl_Type
,   x_Header_Payment_tbl            OUT NOCOPY /* file.sql.39 change */ Header_Payment_Tbl_Type
,   x_Header_Payment_val_tbl        OUT NOCOPY /* file.sql.39 change */ Header_Payment_Val_Tbl_Type
,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ Line_Tbl_Type
,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ Line_Val_Tbl_Type
,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ Line_Adj_Tbl_Type
,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ Line_Adj_Val_Tbl_Type
,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ Line_Price_Att_Tbl_Type
,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ Line_Adj_Att_Tbl_Type
,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ Line_Adj_Assoc_Tbl_Type
,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ Line_Scredit_Tbl_Type
,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ Line_Scredit_Val_Tbl_Type
,   x_Line_Payment_tbl              OUT NOCOPY /* file.sql.39 change */ Line_Payment_Tbl_Type
,   x_Line_Payment_val_tbl          OUT NOCOPY /* file.sql.39 change */ Line_Payment_Val_Tbl_Type
,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ Lot_Serial_Tbl_Type
,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ Lot_Serial_Val_Tbl_Type
,   x_action_request_tbl     OUT NOCOPY /* file.sql.39 change */ Request_Tbl_Type
--For bug 3390458
,   p_rtrim_data                    IN  Varchar2 :='N'
,   p_validate_desc_flex            in varchar2 default 'Y'  --bug4343612
--ER7675548
,   p_header_customer_info_tbl      IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
                                         OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
,   p_line_customer_info_tbl      IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
                                       OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
)
IS
--MOAC
l_org_id                      NUMBER;
l_operating_unit              VARCHAR2(240);

l_api_version_number          CONSTANT NUMBER := 1.0;
l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Order';
l_control_rec                 OE_GLOBALS.Control_Rec_Type;
l_return_status               VARCHAR2(1);
l_header_rec                  Header_Rec_Type;
l_Header_Adj_tbl              Header_Adj_Tbl_Type;
l_Header_price_Att_tbl        Header_Price_Att_Tbl_Type ;
l_Header_Adj_Att_tbl          Header_Adj_Att_Tbl_Type ;
l_Header_Adj_Assoc_tbl        Header_Adj_Assoc_Tbl_Type ;
l_Header_Scredit_tbl          Header_Scredit_Tbl_Type;
l_Header_Payment_tbl          Header_Payment_Tbl_Type;
l_line_tbl                    Line_Tbl_Type;
l_Line_Adj_tbl                Line_Adj_Tbl_Type;
l_Line_price_Att_tbl          Line_Price_Att_Tbl_Type ;
l_Line_Adj_Att_tbl            Line_Adj_Att_Tbl_Type ;
l_Line_Adj_Assoc_tbl          Line_Adj_Assoc_Tbl_Type ;
l_Line_Scredit_tbl            Line_Scredit_Tbl_Type;
l_Line_Payment_tbl            Line_Payment_Tbl_Type;
l_Lot_Serial_tbl              Lot_Serial_Tbl_Type;
l_old_header_rec              Header_Rec_Type;
l_old_Header_Adj_tbl          Header_Adj_Tbl_Type;
l_old_Header_price_Att_tbl    Header_Price_Att_Tbl_Type ;
l_old_Header_Adj_Att_tbl      Header_Adj_Att_Tbl_Type ;
l_old_Header_Adj_Assoc_tbl    Header_Adj_Assoc_Tbl_Type ;
l_old_Header_Scredit_tbl      Header_Scredit_Tbl_Type;
l_old_Header_Payment_tbl      Header_Payment_Tbl_Type;
l_old_line_tbl                Line_Tbl_Type;
l_old_Line_Adj_tbl            Line_Adj_Tbl_Type;
l_old_Line_price_Att_tbl      Line_Price_Att_Tbl_Type ;
l_old_Line_Adj_Att_tbl        Line_Adj_Att_Tbl_Type ;
l_old_Line_Adj_Assoc_tbl      Line_Adj_Assoc_Tbl_Type ;
l_old_Line_Scredit_tbl        Line_Scredit_Tbl_Type;
l_old_Line_Payment_tbl        Line_Payment_Tbl_Type;
l_old_Lot_Serial_tbl          Lot_Serial_Tbl_Type;

l_aac_header_rec              OE_Order_PUB.Header_Rec_Type;
l_aac_line_tbl                OE_Order_PUB.Line_Tbl_Type;

l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
l_cust_info_tbl OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE; --ER7675548
BEGIN

    --  Standard call to check for call compatibility

    IF NOT FND_API.Compatible_API_Call
           (   l_api_version_number
           ,   p_api_version_number
           ,   l_api_name
           ,   G_PKG_NAME
           )
    THEN
        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
    END IF;


    -- Logic added for MOAC


    -- FIND Org_Id logic :
    -- We first look at p_org_id to set Context.
    -- If p_org_id passed in, we ignore p_operating_unit.
    -- If p_org_id not passed in, then we look at p_operating_unit to get org_id.
    -- If both are not passed in, we get the context from MO Get_Default_Org API.
    --
    IF (p_org_id IS NOT NULL AND p_org_id <> FND_API.G_MISS_NUM) THEN
       l_org_id :=  p_org_id;

       -- ignore p_operating_unit since p_org_id has passed in.
       -- We check if both p_org_id and p_operating_unit pass in,
       -- add a message just for the information.
       IF (p_operating_unit IS NOT NULL AND p_operating_unit <> FND_API.G_MISS_CHAR)  THEN
          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_SUCCESS)
            THEN
                fnd_message.set_name('ONT','OE_BOTH_VAL_AND_ID_EXIST');
                FND_MESSAGE.SET_TOKEN('ATTRIBUTE','operating_unit');
                OE_MSG_PUB.Add;
            END IF;
       END IF;

    ELSE
       IF (p_operating_unit IS NOT NULL AND p_operating_unit <> FND_API.G_MISS_CHAR) THEN
           -- call value_to_id to get org_id
           l_org_id := OE_Value_To_Id.OPERATING_UNIT(p_operating_unit);
       -- comment out due to new call to MO_GLOBAL.validate_orgid_pub_api
       /*
        ELSE
           -- Both p_org_id and p_operating_unit are not passed in.
           l_org_id := MO_UTILS.get_default_org_id ;
        */
        END IF;
     END IF;

    -- Validate Org_Id
    -- call new API : MO_GLOBAL.validate_orgid_pub_api
    -- Instead of calling old function - MO_GLOBAL.check_valid_org
    -- MO_GLOBAL.validate_orgid_pub_api provides backward compatibility
    -- without adding code to call MO_GLOBAL.init

   /* MO_GLOBAL.validate_orgid_pub_api
    (   ORG_ID  =>  l_org_id
     ,  Status  =>  l_return_status
    ) ;*/
    /*IF(l_return_status ='F') THEN
       -- return Failure
       raise FND_API.G_EXC_ERROR;
    END IF;*/

    -- Set Application Context
    -- Since we pass validation, we start to Set Application Context
    -- Call MO set_policy_context to set application context by sending
    -- p_access_mode ='S' (Single Operating Unit Access) and org_id
    -- Then call OE_GLOBALS.Set_Context to set OE_GLOBALS.G_ORG_ID
    --
    --MO_GLOBAL.set_policy_context('S',l_org_id);
    --OE_GLOBALS.Set_Context();
     --Moved the logic to set context to new procedure set_context
     set_context(p_org_id =>l_org_id);


    --  From now on, we are in single access mode.

    x_action_request_tbl := p_action_request_tbl;
    l_Line_Price_Att_tbl := p_Line_Price_Att_tbl; --bug3160327
    l_old_Line_Price_Att_tbl :=p_old_Line_Price_Att_tbl; --bug3160327

    --Begin bug #5679661

    l_Header_price_Att_tbl        := p_Header_price_Att_tbl ;
    l_Header_Adj_Att_tbl          := p_Header_Adj_Att_tbl ;
    l_Header_Adj_Assoc_tbl        := p_Header_Adj_Assoc_tbl ;
    l_old_Header_price_Att_tbl    := p_old_Header_price_Att_tbl ;
    l_old_Header_Adj_Att_tbl      := p_old_Header_Adj_Att_tbl ;
    l_old_Header_Adj_Assoc_tbl    := p_old_Header_Adj_Assoc_tbl ;
    l_Line_price_Att_tbl          := p_Line_price_Att_tbl ;
    l_Line_Adj_Att_tbl            := p_Line_Adj_Att_tbl ;
    l_Line_Adj_Assoc_tbl          := p_Line_Adj_Assoc_tbl ;
    l_old_Line_price_Att_tbl      := p_old_Line_price_Att_tbl ;
    l_old_Line_Adj_Att_tbl        := p_old_Line_Adj_Att_tbl ;
    l_old_Line_Adj_Assoc_tbl      := p_old_Line_Adj_Assoc_tbl ;

    --End bug #5679661


    -- automatic account creation

    -- use local variables to replace p_ paramters after AAC
    -- so value_to_id can see it
    l_aac_header_rec   := p_header_rec;
    l_aac_line_tbl     := p_line_tbl;

    IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
    THEN

       oe_debug_pub.add('calling AAC from Pub Prcoess Order');
       OE_Order_GRP.automatic_account_creation(p_header_rec     => p_header_rec,
            p_header_val_rec => p_header_val_rec,
            p_line_tbl       => p_line_tbl,
            p_line_val_tbl   => p_line_val_tbl,
            x_header_rec     => l_aac_header_Rec,
            x_line_tbl       => l_aac_line_tbl,
            x_return_status  => x_return_status,
            x_msg_count      => x_msg_count,
            x_msg_data       => x_msg_data);

    END IF;


----ER7675548
savepoint ADD_CUSTOMER_INFO;

l_cust_info_tbl := p_header_customer_info_tbl;

OE_HEADER_UTIL.Get_customer_info_ids
(
p_header_customer_info_tbl => l_cust_info_tbl,
p_x_header_rec => l_aac_header_Rec,
x_return_status => x_return_status,
x_msg_count  => x_msg_count,
x_msg_data   => x_msg_data
);

IF l_debug_level > 0 THEN
oe_debug_pub.add('Call OE_HEADER_UTIL.Get_customer_info_ids :'||x_return_status);
END IF;

IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
        RAISE FND_API.G_EXC_ERROR;
END IF;


l_cust_info_tbl := p_line_customer_info_tbl;

OE_LINE_UTIL.Get_customer_info_ids
(
p_line_customer_info_tbl => l_cust_info_tbl,
p_x_line_tbl => l_aac_line_tbl,
x_return_status => x_return_status,
x_msg_count  => x_msg_count,
x_msg_data   => x_msg_data
);

IF l_debug_level > 0 THEN
oe_debug_pub.add('Call OE_LINE_UTIL.Get_customer_info_ids :'||x_return_status);
END IF;

IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
ELSIF x_return_status = FND_API.G_RET_STS_ERROR THEN
ROLLBACK TO SAVEPOINT ADD_CUSTOMER_INFO;
        RAISE FND_API.G_EXC_ERROR;
END IF;

--ER7675548

--  Perform Value to Id conversion

    Value_To_Id
    (   x_return_status               => l_return_status
    ,   p_header_rec                  => l_aac_header_rec
    ,   p_header_val_rec              => p_header_val_rec
    ,   p_Header_Adj_tbl              => p_Header_Adj_tbl
    ,   p_Header_Adj_val_tbl          => p_Header_Adj_val_tbl
    ,   p_Header_Scredit_tbl          => p_Header_Scredit_tbl
    ,   p_Header_Scredit_val_tbl      => p_Header_Scredit_val_tbl
    ,   p_Header_Payment_tbl          => p_Header_Payment_tbl
    ,   p_Header_Payment_val_tbl      => p_Header_Payment_val_tbl
    ,   p_line_tbl                    => l_aac_line_tbl
    ,   p_line_val_tbl                => p_line_val_tbl
    ,   p_Line_Adj_tbl                => p_Line_Adj_tbl
    ,   p_Line_Adj_val_tbl            => p_Line_Adj_val_tbl
    ,   p_Line_Scredit_tbl            => p_Line_Scredit_tbl
    ,   p_Line_Scredit_val_tbl        => p_Line_Scredit_val_tbl
    ,   p_Line_Payment_tbl            => p_Line_Payment_tbl
    ,   p_Line_Payment_val_tbl        => p_Line_Payment_val_tbl
    ,   p_Lot_Serial_tbl              => p_Lot_Serial_tbl
    ,   p_Lot_Serial_val_tbl          => p_Lot_Serial_val_tbl
    ,   x_header_rec                  => l_header_rec
    ,   x_Header_Adj_tbl              => l_Header_Adj_tbl
    ,   x_Header_Scredit_tbl          => l_Header_Scredit_tbl
    ,   x_Header_Payment_tbl          => l_Header_Payment_tbl
    ,   x_line_tbl                    => l_line_tbl
    ,   x_Line_Adj_tbl                => l_Line_Adj_tbl
    ,   x_Line_Scredit_tbl            => l_Line_Scredit_tbl
    ,   x_Line_Payment_tbl            => l_Line_Payment_tbl
    ,   x_Lot_Serial_tbl              => l_Lot_Serial_tbl
    );

    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
    ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
        RAISE FND_API.G_EXC_ERROR;
    END IF;


    --  Perform Value to Id conversion (for old)

    Value_To_Id
    (   x_return_status               => l_return_status
    ,   p_header_rec                  => p_old_header_rec
    ,   p_header_val_rec              => p_old_header_val_rec
    ,   p_Header_Adj_tbl              => p_old_Header_Adj_tbl
    ,   p_Header_Adj_val_tbl          => p_old_Header_Adj_val_tbl
    ,   p_Header_Scredit_tbl          => p_old_Header_Scredit_tbl
    ,   p_Header_Scredit_val_tbl      => p_old_Header_Scredit_val_tbl
    ,   p_Header_Payment_tbl          => p_old_Header_Payment_tbl
    ,   p_Header_Payment_val_tbl      => p_old_Header_Payment_val_tbl
    ,   p_line_tbl                    => p_old_line_tbl
    ,   p_line_val_tbl                => p_old_line_val_tbl
    ,   p_Line_Adj_tbl                => p_old_Line_Adj_tbl
    ,   p_Line_Adj_val_tbl            => p_old_Line_Adj_val_tbl
    ,   p_Line_Scredit_tbl            => p_old_Line_Scredit_tbl
    ,   p_Line_Scredit_val_tbl        => p_old_Line_Scredit_val_tbl
    ,   p_Line_Payment_tbl            => p_old_Line_Payment_tbl
    ,   p_Line_Payment_val_tbl        => p_old_Line_Payment_val_tbl
    ,   p_Lot_Serial_tbl              => p_Lot_Serial_tbl
    ,   p_Lot_Serial_val_tbl          => p_Lot_Serial_val_tbl
    ,   x_header_rec                  => l_old_header_rec
    ,   x_Header_Adj_tbl              => l_old_Header_Adj_tbl
    ,   x_Header_Scredit_tbl          => l_old_Header_Scredit_tbl
    ,   x_Header_Payment_tbl          => l_old_Header_Payment_tbl
    ,   x_line_tbl                    => l_old_line_tbl
    ,   x_Line_Adj_tbl                => l_old_Line_Adj_tbl
    ,   x_Line_Scredit_tbl            => l_old_Line_Scredit_tbl
    ,   x_Line_Payment_tbl            => l_old_Line_Payment_tbl
    ,   x_Lot_Serial_tbl              => l_Lot_Serial_tbl
    );

    IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
    ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
        RAISE FND_API.G_EXC_ERROR;
    END IF;

    --added for bug 3390458
    IF p_rtrim_data ='Y'
    THEN
       OE_ORDER_GRP.RTrim_data
          (  p_x_header_rec => l_header_rec
           , p_x_line_tbl => l_line_tbl
           , x_return_status =>x_return_status);
    END IF;

    OE_GLOBALS.g_validate_desc_flex :=p_validate_desc_flex; --bug 4343612
    --  Call OE_Order_PVT.Process_Order
  -- sol_ord_er #16014165 start
  /* System Parameter "OM: Subscription Item Line Behavior" needs to be honored only from UI */
  If l_line_tbl.count > 0 THEN
    For i in l_line_tbl.first .. l_line_tbl.last
  LOOP
   If (l_line_tbl(i).operation = OE_GLOBALS.G_OPR_CREATE
      or l_line_tbl(i).operation = OE_GLOBALS.G_OPR_INSERT)
      AND NVL(l_line_tbl(i).subscription_enable_flag,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR THEN
     l_line_tbl(i).subscription_enable_flag := 'N';
   End If;
  End LOOP;
  End If;
  -- sol_ord_er #16014165 end

    OE_Order_PVT.Process_Order
    (   p_api_version_number          => 1.0
    ,   p_init_msg_list               => p_init_msg_list
    ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
    ,   p_action_commit               => p_action_commit
    ,   x_return_status               => x_return_status
    ,   x_msg_count                   => x_msg_count
    ,   x_msg_data                    => x_msg_data
    ,   p_control_rec                 => l_control_rec
    ,   p_x_header_rec                => l_header_rec
    ,   p_old_header_rec              => l_old_header_rec
    ,   p_x_Header_Adj_tbl            => l_Header_Adj_tbl
    ,   p_old_Header_Adj_tbl          => l_old_Header_Adj_tbl
    ,   p_x_Header_Price_Att_tbl      => l_Header_Price_Att_tbl
    ,   p_old_Header_Price_Att_tbl    => l_old_Header_Price_Att_tbl
    ,   p_x_Header_Adj_Att_tbl       => l_Header_Adj_Att_tbl
    ,   p_old_Header_Adj_Att_tbl      => l_old_Header_Adj_Att_tbl
    ,   p_x_Header_Adj_Assoc_tbl      => l_Header_Adj_Assoc_tbl
    ,   p_old_Header_Adj_Assoc_tbl    => l_old_Header_Adj_Assoc_tbl
    ,   p_x_Header_Scredit_tbl        => l_Header_Scredit_tbl
    ,   p_old_Header_Scredit_tbl      => l_old_Header_Scredit_tbl
    ,   p_x_Header_Payment_tbl        => l_Header_Payment_tbl
    ,   p_old_Header_Payment_tbl      => l_old_Header_Payment_tbl
    ,   p_x_line_tbl                  => l_line_tbl
    ,   p_old_line_tbl                => l_old_line_tbl
    ,   p_x_Line_Adj_tbl              => l_Line_Adj_tbl
    ,   p_old_Line_Adj_tbl            => l_old_Line_Adj_tbl
    ,   p_x_Line_Price_Att_tbl       => l_Line_Price_Att_tbl
    ,   p_old_Line_Price_Att_tbl      => l_old_Line_Price_Att_tbl
    ,   p_x_Line_Adj_Att_tbl       => l_Line_Adj_Att_tbl
    ,   p_old_Line_Adj_Att_tbl       => l_old_Line_Adj_Att_tbl
    ,   p_x_Line_Adj_Assoc_tbl       => l_Line_Adj_Assoc_tbl
    ,   p_old_Line_Adj_Assoc_tbl      => l_old_Line_Adj_Assoc_tbl
    ,   p_x_Line_Scredit_tbl          => l_Line_Scredit_tbl
    ,   p_old_Line_Scredit_tbl        => l_old_Line_Scredit_tbl
    ,   p_x_Line_Payment_tbl          => l_Line_Payment_tbl
    ,   p_old_Line_Payment_tbl        => l_old_Line_Payment_tbl
    ,   p_x_Lot_Serial_tbl            => l_Lot_Serial_tbl
    ,   p_old_Lot_Serial_tbl          => l_old_Lot_Serial_tbl
    ,   p_x_action_request_tbl       => x_action_request_tbl
    );

    --  Load Id OUT NOCOPY /* file.sql.39 change */ parameters.

    x_header_rec                   := l_header_rec;
    x_Header_Adj_tbl               := l_Header_Adj_tbl;
    x_Header_Price_Att_tbl    := l_Header_Price_Att_tbl;
    x_Header_Adj_Att_tbl    := l_Header_Adj_Att_tbl;
    x_Header_Adj_Assoc_tbl    := l_Header_Adj_Assoc_tbl;
    x_Header_Scredit_tbl           := l_Header_Scredit_tbl;
    x_Header_Payment_tbl           := l_Header_Payment_tbl;
    x_line_tbl                     := l_line_tbl;
    x_Line_Adj_tbl                 := l_Line_Adj_tbl;
    x_Line_Price_Att_tbl    := l_Line_Price_Att_tbl;
    x_Line_Adj_Att_tbl     := l_Line_Adj_Att_tbl;
    x_Line_Adj_Assoc_tbl    := l_Line_Adj_Assoc_tbl;
    x_Line_Scredit_tbl             := l_Line_Scredit_tbl;
    x_Line_Payment_tbl             := l_Line_Payment_tbl;
    x_Lot_Serial_tbl               := l_Lot_Serial_tbl;

    --  If p_return_values is TRUE then convert Ids to Values.

    IF FND_API.to_Boolean(p_return_values) THEN

        Id_To_Value
        (   p_header_rec                  => l_header_rec
        ,   p_Header_Adj_tbl              => l_Header_Adj_tbl
        ,   p_Header_Scredit_tbl          => l_Header_Scredit_tbl
        ,   p_Header_Payment_tbl          => l_Header_Payment_tbl
        ,   p_line_tbl                    => l_line_tbl
        ,   p_Line_Adj_tbl                => l_Line_Adj_tbl
        ,   p_Line_Scredit_tbl            => l_Line_Scredit_tbl
        ,   p_Line_Payment_tbl            => l_Line_Payment_tbl
        ,   p_Lot_Serial_tbl              => l_Lot_Serial_tbl
        ,   x_header_val_rec              => x_header_val_rec
        ,   x_Header_Adj_val_tbl          => x_Header_Adj_val_tbl
        ,   x_Header_Scredit_val_tbl      => x_Header_Scredit_val_tbl
,   x_Header_Payment_val_tbl      => x_Header_Payment_val_tbl
        ,   x_line_val_tbl                => x_line_val_tbl
        ,   x_Line_Adj_val_tbl            => x_Line_Adj_val_tbl
        ,   x_Line_Scredit_val_tbl        => x_Line_Scredit_val_tbl
,   x_Line_Payment_val_tbl        => x_Line_Payment_val_tbl
        ,   x_Lot_Serial_val_tbl          => x_Lot_Serial_val_tbl
        );

    END IF;

EXCEPTION

    WHEN FND_API.G_EXC_ERROR THEN

        x_return_status := FND_API.G_RET_STS_ERROR;

        --  Get message count and data

        OE_MSG_PUB.Count_And_Get
        (   p_count                       => x_msg_count
        ,   p_data                        => x_msg_data
        );

    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN

        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;

        --  Get message count and data

        OE_MSG_PUB.Count_And_Get
        (   p_count                       => x_msg_count
        ,   p_data                        => x_msg_data
        );

    WHEN OTHERS THEN

        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;

        IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
        THEN
            OE_MSG_PUB.Add_Exc_Msg
            (   G_PKG_NAME
            ,   'Process_Order'
            );
        END IF;

        --  Get message count and data

        OE_MSG_PUB.Count_And_Get
        (   p_count                       => x_msg_count
        ,   p_data                        => x_msg_data
        );

END Process_Order;


PROCEDURE Process_Order
(   p_org_id                        IN  NUMBER := NULL  --MOAC
,   p_operating_unit                IN  VARCHAR2 := NULL -- MOAC
,   p_api_version_number            IN  NUMBER
,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
,   p_action_commit                 IN  VARCHAR2 := FND_API.G_FALSE
,   x_return_status                 OUT NOCOPY /* file.sql.39 change */ VARCHAR2
,   x_msg_count                     OUT NOCOPY /* file.sql.39 change */ NUMBER
,   x_msg_data                      OUT NOCOPY /* file.sql.39 change */ VARCHAR2
,   p_header_rec                    IN  Header_Rec_Type :=
                                        G_MISS_HEADER_REC
,   p_old_header_rec                IN  Header_Rec_Type :=
                                        G_MISS_HEADER_REC
,   p_header_val_rec                IN  Header_Val_Rec_Type :=
                                        G_MISS_HEADER_VAL_REC
,   p_old_header_val_rec            IN  Header_Val_Rec_Type :=
                                        G_MISS_HEADER_VAL_REC
,   p_Header_Adj_tbl                IN  Header_Adj_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_TBL
,   p_old_Header_Adj_tbl            IN  Header_Adj_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_TBL
,   p_Header_Adj_val_tbl            IN  Header_Adj_Val_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_VAL_TBL
,   p_old_Header_Adj_val_tbl        IN  Header_Adj_Val_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_VAL_TBL
,   p_Header_price_Att_tbl          IN  Header_Price_Att_Tbl_Type :=
                                        G_MISS_HEADER_PRICE_ATT_TBL
,   p_old_Header_Price_Att_tbl      IN  Header_Price_Att_Tbl_Type :=
                                        G_MISS_HEADER_PRICE_ATT_TBL
,   p_Header_Adj_Att_tbl            IN  Header_Adj_Att_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_ATT_TBL
,   p_old_Header_Adj_Att_tbl        IN  Header_Adj_Att_Tbl_Type :=
    G_MISS_HEADER_ADJ_ATT_TBL
,   p_Header_Adj_Assoc_tbl            IN  Header_Adj_Assoc_Tbl_Type :=
                                        G_MISS_HEADER_ADJ_ASSOC_TBL
,   p_old_Header_Adj_Assoc_tbl        IN  Header_Adj_Assoc_Tbl_Type :=
    G_MISS_HEADER_ADJ_ASSOC_TBL
,   p_Header_Scredit_tbl            IN  Header_Scredit_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_TBL
,   p_old_Header_Scredit_tbl        IN  Header_Scredit_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_TBL
,   p_Header_Scredit_val_tbl        IN  Header_Scredit_Val_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_VAL_TBL
,   p_old_Header_Scredit_val_tbl    IN  Header_Scredit_Val_Tbl_Type :=
                                        G_MISS_HEADER_SCREDIT_VAL_TBL
,   p_line_tbl                      IN  Line_Tbl_Type :=
                                        G_MISS_LINE_TBL
,   p_old_line_tbl                  IN  Line_Tbl_Type :=
                                        G_MISS_LINE_TBL
,   p_line_val_tbl                  IN  Line_Val_Tbl_Type :=
                                        G_MISS_LINE_VAL_TBL
,   p_old_line_val_tbl              IN  Line_Val_Tbl_Type :=
                                        G_MISS_LINE_VAL_TBL
,   p_Line_Adj_tbl                  IN  Line_Adj_Tbl_Type :=
                                        G_MISS_LINE_ADJ_TBL
,   p_old_Line_Adj_tbl              IN  Line_Adj_Tbl_Type :=
                                        G_MISS_LINE_ADJ_TBL
,   p_Line_Adj_val_tbl              IN  Line_Adj_Val_Tbl_Type :=
                                        G_MISS_LINE_ADJ_VAL_TBL
,   p_old_Line_Adj_val_tbl          IN  Line_Adj_Val_Tbl_Type :=
                                        G_MISS_LINE_ADJ_VAL_TBL
,   p_Line_price_Att_tbl            IN  Line_Price_Att_Tbl_Type :=
                                        G_MISS_LINE_PRICE_ATT_TBL
,   p_old_Line_Price_Att_tbl        IN  Line_Price_Att_Tbl_Type :=
                                        G_MISS_LINE_PRICE_ATT_TBL
,   p_Line_Adj_Att_tbl              IN  Line_Adj_Att_Tbl_Type :=
                                        G_MISS_LINE_ADJ_ATT_TBL
,   p_old_Line_Adj_Att_tbl          IN  Line_Adj_Att_Tbl_Type :=
    G_MISS_LINE_ADJ_ATT_TBL
,   p_Line_Adj_Assoc_tbl              IN  Line_Adj_Assoc_Tbl_Type :=
                                        G_MISS_LINE_ADJ_ASSOC_TBL
,   p_old_Line_Adj_Assoc_tbl          IN  Line_Adj_Assoc_Tbl_Type :=
    G_MISS_LINE_ADJ_ASSOC_TBL
,   p_Line_Scredit_tbl              IN  Line_Scredit_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_TBL
,   p_old_Line_Scredit_tbl          IN  Line_Scredit_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_TBL
,   p_Line_Scredit_val_tbl          IN  Line_Scredit_Val_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_VAL_TBL
,   p_old_Line_Scredit_val_tbl      IN  Line_Scredit_Val_Tbl_Type :=
                                        G_MISS_LINE_SCREDIT_VAL_TBL
,   p_Lot_Serial_tbl                IN  Lot_Serial_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_TBL
,   p_old_Lot_Serial_tbl            IN  Lot_Serial_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_TBL
,   p_Lot_Serial_val_tbl            IN  Lot_Serial_Val_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_VAL_TBL
,   p_old_Lot_Serial_val_tbl        IN  Lot_Serial_Val_Tbl_Type :=
                                        G_MISS_LOT_SERIAL_VAL_TBL
,   p_action_request_tbl     IN  Request_Tbl_Type :=
     G_MISS_REQUEST_TBL
,   x_header_rec                    OUT NOCOPY /* file.sql.39 change */ Header_Rec_Type
,   x_header_val_rec                OUT NOCOPY /* file.sql.39 change */ Header_Val_Rec_Type
,   x_Header_Adj_tbl                OUT NOCOPY /* file.sql.39 change */ Header_Adj_Tbl_Type
,   x_Header_Adj_val_tbl            OUT NOCOPY /* file.sql.39 change */ Header_Adj_Val_Tbl_Type
,   x_Header_price_Att_tbl          OUT NOCOPY /* file.sql.39 change */ Header_Price_Att_Tbl_Type
,   x_Header_Adj_Att_tbl            OUT NOCOPY /* file.sql.39 change */ Header_Adj_Att_Tbl_Type
,   x_Header_Adj_Assoc_tbl          OUT NOCOPY /* file.sql.39 change */ Header_Adj_Assoc_Tbl_Type
,   x_Header_Scredit_tbl            OUT NOCOPY /* file.sql.39 change */ Header_Scredit_Tbl_Type
,   x_Header_Scredit_val_tbl        OUT NOCOPY /* file.sql.39 change */ Header_Scredit_Val_Tbl_Type
,   x_line_tbl                      OUT NOCOPY /* file.sql.39 change */ Line_Tbl_Type
,   x_line_val_tbl                  OUT NOCOPY /* file.sql.39 change */ Line_Val_Tbl_Type
,   x_Line_Adj_tbl                  OUT NOCOPY /* file.sql.39 change */ Line_Adj_Tbl_Type
,   x_Line_Adj_val_tbl              OUT NOCOPY /* file.sql.39 change */ Line_Adj_Val_Tbl_Type
,   x_Line_price_Att_tbl            OUT NOCOPY /* file.sql.39 change */ Line_Price_Att_Tbl_Type
,   x_Line_Adj_Att_tbl              OUT NOCOPY /* file.sql.39 change */ Line_Adj_Att_Tbl_Type
,   x_Line_Adj_Assoc_tbl            OUT NOCOPY /* file.sql.39 change */ Line_Adj_Assoc_Tbl_Type
,   x_Line_Scredit_tbl              OUT NOCOPY /* file.sql.39 change */ Line_Scredit_Tbl_Type
,   x_Line_Scredit_val_tbl          OUT NOCOPY /* file.sql.39 change */ Line_Scredit_Val_Tbl_Type
,   x_Lot_Serial_tbl                OUT NOCOPY /* file.sql.39 change */ Lot_Serial_Tbl_Type
,   x_Lot_Serial_val_tbl            OUT NOCOPY /* file.sql.39 change */ Lot_Serial_Val_Tbl_Type
,   x_action_request_tbl     OUT NOCOPY /* file.sql.39 change */ Request_Tbl_Type
--For bug 3390458
,   p_rtrim_data                    IN  Varchar2 :='N'
,   p_validate_desc_flex            in varchar2 default 'Y'  --bug4343612
--ER7675548
,   p_header_customer_info_tbl      IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
                                         OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
,   p_line_customer_info_tbl      IN OE_ORDER_PUB.CUSTOMER_INFO_TABLE_TYPE :=
                                       OE_ORDER_PUB.G_MISS_CUSTOMER_INFO_TBL
)
IS
l_api_version_number          CONSTANT NUMBER := 1.0;
l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Order';
l_control_rec                 OE_GLOBALS.Control_Rec_Type;
l_return_status               VARCHAR2(1);
l_header_rec                  Header_Rec_Type;
l_Header_Adj_tbl              Header_Adj_Tbl_Type;
l_Header_price_Att_tbl        Header_Price_Att_Tbl_Type ;
l_Header_Adj_Att_tbl          Header_Adj_Att_Tbl_Type ;
l_Header_Adj_Assoc_tbl        Header_Adj_Assoc_Tbl_Type ;
l_Header_Scredit_tbl          Header_Scredit_Tbl_Type;
l_line_tbl                    Line_Tbl_Type;
l_Line_Adj_tbl                Line_Adj_Tbl_Type;
l_Line_price_Att_tbl          Line_Price_Att_Tbl_Type ;
l_Line_Adj_Att_tbl            Line_Adj_Att_Tbl_Type ;
l_Line_Adj_Assoc_tbl          Line_Adj_Assoc_Tbl_Type ;
l_Line_Scredit_tbl            Line_Scredit_Tbl_Type;
l_Lot_Serial_tbl              Lot_Serial_Tbl_Type;
l_old_header_rec              Header_Rec_Type;
l_old_Header_Adj_tbl          Header_Adj_Tbl_Type;
l_old_Header_price_Att_tbl    Header_Price_Att_Tbl_Type ;
l_old_Header_Adj_Att_tbl      Header_Adj_Att_Tbl_Type ;
l_old_Header_Adj_Assoc_tbl    Header_Adj_Assoc_Tbl_Type ;
l_old_Header_Scredit_tbl      Header_Scredit_Tbl_Type;
l_old_line_tbl                Line_Tbl_Type;
l_old_Line_Adj_tbl            Line_Adj_Tbl_Type;
l_old_Line_price_Att_tbl      Line_Price_Att_Tbl_Type ;
l_old_Line_Adj_Att_tbl        Line_Adj_Att_Tbl_Type ;
l_old_Line_Adj_Assoc_tbl      Line_Adj_Assoc_Tbl_Type ;
l_old_Line_Scredit_tbl        Line_Scredit_Tbl_Type;
l_old_Lot_Serial_tbl          Lot_Serial_Tbl_Type;
x_Header_Payment_tbl          Header_Payment_Tbl_Type;
x_Header_Payment_val_tbl      Header_Payment_Val_Tbl_Type;
x_Line_Payment_tbl            Line_Payment_Tbl_Type;
x_Line_Payment_val_tbl        Line_Payment_Val_Tbl_Type;

BEGIN

-- Call over loaded process_order to pass payment tables

       Process_Order
(   p_org_id                            => p_org_id --MOAC
,   p_operating_unit                    => p_operating_unit
,   p_api_version_number             => p_api_version_number
,   p_init_msg_list                  => p_init_msg_list
,   p_return_values                  => p_return_values
,   p_action_commit                 => p_action_commit
,   x_return_status                  => x_return_status
,   x_msg_count                      => x_msg_count
,   x_msg_data                       => x_msg_data
,   p_header_rec                     => p_header_rec
,   p_old_header_rec                 => p_old_header_rec
,   p_header_val_rec                 => p_header_val_rec
,   p_old_header_val_rec             => p_old_header_val_rec
,   p_Header_Adj_tbl                 => p_Header_Adj_tbl
,   p_old_Header_Adj_tbl             => p_old_Header_Adj_tbl
,   p_Header_Adj_val_tbl             => p_Header_Adj_val_tbl
,   p_old_Header_Adj_val_tbl            => p_old_Header_Adj_val_tbl
,   p_Header_price_Att_tbl              => p_Header_price_Att_tbl
,   p_old_Header_Price_Att_tbl          => p_old_Header_Price_Att_tbl
,   p_Header_Adj_Att_tbl                => p_Header_Adj_Att_tbl
,   p_old_Header_Adj_Att_tbl            => p_old_Header_Adj_Att_tbl
,   p_Header_Adj_Assoc_tbl              => p_Header_Adj_Assoc_tbl
,   p_old_Header_Adj_Assoc_tbl          => p_old_Header_Adj_Assoc_tbl
,   p_Header_Scredit_tbl             => p_Header_Scredit_tbl
,   p_old_Header_Scredit_tbl            => p_old_Header_Scredit_tbl
,   p_Header_Scredit_val_tbl            => p_Header_Scredit_val_tbl
,   p_old_Header_Scredit_val_tbl        => p_old_Header_Scredit_val_tbl
,   p_Header_Payment_tbl             => G_MISS_HEADER_PAYMENT_TBL
,   p_old_Header_Payment_tbl            => G_MISS_HEADER_PAYMENT_TBL
,   p_Header_Payment_val_tbl            => G_MISS_HEADER_PAYMENT_VAL_TBL
,   p_old_Header_Payment_val_tbl        => G_MISS_HEADER_PAYMENT_VAL_TBL
,   p_line_tbl                       => p_line_tbl
,   p_old_line_tbl                   => p_old_line_tbl
,   p_line_val_tbl                   => p_line_val_tbl
,   p_old_line_val_tbl               => p_old_line_val_tbl
,   p_Line_Adj_tbl                   => p_Line_Adj_tbl
,   p_old_Line_Adj_tbl               => p_old_Line_Adj_tbl
,   p_Line_Adj_val_tbl               => p_Line_Adj_val_tbl
,   p_old_Line_Adj_val_tbl           => p_old_Line_Adj_val_tbl
,   p_Line_price_Att_tbl                => p_Line_price_Att_tbl
,   p_old_Line_Price_Att_tbl            => p_old_Line_Price_Att_tbl
,   p_Line_Adj_Att_tbl                  => p_Line_Adj_Att_tbl
,   p_old_Line_Adj_Att_tbl              => p_old_Line_Adj_Att_tbl
,   p_Line_Adj_Assoc_tbl                => p_Line_Adj_Assoc_tbl
,   p_old_Line_Adj_Assoc_tbl            => p_old_Line_Adj_Assoc_tbl
,   p_Line_Scredit_tbl               => p_Line_Scredit_tbl
,   p_old_Line_Scredit_tbl           => p_old_Line_Scredit_tbl
,   p_Line_Scredit_val_tbl           => p_Line_Scredit_val_tbl
,   p_old_Line_Scredit_val_tbl       => p_old_Line_Scredit_val_tbl
,   p_Line_Payment_tbl             => G_MISS_LINE_PAYMENT_TBL
,   p_old_Line_Payment_tbl              => G_MISS_LINE_PAYMENT_TBL
,   p_Line_Payment_val_tbl              => G_MISS_LINE_PAYMENT_VAL_TBL
,   p_old_Line_Payment_val_tbl          => G_MISS_LINE_PAYMENT_VAL_TBL
,   p_Lot_Serial_tbl               => p_Lot_Serial_tbl
,   p_old_Lot_Serial_tbl           => p_old_Lot_Serial_tbl
,   p_Lot_Serial_val_tbl           => p_Lot_Serial_val_tbl
,   p_old_Lot_Serial_val_tbl       => p_old_Lot_Serial_val_tbl
,   p_action_request_tbl                => p_action_request_tbl
,   x_header_rec                     => x_header_rec
,   x_header_val_rec                 => x_header_val_rec
,   x_Header_Adj_tbl                 => x_Header_Adj_tbl
,   x_Header_Adj_val_tbl             => x_Header_Adj_val_tbl
,   x_Header_price_Att_tbl              => x_Header_price_Att_tbl
,   x_Header_Adj_Att_tbl                => x_Header_Adj_Att_tbl
,   x_Header_Adj_Assoc_tbl              => x_Header_Adj_Assoc_tbl
,   x_Header_Scredit_tbl             => x_Header_Scredit_tbl
,   x_Header_Scredit_val_tbl         => x_Header_Scredit_val_tbl
,   x_Header_Payment_tbl             => x_Header_Payment_tbl
,   x_Header_Payment_val_tbl         => x_Header_Payment_val_tbl
,   x_line_tbl                    => x_line_tbl
,   x_line_val_tbl                   => x_line_val_tbl
,   x_Line_Adj_tbl                   => x_Line_Adj_tbl
,   x_Line_Adj_val_tbl               => x_Line_Adj_val_tbl
,   x_Line_price_Att_tbl                => x_Line_price_Att_tbl
,   x_Line_Adj_Att_tbl                  => x_Line_Adj_Att_tbl
,   x_Line_Adj_Assoc_tbl                => x_Line_Adj_Assoc_tbl
,   x_Line_Scredit_tbl               => x_Line_Scredit_tbl
,   x_Line_Scredit_val_tbl           => x_Line_Scredit_val_tbl
,   x_Line_Payment_tbl               => x_Line_Payment_tbl
,   x_Line_Payment_val_tbl           => x_Line_Payment_val_tbl
,   x_Lot_Serial_tbl                    => x_Lot_Serial_tbl
,   x_Lot_Serial_Val_tbl                => x_Lot_Serial_Val_tbl
,   x_action_request_tbl         => x_action_request_tbl
--For bug 3390458
,   p_rtrim_data                        =>p_rtrim_data
,   p_validate_desc_flex                =>p_validate_desc_flex --for bug4343612
--ER7675548
,   p_header_customer_info_tbl         =>p_header_customer_info_tbl
,   p_line_customer_info_tbl           =>p_line_customer_info_tbl
);


EXCEPTION

    WHEN FND_API.G_EXC_ERROR THEN

        x_return_status := FND_API.G_RET_STS_ERROR;

        --  Get message count and data

        OE_MSG_PUB.Count_And_Get
        (   p_count                       => x_msg_count
        ,   p_data                        => x_msg_data
        );

    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN

        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;

        --  Get message count and data

        OE_MSG_PUB.Count_And_Get
        (   p_count                       => x_msg_count
        ,   p_data                        => x_msg_data
        );

    WHEN OTHERS THEN

        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;

        IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
        THEN
            OE_MSG_PUB.Add_Exc_Msg
            (   G_PKG_NAME
            ,   'Process_Order'
            );
        END IF;

        --  Get message count and data

        OE_MSG_PUB.Count_And_Get
        (   p_count                       => x_msg_count
        ,   p_data                        => x_msg_data
        );

END Process_Order;


=========================================
step - 2

=========================================
create or replace
PROCEDURE TEST_CONTI_PRC(p_header_id NUMBER,
p_line_id NUMBER,
p_SHIPPING_METHOD_CODE VARCHAR2)
IS
l_header_rec apps.OE_ORDER_PUB.Header_Rec_Type;
l_line_tbl apps.OE_ORDER_PUB.Line_Tbl_Type;
l_action_request_tbl apps.OE_ORDER_PUB.Request_Tbl_Type;
l_header_adj_tbl apps.OE_ORDER_PUB.Header_Adj_Tbl_Type;
l_line_adj_tbl apps.OE_ORDER_PUB.line_adj_tbl_Type;
l_header_scr_tbl apps.OE_ORDER_PUB.Header_Scredit_Tbl_Type;
l_line_scredit_tbl apps.OE_ORDER_PUB.Line_Scredit_Tbl_Type;
l_request_rec apps.OE_ORDER_PUB.Request_Rec_Type ;
l_return_status VARCHAR2(1000);
l_msg_count NUMBER;
l_msg_data VARCHAR2(1000);
l_msg_index_out NUMBER;
p_api_version_number NUMBER :=1.0;
p_init_msg_list VARCHAR2(10) := apps.FND_API.G_FALSE;
p_return_values VARCHAR2(10) := apps.FND_API.G_FALSE;
p_action_commit VARCHAR2(10) := apps.FND_API.G_FALSE;
x_return_status VARCHAR2(1);
x_msg_count NUMBER;
x_msg_data VARCHAR2(100);
x_header_rec apps.OE_ORDER_PUB.Header_Rec_Type := apps.OE_ORDER_PUB.G_MISS_HEADER_REC;
x_header_val_rec apps.OE_ORDER_PUB.Header_Val_Rec_Type;
x_Header_Adj_tbl apps.OE_ORDER_PUB.Header_Adj_Tbl_Type;
x_Header_Adj_val_tbl apps.OE_ORDER_PUB.Header_Adj_Val_Tbl_Type;
x_Header_price_Att_tbl apps.OE_ORDER_PUB.Header_Price_Att_Tbl_Type;
x_Header_Adj_Att_tbl apps.OE_ORDER_PUB.Header_Adj_Att_Tbl_Type;
x_Header_Adj_Assoc_tbl apps.OE_ORDER_PUB.Header_Adj_Assoc_Tbl_Type;
x_Header_Scredit_tbl apps.OE_ORDER_PUB.Header_Scredit_Tbl_Type;
x_Header_Scredit_val_tbl apps.OE_ORDER_PUB.Header_Scredit_Val_Tbl_Type;
x_line_tbl apps.OE_ORDER_PUB.Line_Tbl_Type;
x_line_val_tbl apps.OE_ORDER_PUB.Line_Val_Tbl_Type;
x_Line_Adj_tbl apps.OE_ORDER_PUB.Line_Adj_Tbl_Type;
x_Line_Adj_val_tbl apps.OE_ORDER_PUB.Line_Adj_Val_Tbl_Type;
x_Line_price_Att_tbl apps.OE_ORDER_PUB.Line_Price_Att_Tbl_Type;
x_Line_Adj_Att_tbl apps.OE_ORDER_PUB.Line_Adj_Att_Tbl_Type;
x_Line_Adj_Assoc_tbl apps.OE_ORDER_PUB.Line_Adj_Assoc_Tbl_Type;
x_Line_Scredit_tbl apps.OE_ORDER_PUB.Line_Scredit_Tbl_Type;
x_Line_Scredit_val_tbl apps.OE_ORDER_PUB.Line_Scredit_Val_Tbl_Type;
x_Lot_Serial_tbl apps.OE_ORDER_PUB.Lot_Serial_Tbl_Type;
x_Lot_Serial_val_tbl apps.OE_ORDER_PUB.Lot_Serial_Val_Tbl_Type;
x_action_request_tbl apps.OE_ORDER_PUB.Request_Tbl_Type;
ln_user_id NUMBER;
X_DEBUG VARCHAR2(100);
ln_test VARCHAR2(100) := NULL;
lx_line_rec apps.OE_Order_PUB.Line_Rec_Type;
ln_book NUMBER := 0;   
lv_ship_method OE_SHIP_METHODS_V.meaning%type;
                   
BEGIN

dbms_output.enable(1000000);
FND_GLOBAL.APPS_INITIALIZE(
      user_id      => 2858
  ,  resp_id      => 50648
  ,  resp_appl_id => 20011);
mo_global.init('ONT');

apps.MO_GLOBAL.SET_POLICY_CONTEXT('S',82);


l_line_tbl(1) := apps.OE_ORDER_PUB.G_MISS_LINE_REC;

l_line_tbl(1).header_id := p_header_id;
l_line_tbl(1).line_id := p_line_id;


BEGIN
SELECT fl.description , adr.contingency_id, sm.lookup_code, fl.tag INTO
lv_ship_method, l_line_tbl(1).contingency_id,l_line_tbl (1).shipping_method_code, l_line_tbl (1).REVREC_EXPIRATION_DAYS from
      fnd_lookup_values fl,
      AR_DEFERRAL_REASONS adr, oe_ship_methods_v sm
      WHERE adr.contingency_name=fl.description
      --and upper(sm.meaning)=fl.lookup_code
      and sm.meaning=fl.meaning
      AND fl.lookup_type ='GEAR_ACCEPTANCE_S_MAP_APL_LT'
      AND  fl.meaning= p_SHIPPING_METHOD_CODE
    --AND sm.lookup_code=p_SHIPPING_METHOD_CODE
      AND fl.language      = 'US'
      AND fl.enabled_flag  = 'Y'
      AND sm.enabled_flag='Y'
      AND TRUNC (SYSDATE) BETWEEN TRUNC(NVL ( sm.start_date_active,SYSDATE)) AND TRUNC(NVL (sm.end_date_active,SYSDATE+ 1))
   

Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 13 2014
Added on Jul 15 2014
5 comments
1,588 views