ATG10.1 - Unable to confirm an order with Order Discount type promotion

Hi,
I have created a promotion in ATG10.1. The promotion is an Order Discount type and i have configured a %off on the offer. Starting ATG10 we need to choose a template for configuring the promotion and then apply the rules and offer on it. I chose the Advanced condition and offer template and configured the rules and the offer.
Our requirement is to access the discountType property of the promotion applied on the order in a processor that gets executed in the processOrder pipeline. We have additional business logic in the processor depending on the discountType offered in the promotion. When we try to access the property we get an illegal argument exception. This is because the promotion that is being created is of super-type Order Discount whereas the discountType property is at the sub-type level.
We are accessing the property as below.
List<PricingAdjustment> pricingAdjustments = pOrder.getPriceInfo().getAdjustments();
for (PricingAdjustment pricingAdjustment : pricingAdjustments) {
RepositoryItem promotion = pricingAdjustment.getPricingModel();
String discountType = promotion.getPropertyValue("discountType");
Exception:
java.lang.IllegalArgumentException: Attempt to get a property value named discountType from item-descriptor type Order Discount
Any pointers or suggestions to fix this error would be helpful.
Thanks,
Srikanth

Yes, you are correct that discountType is defined at sub-type level. But if there is an entry in sub-type level, there is also an entry in the main "promotion" item-descriptor. PricingModel is nothing but main promotion repository item.
From the promotion ( pricingModel) repositoryItem, get the type ( type is a property defined at super level which says if this item is of type order discount, item dsicount or shipping discount. This type is not discountType ). Once you get the type value, call catalogRepository for that sub-type of promotion to get sub-type's repository item which contains the actual discountType.
From ATG 10 onwards, merchandising UI changed completely and sub types are not present. Templates are just for merchandising UI. But that should not effect your piece of code in the pipeline processors in processOrder pipeline chain. If you look at my above pseudo code, im getting the type, then querying catalog repository to get the sub-type repository item and then getting the discountType.
-karthik

Similar Messages

  • Unable to confirm transfer order due to error message "enter a storage unit

    Hi guys:
    I am unable to confirm transfer order due to error message popping up and saying "enter a storage unit", and I tried to search it in whole thread in the forum,it was suggestion to pick up destination storage unit via ls24, but I did went to ls24 and trying to click that line(transfer order) but unable to find the storage unit, so is there another way to fix it?

    Hi Allen...
    Pls check if your Storage Type is SU Active. If yes, then system will create a storage unit according to the setting done for the storage unit management, perhaps in your case you are confirmin TO for the putaway.
    Pls confirm and revert
    Regards
    Shiva

  • Auomatic TO creation and confirmation from PCN with 321 MVT type

    Dear Friends,
    I am facing following WM issue, Kindly go through it and reply me with your valuable solution.
    In my plant QM is active, so while receiving goods against any Purchase Order (MVT TYPE 101), all my stock goes to quality. After UD check, 99% material move to unrestrictd stock (321 mvt.type) and 1% used for quality (331 mvt. type).
    For an example if I have received 1000 kg material (which initially goes to quality), after UD 995 kg material come to unrestricted stock and 5 kg used for quality check.
    In my existing system for material document with mvt. type 321, one PCN is generated in the background, and using LT05 we make TO from PCN and confirm it.
    But is it posible to create the TO and confirm from the PCN (Mvt. 321) in the backgroung itself, i mean to say that while my QM user is doing UD, material document with mvt 321, one PCN and TO will be generated and TO will be confirmd in the background itself.
    I don't want to use LT05  separetely to make TO from PCN.
    Please reply me soon.

    You need to make the config settings here in ur system.
    SPRO > Logistics execution >  WM > Interfaces > Inventory Management > Activate Automatic TO Creation
    Assign the relevent setting to movement types...
    Hope thsi helps
    Thanks & regards
    AHP

  • How to verify the order discounted by promotion or coupon

    Customer has placed some order then how can we confirm that placed order has been discounted by promotion(item level,order level) or by the coupon code.

    As mentioned in previous post by krish k , you can easily check in ACC , Purchases and Payment -- Order -- find with order id.
    Or  you could query against database, using simple sql like this (dont want to complicate with joins)
    - get Order Id for the Order.
    - select * from dcspp_order where order_id=10000; (OrderID)
    -  get PriceInfo value from above result (lets say you got 'ai1234'  )
    - then select * from dcspp_amount_info where amount_info_id='ai1234';
    - select * from dcspp_order_price where amount_info_id='ai1234';
    For adjustments
    select * from dcspp_amtinfo_adj where amount_info_id='ai1234'; (get adjustment id from this result, lets say you got 'pa1234' , this will return list if you got multiple adjustment )
    select * from dcspp_price_adjust where adjustment_id='pa1234';
    Similarly you could do for item pricing , tax and ship.
    Thanks,
    Samdani
    Please mark Correct/Helpful for answering your question if it is.

  • Unable to confirm process orders

    Hi,
    I am getting an error - No open operations requiring confirmations exist for the order.
    In the control key, I have selected 2 (confirmation required) in the confirmations indicator.
    In the confirmation parameters, I have + confirmable operations checkbox ticked.
    Are there any settings I have missed? I appreciate your help.

    Hi
    Please go and check operation
    u have to add operation in order
    do u have recipe for material in order
    Please tell me if u face any problem
    please reward points
    Sunil

  • Unable to set a variable with value of type number from SelectOneChoice

    Hi,
    I am getting javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: argument type mismatch error in the below situation
    I have a select list <af:selectOneChoice value="#{bindings.vwCompanyName.inputValue}">
    <f:selectItems value="#{bindings.vwCompanyName.items}"/>
    </af:selectOneChoice>
    and on clicking Search button I pass this value in the actionlistener <af:setActionListener from="#{bindings.Company}"
    to="#{AgrmtSrch.company}"/>
    where AgrmtSrch is my java reference
    In the pageDef file, I have <variableIterator id="variables">
    <variable Name="Company" Type="java.lang.Integer"/>
    </variableIterator>
    <list id="vwCompanyName" IterBinding="variables"
    StaticList="false" ListOperMode="0" ListIter="vwCompanyIterator"
    NullValueFlag="1" NullValueId="vwCompanyName_null">
    <AttrNames>
    <Item Value="Company"/>
    </AttrNames>
    <ListAttrNames>
    <Item Value="Compcd"/>
    </ListAttrNames>
    <ListDisplayAttrNames>
    <Item Value="ShortName"/>
    </ListDisplayAttrNames>
    </list>
    In my Java file I have taken company of type Number(jbo), since the actual company code in DB is in Number. When I select any value and click search, i get the above error.
    I tried changing to <variable Name="Company" Type="java.lang.string"/> in the page def. But then when i select the unselected value in the list I get null pointer exception. How can i handle this.
    PLease help.
    Thanks

    Hi I am serious. This issue is occuring. Please can someone try it out and see if its occuring for you too.
    I have no solution for this. I am using JDeveloper 10.1.3 and my project is ADF BC JSF
    Test case: Have 2 to 3 selectOneChoice in a search page. All three should be populated by view objects. Let Vo_1 and Vo_2 have the key values as 1 and vo_3 can have key value as string. Each selectOneChoice should have "Include labelled Item" in "No Selection Item' in edit binding.
    First select a value on any one of the dropdowns such that the query returns no results. Now the The other dropdowns will still be default labelled item and the one that was selected is still set so. Now when I select an option in any other dropdown and search, it gives the below error
    500 Internal Server Error
    javax.faces.el.EvaluationException: java.lang.NullPointerException     at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:190)     at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:143)     at oracle.adf.view.faces.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:55)     at oracle.adf.view.faces.component.UIXComponentBase.getProperty(UIXComponentBase.java:1021)     at oracle.adf.view.faces.component.UIXValue.getValue(UIXValue.java:56)     at oracle.adf.view.faces.component.UIXEditableValue.validate(UIXEditableValue.java:212)     at oracle.adf.view.faces.component.UIXEditableValue._executeValidate(UIXEditableValue.java:522)     at oracle.adf.view.faces.component.UIXEditableValue.processValidators(UIXEditableValue.java:302)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXForm.processValidators(UIXForm.java:59)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildrenImpl(UIXComponentBase.java:855)     at oracle.adf.view.faces.component.UIXComponentBase.validateChildren(UIXComponentBase.java:839)     at oracle.adf.view.faces.component.UIXComponentBase.processValidators(UIXComponentBase.java:689)     at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:932)     at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:362)     at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:98)     at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:245)     at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:110)     at javax.faces.webapp.FacesServlet.service(FacesServlet.java:213)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:64)     at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._invokeDoFilter(AdfFacesFilterImpl.java:228)     at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl._doFilterImpl(AdfFacesFilterImpl.java:197)     at oracle.adfinternal.view.faces.webapp.AdfFacesFilterImpl.doFilter(AdfFacesFilterImpl.java:123)     at oracle.adf.view.faces.webapp.AdfFacesFilter.doFilter(AdfFacesFilter.java:103)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:15)     at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:162)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:620)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:369)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler.java:865)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:447)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler.java:215)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)     at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)     at oracle.oc4j.network.ServerSocketAcceptHandler.procClientSocket(ServerSocketAcceptHandler.java:239)     at oracle.oc4j.network.ServerSocketAcceptHandler.access$700(ServerSocketAcceptHandler.java:34)     at oracle.oc4j.network.ServerSocketAcceptHandler$AcceptHandlerHorse.run(ServerSocketAcceptHandler.java:880)     at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.1) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:303)     at java.lang.Thread.run(Thread.java:595)Caused by: java.lang.NullPointerException     at oracle.jbo.domain.TypeFactory.getInstance(TypeFactory.java:85)     at oracle.jbo.uicli.binding.JUCtrlListBinding.matchTargetWithLov(JUCtrlListBinding.java:868)     at oracle.jbo.uicli.binding.JUCtrlListBinding.findListIndex(JUCtrlListBinding.java:1106)     at oracle.jbo.uicli.binding.JUCtrlListBinding.setValueAt(JUCtrlListBinding.java:1725)     at oracle.jbo.uicli.binding.JUCtrlListBinding.updateValuesFromRow(JUCtrlListBinding.java:1338)     at oracle.jbo.uicli.binding.JUCtrlListBinding.getSelectedIndex(JUCtrlListBinding.java:702)     at oracle.jbo.uicli.binding.JUCtrlListBinding.getInputValue(JUCtrlListBinding.java:1799)     at oracle.adfinternal.view.faces.model.binding.FacesCtrlListBinding.getInputValue(FacesCtrlListBinding.java:73)     at oracle.jbo.uicli.binding.JUCtrlValueBinding.internalGet(JUCtrlValueBinding.java:1691)     at oracle.jbo.uicli.binding.JUCtrlListBinding.internalGet(JUCtrlListBinding.java:1972)     at oracle.adfinternal.view.faces.model.binding.FacesCtrlListBinding.internalGet(FacesCtrlListBinding.java:89)     at oracle.adf.model.binding.DCControlBinding.get(DCControlBinding.java:649)     at com.sun.faces.el.PropertyResolverImpl.getValue(PropertyResolverImpl.java:79)     at oracle.adfinternal.view.faces.model.FacesPropertyResolver.getValue(FacesPropertyResolver.java:92)     at com.sun.faces.el.impl.ArraySuffix.evaluate(ArraySuffix.java:187)     at com.sun.faces.el.impl.ComplexValue.evaluate(ComplexValue.java:171)     at com.sun.faces.el.impl.ExpressionEvaluatorImpl.evaluate(ExpressionEvaluatorImpl.java:263)     at com.sun.faces.el.ValueBindingImpl.getValue(ValueBindingImpl.java:160)

  • Unable to confirm order

    hi gurus
    I created production order of 5 nos for one material. Here 2 are scrap and 3 are yield. but when I am trying to do final confirmation. System saying that under delivery is not allowed.( We set that configuration to show error). ie system is not not considering scrap quantity
    How I have to make sure it is confirmed.
    Thanks in advance
    kalyan

    Hi Kalyan,
    Check your confirmation parameters settings in IMG. IN that setting in underdelivery allowance check you can define either error or warning.
    Alternately you can also maintain underdelivery tolerance in Material Master Work Scheduling view or itself in Goods Receipt tab in Production Order.
    These  setting will help you to confirm the order with underdelivery.
    Regards,
    Sachin

  • Unable to confirm TO with HU

    Hi Gurus,
    We are unable to confirm the Transfer orders for deliveries . If we are trying to confirm the transfer order we
    getting the following error message " Message no. L3858 Material quantity in source HU  is not sufficient for TO item".
    I have created a HU before confirming the TO and after creating the HU, i am getting the above error.
    Please kindly help us in this regard.
    Regards,
    tc.

    Hi Sekkhar,
    Just to share the solution in the comunity.
    The problem in your case was that the HU records had a batch number maintained on the VEPO (HU Item level) record while the LQUA  (Quant table) record doesn't. In MM also there is no batch value maintained. The VEPO record should be updated to remove the CHARG value. The material is not batch managed.
    Then SAP repaired the data in order to allow the operation.
    Please close this message as per the solution was provided and information were shared.
    Best Regards,
    Christian Rosa

  • TS3140 I tried to order a book on iPhoto but got the following message from apple :  the file contains text with drop shadows. As a result, Apple is unable to process your order"  Does anyone know what this means and how to fix it?   Thanks!!

    I tried to order a book on iphoto but got the following message from Apple  : "the file contains text with drop shadows.  As a result Apple is unable to process your order"  Does anyone know what this means and how to fix it?  Thanks!! 

    Hello Katiebell62
    Check out the troubleshooting steps to try and resolve your issue with purchasing a book through iPhoto.
    iPhoto: Difficulty submitting a book, card, or calendar order
    http://support.apple.com/kb/TS2516
    Thanks for using Apple Support Communities.
    Regards,
    -Norm G.

  • Exit to confirm transfer order with a storage unit number

    hi guys,
    I want to confirm transfer order with a storage unit number  from LT06 transaction, somebody know a user exit? .. actuallly i am using  MWMTO004 (EXIT_SAPLL03A_005)  but it doesn´t confirm the transfer order, How can i solve it? give me suggestions.
    Thanks in advance.
    Marisol.
    Edited by: Marisol on Apr 28, 2010 7:40 PM

    I solved  the problem myself.
    Thanks.

  • Confirming an order with a by-product

    Am having a problem, If l confirm an order without a by-product an inspection lot is generated automatically and its post to inspection stock for Quality inspection, but the moment l try to confirm an order of the same product with a by-product it is posted to unrestricted-use stock but the material have 04 as its inspection lot origins in the material master. What can l do to post to inspection stock for this material with and without by-product.

    Thanks a lot
    I really agree with our solution because I also suspect that the problem can be valuation type 531 because for the other products am using 261, above all they all activate for Quality management in the material master data, but now the problem is am now not sure o the menu path so if the menu path is correct maybe l donu2019t know what am suppose to check for. So can you help me out if the manu path that am using is not correct. Spro>QM>Q inspection>inspection lot creation>inspection for goods mvt.
    Thanks once again

  • Unable to close the order

    I  am unable to close the order ...system hown this error messgae please any one guide me in this issue
    Unprocessed future change recs for order 1002655 prevent del. flag/completion
    Message no. CO688
    Diagnosis
    There are still future change records or error records to be processed from the confirmation for the confirmation processes in order 1002655. Possible confirmation processes are:
    Automatic goods receipt
    Backflushing
    Calculation of actual costs
    Data transfer to HR
    System Response
    You are not meant to set the deletion flag/'completed' status for orders with future change records that have not been processed.
    Procedure
    You should process the open future change records using
    Predefined confimration process or
    The CORUPROC program, by dispatching it in Customizing in a background job (dispatch background jobs: dispatching processes).
    Check if incorrect goods movements or incorrect actual cost calculations exist for the order, and reprocess these if necessary:
    Reprocessing incorrect goods movements
    Reprocessing incorrect actual cost calculations
    Regards
    GSD

    Sesidhar gollu,
    Well try to reprocess your order by using T-code COFC which will reprocess the future records. Try this and then ping me any questions if u have.
    Regards,
    Madhu.G

  • CO11N-in operation w/o material unable to find that material with 101 mvmt

    Dear PP Gurus N Experts,
    I have three operations in Routing, where all the material is consumed at First operation i.e. on second & third operation there is no MATERIAL CONSUMPTION.
    So, I have assigned the material on operation one. Here my all operations have Control Key PP01
    Now, my issue is: Material stock should update only at the confirmation of Third Operation. But when we go for confirmation of third operation (CO11N), we are unable to find that material with 101 movement at Goods Movement Screen.
    We tried to enter the material manually also but we get a message: Goods receipt items can not be entered.
    Why. Please help.
    With thanks,
    DSC

    Dear Bhupendra,
    What do you want to Say. Please read my original question: where I have mentioned-
    I have three operations in Routing.
    Where all the material is consumed at First operation i.e. on second & third operation there is no MATERIAL CONSUMPTION.
    So, I have assigned the material on operation one. Here my all operations i.e. (0010, 0020 and 0030)  have Control Key PP01.
    For Control Key PP01, Auto Goods Movement Indicator is Checked in OP67.
    Now, When I go for order confirmation for final (i.e. 0030) operation, here Order Material (say PMP1230) should appear with 101 Movement or as receiving material
    Which is not happening. In other words I am not getting any material.
    If I try to enter the material manually, get a message: Goods receipt items can not be entered.
    With thanks,
    DSC

  • Schedule line getting confirmed when Ordered Quanity is greater than stock.

    Hi Sap Gurus,
    We have an issue in one of the sales scenario.
    In one of the sales orders the ordered quanity is purposely maintained greater than the stock at respective storage location(batch managed).
    In this case the schedule line should not get confirmed and it should not allow delivery document creation.
    But in the sales order the schedule lines are geeting confirmed and even the delivery document is getting created with picking request completion.
    Could you please help to understand :
    1.  why the schedule lines are getting confirmed when ordered quantity > Inventory?
    2. How do I stop delivery document creaton in this scenario?
    Looking for a quick response.
    Thanks in advance,
    Bhaskar

    Hello Bhaskar,
    Is Availability Check in your system considering Replenishment Lead time, if yes, then this is possible.
    Check this IMG Link:
    IMG - Sales and Distribution - Basic Functions - Availability Check and Transfer of Requirements - Availability Check with ATP Logic or Against Planning - Carry Out Control For Availability Check
    Here check the RLT settings.
    Also check settings under In/Outward Movements, where things like include Purchase Order can lead to confirmation of stock in Sales Order, despite physical inventory being present.
    Hope this helps,
    Thanks,
    Jignesh Mehta

  • Partial Pick Confirming Sales Order

    Hi Folks,
    I have a requirement where I have to Pick Confirm and Ship confirm Sales Order through API.
    1. When the quantites to be picked are same as quantity ordered the code seems to work just fine.
    But suppose in my example my quantity in SO line is 50 and I want to partially Ship confirm the lines lets say 20 quantites.
    then which API i need to use?
    The approach I am following is while pick confirming I am passing 20 quantites only and the ship confirming it.
    I researched and found that we can use the following API to update shipping attributes 'WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes' but when I run it (I tried before and after Pick confirm) the API runs fine but no changes are getting affected and the code Pick confirms all the quantity.
    Could some please help me with this.
    Please find the codes for pick confirm and updating shipping attributes
    Pick confirm code
    DECLARE
      lv_order_num        number := 700145812;
      vMoveOrderLineId    NUMBER;
      p_pick_conf_qty     NUMBER;
      pStatus             VARCHAR2(100);
      pMsgData            VARCHAR2(4000);
      v_movehdr_rec       INV_MOVE_ORDER_PUB.TROHDR_REC_TYPE;
      v_movehdr_val_rec   INV_MOVE_ORDER_PUB.TROHDR_VAL_REC_TYPE;
      v_moveln_tbl        INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_tbl_p      INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_zero_tbl   INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_zero_tbl_p INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_tbl_d      INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_tbl_o      INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      v_moveln_val_tbl    INV_MOVE_ORDER_PUB.TROLIN_VAL_TBL_TYPE;
      v_mold_tbl          INV_MO_LINE_DETAIL_UTIL.G_MMTT_TBL_TYPE;
      v_mold_tbl_p        INV_MO_LINE_DETAIL_UTIL.G_MMTT_TBL_TYPE;
      l_mold_tbl          INV_MO_LINE_DETAIL_UTIL.G_MMTT_TBL_TYPE;
      l_moveln_tbl        INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      l_trolin_rec        INV_MOVE_ORDER_PUB.TROLIN_REC_TYPE;
      l_trolin_tbl        INV_MOVE_ORDER_PUB.TROLIN_TBL_TYPE;
      l_return_status     VARCHAR2(240);
      l_msg_count         NUMBER;
      l_msg_data          VARCHAR2(2000);
      l_move_hdr_id       NUMBER;
      l_move_order_no     NUMBER := 0;
      v_return_values     VARCHAR2(2000) := FND_API.G_TRUE;
      v_move_hdr_rec      INV_MOVE_ORDER_PUB.TROHDR_REC_TYPE;
      v_move_hdr_val_rec  INV_MOVE_ORDER_PUB.TROHDR_VAL_REC_TYPE;
      v_api_pick_confirm  NUMBER;
      cv_fail             VARCHAR2(100) := 'Fail';
      cv_success          VARCHAR2(100) := 'Success';
      g_user_id      number;
      g_resp_id      number;
      g_resp_appl_id number;
      p_user_name    varchar2(100) := 'SYSADMIN';
      p_resp_name    varchar2(100) := 'Order Management Super User';
      p_mo_apps      varchar2(100) := 'ONT';
      CURSOR c_mmtt_recs(vMoveOrderLineId NUMBER) IS
        SELECT transaction_header_id,
               transaction_temp_id,
               source_code,
               source_line_id,
               transaction_mode,
               lock_flag,
               last_update_date,
               last_updated_by,
               creation_date,
               created_by,
               last_update_login,
               request_id,
               program_application_id,
               program_id,
               program_update_date,
               inventory_item_id,
               revision,
               organization_id,
               subinventory_code,
               locator_id,
               transaction_quantity,
               primary_quantity,
               transaction_uom,
               transaction_cost,
               transaction_type_id,
               transaction_action_id,
               transaction_source_type_id,
               transaction_source_id,
               transaction_source_name,
               transaction_date,
               acct_period_id,
               distribution_account_id,
               transaction_reference,
               requisition_line_id,
               requisition_distribution_id,
               reason_id,
               lot_number,
               lot_expiration_date,
               serial_number,
               receiving_document,
               demand_id,
               rcv_transaction_id,
               move_transaction_id,
               completion_transaction_id,
               wip_entity_type,
               schedule_id,
               repetitive_line_id,
               employee_code,
               primary_switch,
               schedule_update_code,
               setup_teardown_code,
               item_ordering,
               negative_req_flag,
               operation_seq_num,
               picking_line_id,
               trx_source_line_id,
               trx_source_delivery_id,
               physical_adjustment_id,
               cycle_count_id,
               rma_line_id,
               customer_ship_id,
               currency_code,
               currency_conversion_rate,
               currency_conversion_type,
               currency_conversion_date,
               ussgl_transaction_code,
               vendor_lot_number,
               encumbrance_account,
               encumbrance_amount,
               ship_to_location,
               shipment_number,
               transfer_cost,
               transportation_cost,
               transportation_account,
               freight_code,
               containers,
               waybill_airbill,
               expected_arrival_date,
               transfer_subinventory,
               transfer_organization,
               transfer_to_location,
               new_average_cost,
               value_change,
               percentage_change,
               material_allocation_temp_id,
               demand_source_header_id,
               demand_source_line,
               demand_source_delivery,
               item_segments,
               item_description,
               item_trx_enabled_flag,
               item_location_control_code,
               item_restrict_subinv_code,
               item_restrict_locators_code,
               item_revision_qty_control_code,
               item_primary_uom_code,
               item_uom_class,
               item_shelf_life_code,
               item_shelf_life_days,
               item_lot_control_code,
               item_serial_control_code,
               item_inventory_asset_flag,
               allowed_units_lookup_code,
               department_id,
               department_code,
               wip_supply_type,
               supply_subinventory,
               supply_locator_id,
               valid_subinventory_flag,
               valid_locator_flag,
               locator_segments,
               current_locator_control_code,
               number_of_lots_entered,
               wip_commit_flag,
               next_lot_number,
               lot_alpha_prefix,
               next_serial_number,
               serial_alpha_prefix,
               shippable_flag,
               posting_flag,
               required_flag,
               process_flag,
               error_code,
               error_explanation,
               attribute_category,
               attribute1,
               attribute2,
               attribute3,
               attribute4,
               attribute5,
               attribute6,
               attribute7,
               attribute8,
               attribute9,
               attribute10,
               attribute11,
               attribute12,
               attribute13,
               attribute14,
               attribute15,
               movement_id,
               reservation_quantity,
               shipped_quantity,
               transaction_line_number,
               task_id,
               to_task_id,
               source_task_id,
               project_id,
               source_project_id,
               pa_expenditure_org_id,
               to_project_id,
               expenditure_type,
               final_completion_flag,
               transfer_percentage,
               transaction_sequence_id,
               material_account,
               material_overhead_account,
               resource_account,
               outside_processing_account,
               overhead_account,
               flow_schedule,
               cost_group_id,
               demand_class,
               qa_collection_id,
               kanban_card_id,
               overcompletion_transaction_id,
               overcompletion_primary_qty,
               overcompletion_transaction_qty,
               end_item_unit_number,
               scheduled_payback_date,
               line_type_code,
               parent_transaction_temp_id,
               put_away_strategy_id,
               put_away_rule_id,
               pick_strategy_id,
               pick_rule_id,
               common_bom_seq_id,
               common_routing_seq_id,
               cost_type_id,
               org_cost_group_id,
               move_order_line_id,
               task_group_id,
               pick_slip_number,
               reservation_id,
               transaction_status,
               transfer_cost_group_id,
               lpn_id,
               transfer_lpn_id,
               pick_slip_date,
               content_lpn_id
          FROM MTL_MATERIAL_TRANSACTIONS_TEMP
         WHERE move_order_line_id = vMoveOrderLineId;
      l_moveln_fidx     NUMBER;
      l_moveln_lidx     NUMBER;
      n_mvln_cntr       NUMBER;
      l_Index           NUMBER := 1;
      v_records_in_mmtt NUMBER := 0;
      REC C_MMTT_RECS%ROWTYPE;
    BEGIN
      select user_id
        into g_user_id
        from fnd_user
       where user_name = p_user_name;
      select responsibility_id, application_id
        into g_resp_id, g_resp_appl_id
        from apps.fnd_responsibility_vl
       where responsibility_name = p_resp_name;
      Apps.FND_Global.Apps_Initialize(g_user_id, g_resp_id, g_resp_appl_id);
      MO_GLOBAL.INIT(p_mo_apps);
      for mol in (select wda.delivery_id,
                         wda.delivery_detail_id,
                         wda.parent_delivery_detail_id,
                         wdd.source_code,
                         wdd.inventory_item_id,
                         wdd.organization_id,
                         wdd.ship_from_location_id,
                         wdd.ship_to_location_id,
                         wdd.requested_quantity,
                         wdd.requested_quantity_uom,
                         wdd.move_order_line_id,
                         wdd.org_id,
                         mtrl.quantity,
                         mtrl.quantity_delivered
                    from wsh_delivery_details     wdd,
                         wsh_delivery_assignments wda,
                         oe_order_lines_all       ol,
                         oe_order_headers_all     oh,
                         mtl_txn_request_lines    mtrl,
                         mtl_txn_request_headers  mtrh
                   where wdd.source_line_id = ol.line_id
                     and wdd.delivery_detail_id = wda.delivery_detail_id
                     and ol.header_id = oh.header_id
                     and wdd.move_order_line_id = mtrl.line_id(+)
                     and mtrl.header_id = mtrh.header_id(+)
                     and oh.order_number = lv_order_num) loop
        vMoveOrderLineId := mol.move_order_line_id;
        p_pick_conf_qty  := mol.quantity - nvl(mol.quantity_delivered,0);
        SELECT COUNT(move_order_line_id)
          INTO v_records_in_mmtt
          FROM MTL_MATERIAL_TRANSACTIONS_TEMP
         WHERE move_order_line_id = vMoveOrderLineId;
        IF v_records_in_mmtt > 1 THEN
          pStatus  := cv_fail;
          pMsgData := 'Wrong number of records in MMTT for the MOVE_ORDER_LINE_ID : ' ||
                      vMoveOrderLineId;
          DBMS_OUTPUT.PUT_LINE('Multiple records in MMTT for move_order_line_id = ' ||
                               vMoveOrderLineId);
          v_api_pick_confirm := 0;
          GOTO end_of_pkcnf;
        ELSIF v_records_in_mmtt = 0 THEN
          --means that the delivery is already pick confirmed
          pStatus := cv_success;
          DBMS_OUTPUT.PUT_LINE('No records in MMTT for move_order_line_id = ' ||
                               vMoveOrderLineId ||
                               ' hence it is already pick confirmed');
          v_api_pick_confirm := 0;
          GOTO end_of_pkcnf;
        END IF;
        SELECT mtrh.header_id, mtrh.request_number
          INTO l_move_hdr_id, l_move_order_no
          FROM mtl_txn_request_headers mtrh, mtl_txn_request_lines mtrl
         WHERE mtrh.header_id = mtrl.header_id
           AND mtrl.line_id = vMoveOrderLineId;
        DBMS_OUTPUT.PUT_LINE('Obtained MTRH.HEADER_ID = ' || l_move_hdr_id ||
                             ' MTRH.REQUEST_NUMBER = ' || l_move_order_no ||
                             ' for move_order_line_id = ' || vMoveOrderLineId);
        INV_MOVE_ORDER_PUB.GET_MOVE_ORDER(p_api_version_number => 1.0,
                                          p_init_msg_list      => FND_API.G_FALSE,
                                          p_return_values      => v_return_values,
                                          x_return_status      => l_return_status,
                                          x_msg_count          => l_msg_count,
                                          x_msg_data           => l_msg_data,
                                          p_header_id          => l_move_hdr_id,
                                          p_header             => l_move_order_no,
                                          x_trohdr_rec         => v_move_hdr_rec,
                                          x_trohdr_val_rec     => v_move_hdr_val_rec,
                                          x_trolin_tbl         => v_moveln_tbl,
                                          x_trolin_val_tbl     => v_moveln_val_tbl);
         COMMIT;                                
        DBMS_OUTPUT.PUT_LINE('Return status of INV_MOVE_ORDER_PUB.GET_MOVE_ORDER = ' ||
                             l_return_status);
        IF l_return_status != FND_API.G_RET_STS_SUCCESS THEN
          pStatus  := cv_fail;
          pMsgData := 'Failed to get move order inv_move_order_pub.get_move_order for MOVE_ORDER_LINE_ID : ' ||
                      vMoveOrderLineId;
          GOTO end_of_pkcnf;
        END IF;
        OPEN c_mmtt_recs(vMoveOrderLineId);
        FETCH c_mmtt_recs
          INTO rec;
        CLOSE c_mmtt_recs;
        v_mold_tbl(1).transaction_header_id := rec.transaction_header_id;
        v_mold_tbl(1).transaction_temp_id := rec.transaction_temp_id;
        v_mold_tbl(1).source_code := rec.source_code;
        v_mold_tbl(1).source_line_id := rec.source_line_id;
        v_mold_tbl(1).transaction_mode := rec.transaction_mode;
        v_mold_tbl(1).lock_flag := rec.lock_flag;
        v_mold_tbl(1).last_update_date := rec.last_update_date;
        v_mold_tbl(1).last_updated_by := rec.last_updated_by;
        v_mold_tbl(1).creation_date := rec.creation_date;
        v_mold_tbl(1).created_by := rec.created_by;
        v_mold_tbl(1).last_update_login := rec.last_update_login;
        v_mold_tbl(1).request_id := rec.request_id;
        v_mold_tbl(1).program_application_id := rec.program_application_id;
        v_mold_tbl(1).program_id := rec.program_id;
        v_mold_tbl(1).program_update_date := rec.program_update_date;
        v_mold_tbl(1).inventory_item_id := rec.inventory_item_id;
        v_mold_tbl(1).revision := rec.revision;
        v_mold_tbl(1).organization_id := rec.organization_id;
        v_mold_tbl(1).subinventory_code := rec.subinventory_code;
        v_mold_tbl(1).locator_id := rec.locator_id;
        v_mold_tbl(1).transaction_quantity := rec.transaction_quantity;
        v_mold_tbl(1).primary_quantity := rec.primary_quantity;
        v_mold_tbl(1).transaction_uom := rec.transaction_uom;
        v_mold_tbl(1).transaction_cost := rec.transaction_cost;
        v_mold_tbl(1).transaction_type_id := rec.transaction_type_id;
        v_mold_tbl(1).transaction_action_id := rec.transaction_action_id;
        v_mold_tbl(1).transaction_source_type_id := rec.transaction_source_type_id;
        v_mold_tbl(1).transaction_source_id := rec.transaction_source_id;
        v_mold_tbl(1).transaction_source_name := rec.transaction_source_name;
        v_mold_tbl(1).transaction_date := rec.transaction_date;
        v_mold_tbl(1).acct_period_id := rec.acct_period_id;
        v_mold_tbl(1).distribution_account_id := rec.distribution_account_id;
        v_mold_tbl(1).transaction_reference := rec.transaction_reference;
        v_mold_tbl(1).requisition_line_id := rec.requisition_line_id;
        v_mold_tbl(1).requisition_distribution_id := rec.requisition_distribution_id;
        v_mold_tbl(1).reason_id := rec.reason_id;
        v_mold_tbl(1).lot_number := rec.lot_number;
        v_mold_tbl(1).lot_expiration_date := rec.lot_expiration_date;
        v_mold_tbl(1).serial_number := rec.serial_number;
        v_mold_tbl(1).receiving_document := rec.receiving_document;
        v_mold_tbl(1).demand_id := rec.demand_id;
        v_mold_tbl(1).rcv_transaction_id := rec.rcv_transaction_id;
        v_mold_tbl(1).move_transaction_id := rec.move_transaction_id;
        v_mold_tbl(1).completion_transaction_id := rec.completion_transaction_id;
        v_mold_tbl(1).wip_entity_type := rec.wip_entity_type;
        v_mold_tbl(1).schedule_id := rec.schedule_id;
        v_mold_tbl(1).repetitive_line_id := rec.repetitive_line_id;
        v_mold_tbl(1).employee_code := rec.employee_code;
        v_mold_tbl(1).primary_switch := rec.primary_switch;
        v_mold_tbl(1).schedule_update_code := rec.schedule_update_code;
        v_mold_tbl(1).setup_teardown_code := rec.setup_teardown_code;
        v_mold_tbl(1).item_ordering := rec.item_ordering;
        v_mold_tbl(1).negative_req_flag := rec.negative_req_flag;
        v_mold_tbl(1).operation_seq_num := rec.operation_seq_num;
        v_mold_tbl(1).picking_line_id := rec.picking_line_id;
        v_mold_tbl(1).trx_source_line_id := rec.trx_source_line_id;
        v_mold_tbl(1).trx_source_delivery_id := rec.trx_source_delivery_id;
        v_mold_tbl(1).physical_adjustment_id := rec.physical_adjustment_id;
        v_mold_tbl(1).cycle_count_id := rec.cycle_count_id;
        v_mold_tbl(1).rma_line_id := rec.rma_line_id;
        v_mold_tbl(1).customer_ship_id := rec.customer_ship_id;
        v_mold_tbl(1).currency_code := rec.currency_code;
        v_mold_tbl(1).currency_conversion_rate := rec.currency_conversion_rate;
        v_mold_tbl(1).currency_conversion_type := rec.currency_conversion_type;
        v_mold_tbl(1).currency_conversion_date := rec.currency_conversion_date;
        v_mold_tbl(1).ussgl_transaction_code := rec.ussgl_transaction_code;
        v_mold_tbl(1).vendor_lot_number := rec.vendor_lot_number;
        v_mold_tbl(1).encumbrance_account := rec.encumbrance_account;
        v_mold_tbl(1).encumbrance_amount := rec.encumbrance_amount;
        v_mold_tbl(1).ship_to_location := rec.ship_to_location;
        v_mold_tbl(1).shipment_number := rec.shipment_number;
        v_mold_tbl(1).transfer_cost := rec.transfer_cost;
        v_mold_tbl(1).transportation_cost := rec.transportation_cost;
        v_mold_tbl(1).transportation_account := rec.transportation_account;
        v_mold_tbl(1).freight_code := rec.freight_code;
        v_mold_tbl(1).containers := rec.containers;
        v_mold_tbl(1).waybill_airbill := rec.waybill_airbill;
        v_mold_tbl(1).expected_arrival_date := rec.expected_arrival_date;
        v_mold_tbl(1).transfer_subinventory := rec.transfer_subinventory;
        v_mold_tbl(1).transfer_organization := rec.transfer_organization;
        v_mold_tbl(1).transfer_to_location := rec.transfer_to_location;
        v_mold_tbl(1).new_average_cost := rec.new_average_cost;
        v_mold_tbl(1).value_change := rec.value_change;
        v_mold_tbl(1).percentage_change := rec.percentage_change;
        v_mold_tbl(1).material_allocation_temp_id := rec.material_allocation_temp_id;
        v_mold_tbl(1).demand_source_header_id := rec.demand_source_header_id;
        v_mold_tbl(1).demand_source_line := rec.demand_source_line;
        v_mold_tbl(1).demand_source_delivery := rec.demand_source_delivery;
        v_mold_tbl(1).item_segments := rec.item_segments;
        v_mold_tbl(1).item_description := rec.item_description;
        v_mold_tbl(1).item_trx_enabled_flag := rec.item_trx_enabled_flag;
        v_mold_tbl(1).item_location_control_code := rec.item_location_control_code;
        v_mold_tbl(1).item_restrict_subinv_code := rec.item_restrict_subinv_code;
        v_mold_tbl(1).item_restrict_locators_code := rec.item_restrict_locators_code;
        v_mold_tbl(1).item_revision_qty_control_code := rec.item_revision_qty_control_code;
        v_mold_tbl(1).item_primary_uom_code := rec.item_primary_uom_code;
        v_mold_tbl(1).item_uom_class := rec.item_uom_class;
        v_mold_tbl(1).item_shelf_life_code := rec.item_shelf_life_code;
        v_mold_tbl(1).item_shelf_life_days := rec.item_shelf_life_days;
        v_mold_tbl(1).item_lot_control_code := rec.item_lot_control_code;
        v_mold_tbl(1).item_serial_control_code := rec.item_serial_control_code;
        v_mold_tbl(1).item_inventory_asset_flag := rec.item_inventory_asset_flag;
        v_mold_tbl(1).allowed_units_lookup_code := rec.allowed_units_lookup_code;
        v_mold_tbl(1).department_id := rec.department_id;
        v_mold_tbl(1).department_code := rec.department_code;
        v_mold_tbl(1).wip_supply_type := rec.wip_supply_type;
        v_mold_tbl(1).supply_subinventory := rec.supply_subinventory;
        v_mold_tbl(1).supply_locator_id := rec.supply_locator_id;
        v_mold_tbl(1).valid_subinventory_flag := rec.valid_subinventory_flag;
        v_mold_tbl(1).valid_locator_flag := rec.valid_locator_flag;
        v_mold_tbl(1).locator_segments := rec.locator_segments;
        v_mold_tbl(1).current_locator_control_code := rec.current_locator_control_code;
        v_mold_tbl(1).number_of_lots_entered := rec.number_of_lots_entered;
        v_mold_tbl(1).wip_commit_flag := rec.wip_commit_flag;
        v_mold_tbl(1).next_lot_number := rec.next_lot_number;
        v_mold_tbl(1).lot_alpha_prefix := rec.lot_alpha_prefix;
        v_mold_tbl(1).next_serial_number := rec.next_serial_number;
        v_mold_tbl(1).serial_alpha_prefix := rec.serial_alpha_prefix;
        v_mold_tbl(1).shippable_flag := rec.shippable_flag;
        v_mold_tbl(1).posting_flag := rec.posting_flag;
        v_mold_tbl(1).required_flag := rec.required_flag;
        v_mold_tbl(1).process_flag := rec.process_flag;
        v_mold_tbl(1).error_code := rec.error_code;
        v_mold_tbl(1).error_explanation := rec.error_explanation;
        v_mold_tbl(1).attribute_category := rec.attribute_category;
        v_mold_tbl(1).attribute1 := rec.attribute1;
        v_mold_tbl(1).attribute2 := rec.attribute2;
        v_mold_tbl(1).attribute3 := rec.attribute3;
        v_mold_tbl(1).attribute4 := rec.attribute4;
        v_mold_tbl(1).attribute5 := rec.attribute5;
        v_mold_tbl(1).attribute6 := rec.attribute6;
        v_mold_tbl(1).attribute7 := rec.attribute7;
        v_mold_tbl(1).attribute8 := rec.attribute8;
        v_mold_tbl(1).attribute9 := rec.attribute9;
        v_mold_tbl(1).attribute10 := rec.attribute10;
        v_mold_tbl(1).attribute11 := rec.attribute11;
        v_mold_tbl(1).attribute12 := rec.attribute12;
        v_mold_tbl(1).attribute13 := rec.attribute13;
        v_mold_tbl(1).attribute14 := rec.attribute14;
        v_mold_tbl(1).attribute15 := rec.attribute15;
        v_mold_tbl(1).movement_id := rec.movement_id;
        v_mold_tbl(1).reservation_quantity := rec.reservation_quantity;
        v_mold_tbl(1).shipped_quantity := rec.shipped_quantity;
        v_mold_tbl(1).transaction_line_number := rec.transaction_line_number;
        v_mold_tbl(1).task_id := rec.task_id;
        v_mold_tbl(1).to_task_id := rec.to_task_id;
        v_mold_tbl(1).source_task_id := rec.source_task_id;
        v_mold_tbl(1).project_id := rec.project_id;
        v_mold_tbl(1).source_project_id := rec.source_project_id;
        v_mold_tbl(1).pa_expenditure_org_id := rec.pa_expenditure_org_id;
        v_mold_tbl(1).to_project_id := rec.to_project_id;
        v_mold_tbl(1).expenditure_type := rec.expenditure_type;
        v_mold_tbl(1).final_completion_flag := rec.final_completion_flag;
        v_mold_tbl(1).transfer_percentage := rec.transfer_percentage;
        v_mold_tbl(1).transaction_sequence_id := rec.transaction_sequence_id;
        v_mold_tbl(1).material_account := rec.material_account;
        v_mold_tbl(1).material_overhead_account := rec.material_overhead_account;
        v_mold_tbl(1).resource_account := rec.resource_account;
        v_mold_tbl(1).outside_processing_account := rec.outside_processing_account;
        v_mold_tbl(1).overhead_account := rec.overhead_account;
        v_mold_tbl(1).flow_schedule := rec.flow_schedule;
        v_mold_tbl(1).cost_group_id := rec.cost_group_id;
        v_mold_tbl(1).demand_class := rec.demand_class;
        v_mold_tbl(1).qa_collection_id := rec.qa_collection_id;
        v_mold_tbl(1).kanban_card_id := rec.kanban_card_id;
        v_mold_tbl(1).overcompletion_transaction_id := rec.overcompletion_transaction_id;
        v_mold_tbl(1).overcompletion_primary_qty := rec.overcompletion_primary_qty;
        v_mold_tbl(1).overcompletion_transaction_qty := rec.overcompletion_transaction_qty;
        v_mold_tbl(1).end_item_unit_number := rec.end_item_unit_number;
        v_mold_tbl(1).scheduled_payback_date := rec.scheduled_payback_date;
        v_mold_tbl(1).line_type_code := rec.line_type_code;
        v_mold_tbl(1).parent_transaction_temp_id := rec.parent_transaction_temp_id;
        v_mold_tbl(1).put_away_strategy_id := rec.put_away_strategy_id;
        v_mold_tbl(1).put_away_rule_id := rec.put_away_rule_id;
        v_mold_tbl(1).pick_strategy_id := rec.pick_strategy_id;
        v_mold_tbl(1).pick_rule_id := rec.pick_rule_id;
        v_mold_tbl(1).common_bom_seq_id := rec.common_bom_seq_id;
        v_mold_tbl(1).common_routing_seq_id := rec.common_routing_seq_id;
        v_mold_tbl(1).cost_type_id := rec.cost_type_id;
        v_mold_tbl(1).org_cost_group_id := rec.org_cost_group_id;
        v_mold_tbl(1).move_order_line_id := rec.move_order_line_id;
        v_mold_tbl(1).task_group_id := rec.task_group_id;
        v_mold_tbl(1).pick_slip_number := rec.pick_slip_number;
        v_mold_tbl(1).reservation_id := rec.reservation_id;
        v_mold_tbl(1).transaction_status := rec.transaction_status;
        v_mold_tbl(1).transfer_cost_group_id := rec.transfer_cost_group_id;
        v_mold_tbl(1).lpn_id := rec.lpn_id;
        v_mold_tbl(1).transfer_lpn_id := rec.transfer_lpn_id;
        v_mold_tbl(1).pick_slip_date := rec.pick_slip_date;
        v_mold_tbl(1).content_lpn_id := rec.content_lpn_id;
        v_mold_tbl(1).transaction_quantity := p_pick_conf_qty;
        v_mold_tbl(1).primary_quantity := p_pick_conf_qty;
        v_mold_tbl(1).shipped_quantity := p_pick_conf_qty;
        INV_PICK_WAVE_PICK_CONFIRM_PUB.PICK_CONFIRM(p_api_version_number => 1.0,
                                                    p_init_msg_list      => FND_API.G_FALSE,
                                                    p_commit             => FND_API.G_FALSE,
                                                    x_return_status      => l_return_status,
                                                    x_msg_count          => l_msg_count,
                                                    x_msg_data           => l_msg_data,
                                                    p_move_order_type    => 3 -- PickWave - Order
                                                    p_transaction_mode   => 1 -- 1:On-Line, 2:Concurrent, 3:Background
                                                    p_trolin_tbl         => v_moveln_tbl_d,
                                                    p_mold_tbl           => v_mold_tbl,
                                                    x_mmtt_tbl           => v_mold_tbl,
                                                    x_trolin_tbl         => v_moveln_tbl_o,
                                                    p_transaction_date   => SYSDATE);
        COMMIT;                                           
        DBMS_OUTPUT.PUT_LINE('Return status of INV_PICK_WAVE_PICK_CONFIRM_PUB.PICK_CONFIRM  = ' ||
                             l_return_status);
        IF l_return_status != FND_API.G_RET_STS_SUCCESS THEN
          pStatus  := cv_fail;
          pMsgData := 'Failed to pick confirm move order inv_pick_wave_pick_confirm_pub.pick_confirm for MOVE_ORDER_LINE_ID : ' ||
                      vMoveOrderLineId;
          GOTO end_of_pkcnf;
        END IF;
        v_api_pick_confirm := 1;
        dbms_output.put_line('Status of the Pick Confirm is : ' ||
                             l_return_status);
        <<end_of_pkcnf>>
        NULL;
      end loop;
    END;
    Updating Shipping attributes
    DECLARE
      --Standard Parameters.   
      p_api_version NUMBER;
      init_msg_list VARCHAR2(30);
      p_commit      VARCHAR2(30);
      --Parameters for WSH_DELIVERY_DETAILS_PUB.update_shipping_attributes.   
      source_code        VARCHAR2(15);
      changed_attributes WSH_DELIVERY_DETAILS_PUB.ChangedAttributeTabType;
      --out parameters
      x_return_status VARCHAR2(10);
      x_msg_count     NUMBER;
      x_msg_data      VARCHAR2(2000);
      x_msg_details   VARCHAR2(3000);
      x_msg_summary   VARCHAR2(3000);
      -- Handle exceptions
      vApiErrorException EXCEPTION;
    BEGIN
      -- Initialize return status
      x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
      -- Call this procedure to initialize applications parameters
      FND_GLOBAL.APPS_INITIALIZE(user_id      => 0,
                                 resp_id      => 21623,
                                 resp_appl_id => 660);
      source_code := 'OE';
      changed_attributes(1).delivery_detail_id := 9317811; -- delivery_detail_id
      changed_attributes(1).shipped_quantity := 0; -- quantity to update 
      changed_attributes(1).cycle_count_quantity := 30;
      --Call to WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes.
      WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes(p_api_version_number => 1.0,
                                                          p_init_msg_list      => init_msg_list,
                                                          p_commit             => p_commit,
                                                          x_return_status      => x_return_status,
                                                          x_msg_count          => x_msg_count,
                                                          x_msg_data           => x_msg_data,
                                                          p_changed_attributes => changed_attributes,
                                                          p_source_code        => source_code);
                                                          commit;
      IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
        RAISE vApiErrorException;
      ELSE
        dbms_output.put_line('The shipped quantity is updated with ' ||
                             changed_attributes(1)
                             .shipped_quantity || ' for the delivery detail ' ||
                             changed_attributes(1).delivery_detail_id);
      END IF;
    EXCEPTION
      WHEN vApiErrorException THEN
        WSH_UTIL_CORE.get_messages('Y',
                                   x_msg_summary,
                                   x_msg_details,
                                   x_msg_count);
        IF x_msg_count > 1 THEN
          x_msg_data := x_msg_summary || x_msg_details;
          DBMS_OUTPUT.PUT_LINE('Message Data : ' || x_msg_data);
        ELSE
          x_msg_data := x_msg_summary;
          DBMS_OUTPUT.PUT_LINE('Message Data : ' || x_msg_data);
        END IF;
      WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('Unexpected Error: ' || SQLERRM);
    END;
    Thanks

    Hi,
    Goto VTFL.Select you valid combination.
    Click on item.Select yout item category there.Goto details.
    Select the Pos/neg quantity field as "+".
    Maintain the billing quantity as "A".
    Maintain VBRK/VBRP as "001".
    Save.
    Goto VOV7 and select your item category.Details.
    Select completion rule as "B" and billing relevance as "F".
    Save.
    Pls go through the follwing threads that are posted by me earlier.
    [Invoice split|Re: Invoice split]
    [Splitiing of invoice|Re: Invoice split]
    Regards,
    Krishna.

Maybe you are looking for