Rounding Issue with Pricing Conditions

Currently we have in place a pricing hierchery that consists of two pricing conditions.  ZP for base price and ZD for a +-differential.  Both conditions begin with 00.  ZP00. ZP01, ZP03, ZP04.  If a ZP01 exists it overrides a ZP00.  If a ZP03 exists it overrides ZP00,ZP01, etc.  So basically the higher the number means it overrides anything underneath it.  The ZD conditions are setup exactly the same way.  I am currently running into a round issue.  We settle all transactions in USD however the manual and differentials are often based on prices that go out more than 2 decimal places.  SAP is treating the calculation for the ZP and ZD as two separate calculations.  It rounds each of them and then combines for a total price.  So if the base price ZP02 is $2.245 multiplied by quantity 3,999 = $8,977.755  which it rounds to $8,977.76 and the differential ZD02 is $.0235 this = $93.9765 which it rounds to $93.98 for a total price of $9,071.74.  However if you add the ZD02 + the ZD02 you get a total unit price of $2.2685.  This multiplied times the quantity 3,999 = $9,071.731 which is correct.  But because SAP does each calc separately the price comes out to $9,071.74 or off 1CT.  I have seen various solutions on how to fix this from user exits to creating additional conditions that takes both ZP and ZD conditions and calculates them as one but I was hoping someone had come up with something better?  Or if there was a preferred method?

Currently we have in place a pricing hierchery that consists of two pricing conditions.  ZP for base price and ZD for a +-differential.  Both conditions begin with 00.  ZP00. ZP01, ZP03, ZP04.  If a ZP01 exists it overrides a ZP00.  If a ZP03 exists it overrides ZP00,ZP01, etc.  So basically the higher the number means it overrides anything underneath it.  The ZD conditions are setup exactly the same way.  I am currently running into a round issue.  We settle all transactions in USD however the manual and differentials are often based on prices that go out more than 2 decimal places.  SAP is treating the calculation for the ZP and ZD as two separate calculations.  It rounds each of them and then combines for a total price.  So if the base price ZP02 is $2.245 multiplied by quantity 3,999 = $8,977.755  which it rounds to $8,977.76 and the differential ZD02 is $.0235 this = $93.9765 which it rounds to $93.98 for a total price of $9,071.74.  However if you add the ZD02 + the ZD02 you get a total unit price of $2.2685.  This multiplied times the quantity 3,999 = $9,071.731 which is correct.  But because SAP does each calc separately the price comes out to $9,071.74 or off 1CT.  I have seen various solutions on how to fix this from user exits to creating additional conditions that takes both ZP and ZD conditions and calculates them as one but I was hoping someone had come up with something better?  Or if there was a preferred method?

Similar Messages

  • I have an issue with pricing condition ZPRO (basic price )

    Hello gurus
    I have an issue with pricing condition ZPRO (basic price ).
    users created a sales order, and the basic price ZPRO which is mannual is added twice ,now i want to put a check so that condition tpye zpro is not accepted twice by the system. please let me know how can i restrict  system from accepting condition type zpro  twice during sales order.
    regds
    Edited by: sapuser09 on Jul 26, 2011 8:44 AM

    Hi,
    Solution for this is very simple. Don't make any changes to the sales order user exit. Use condition exclusion  for the condition type.
    Do customization in the following path of IMG
    Sales and distribution---- > Basic Functions--- > Pricing--
    > Condition exclusion -- > Condition exclusion for groups of conditions
    First  In Define condition exclusion groups you have to define condition exclusion group (ZXXX)
    Then  in Assign condition types to the exclusion groups you have to assign condition type to the exclusion group (ZXXX   ZPRO)
    Then in Maintain Condition exclusion for pricing procedures select the pricing procedure where you have the problem and click Exclusion box present in Dialog structure box
    You will be faced with Change view exclusion overview screen Click new entries
    You will be faced with New entries overview of added entries screen.
    Take serial no as 10 Condition exclusion procedure  as B (Best condition with in condition type) In the exclusion group1 add the exclusion group ZXXX.
    Save it and create order.
    In the order pricing you will again observe that ZPRO appearing twice but only one will be active.
    Changing user exit for this issue is not at all required and it must be only the last resort Try replicating the issue in your sand box system. As I had mentioned it will be picked twice but only one will be active.
    Hope this helps.
    Edited by: mokirala tilak on Aug 10, 2011 10:19 AM

  • How to Create MM Quotaion with Pricing Conditions against RFQ through ME47?

    Hi,
    I got a requirement to Create MM Quotation against Request for Quotation with Pricing.
    I got a Function Module BS01_MM_QUOTATION_CREATE to Create Quotaion but there is no Parameter to Pass Pricing Conditions.
    Can anyone suggest me to Create MM Quotaion with Pricing Conditions.
    Thanks & Regards,
    SBLSV Ramana.

    Hi,
    There is no standard T Code in SAP which allows you to automatically convert RFQs to PO. Using ME59n you can only create POs from PR. Even Document type would not suffice the purpose because although it will show you the list of all document types but the basic criteria of open PR still remains.
    So I think we will not be able to do it by standard functionality.
    IV

  • Free Goods with pricing condition (Urgent)

    Hi MM Expert,
    we have a probleme with free goods. because in PO item of free goods, there is no condition management (no Invoice entry) but we should manage some pricing condition for the item (spécifique condition relative to transport, ...).
    so are the any way of managing the expenses annex condition(transport charge, customs clearance charges,…) for the free goods in an item of Purchase Order ??
    thank's in advance.
    Said

    Hi,
    This is not possible to maintain the condition s for free goods because while creating the PO for free goods by selecting the free goods tad at item level, There is no Condition tab at Item detail .means you are not able to mainatin conditions.
    If you want to maintain the conditions ,you have to treat as a Normal scenarios .
    Regards
    Sanjay L

  • Problem with pricing condition type in case of proforma invoicing

    Hello All,
    the problem is related to a pricing condition type in case of proforma invoice where the details are as follows -
    Name of Condition Type - ZADC - Add 10% on Cost                                         Access seq.   Z038 Diff
                                                                                    Plus/minus    A Positive
    Cond. class -  A Discount or surcharge
    Calculat.type -  A Percentage
    Cond.category - Blank
    Manual entries      D Not possible to process manually
    Amount / Percent - Checked
    Item Condition - checked
    Scale Basis - Quantity
    Currency Conversion - Checked
    Quantity Conversion - Checked
    This condition type has been kept as statistical in the pricing procedure. Still in the proforma invoice the condition type is not getting reflected automatically , whenever I am updating with " carry out new pricing " option the condition type is getting populated.In case of other commercial invoices this very condition type is getting populated automatically without any updates.Along with this point to be noted is that the Condition type in which the actual costi is captured has been kept active.
    What more needs to be configured or what are the changes to be done to populate the condition type automatically as statistical during the time of proforma invoicing?
    Thanks & Regards
    Priyanka Mitra

    Hi,
    Kindly do the pricing analysis and check whether you have the following error such as
    Inactive condition type because of subsequent price,
    Regards,
    Ravi

  • Rounding problem with statistical condition (Hint 80183)

    Dear all,
    we have implemented OSS hint 80183 with the variant 2. As long as a price is valid in the calculation scheme (e.g. EK01),  the rounding variance in NETP is calculated correctly. If the price is not contained in the scheme, the system uses the condition VPRS (although statistical) for the rounding (see variable NETTOPREIS in formula 019).
    if nettopreis is initial.
    nettopreis = ykbetr * 100. "in currency YWAERS
    endif.
    YKBETR contains the value of VPRS, although it is statistical.
    If we remove VPRS from the scheme, we get error V1208 'Error in converting exchange rate from __  to EUR'.
    How can we prevent that the system calculates the rounding variance with the statistical conditions?
    Thanks in advance
    Stefan

    solved in exit

  • Help with pricing condition??

    Hi Guyz,
    I have a requirement with my client, the want to supply material to an external customer at an intercompany price(ZPR9). So whenever a sales order is created for this specific customer it should pull the price from Intercompany price(ZPR9).  I have a option to create new pricing procedure and new pricing condition but this condition should pick up the price from ZPR9 so that we don't have to define the price manually like we do in PR00.
    I can't able to assign ZPR9 to my new pricing procedure because ZPR9 is use for intercompany and this customer doesn not belong to any of our company code.So the situation is i have to define new pricing procedure and new pricing condition but this condition should pull the price from ZPR9.
    when I see the details of ZPR9(condition type) its condition category is assigned as 'Y' which is customer reserve Y. I am not sure what this is.So could you plz advice how to handle this whole scenario. Appreciate your help.
    thanks
    Mohammed.

    mohammed,
    This type of requirement is hard to handle and if you do it in a wrong way, whoever support this process later will have a hard time.
    Anyway, I think one of the twisted ways of doing this is to use Alternative Culculation routine and put the logic to get the condition right out of price condition table (A*) of ZPR9. This is not flexible at all because this involves hard coding, so I do not recommend this.
    The message I can get from your client is "We don't want to maintain the same condition here and there," but sometimes they have to deal with it, because the nature of the condition type is very different from business point of view.
    Having said that, in order for them to have easier way to create the condition, maybe you can develop a custom ABAP to copy ZPR9 condition into the new condition you might be creating, and either have them run the program every time they update ZPR9 or schedule the job.
    Hope this helps.
    Akio

  • Need a list with pricing conditions for each customer

    Hi experts,
    I am searching for a function module or BAPI which reads out all the pricing conditions for a certain customer. The FM/ BAPI should provide the pricing conditions in an internal table.
    Now I do this with BAPI_SALESORDER_SIMULATE.
    It returns me all the condition types and condition values for a certain customer and material.
    But this BAPI is very slow.
    Can anybody help me to find a better solution?
    Thanks & best regards, Reiner.

    Hi,
    Welcome to SDN.
    If you are using ECC 5 or 6  then
    BAPI_PRICES_CONDITIONS

  • Issue with Pricing in Invoice.

    Hi,
    I have one condition ZIST in my pricing. Whenever I create the invoice manually through VF01, all the items are showing up proper values of ZIST, however header is not showing the proper value (Header is showing the value which is suppose to be at the header minus correction value with respect to rounding off). But when I click on ACTIVATE button on the header pricing screen, system updates the correct value of ZIST.
    If I dont click on activate button then Invoice gets saved with wrong ZIST value at the header.
    I dont know how should I tackle this issue, Do I need to write a code somewhere to carru out the pricing again to update the right value of ZIST.
    Edited by: sanjay kulkarni on Sep 22, 2009 4:00 AM

    Thanks for ur response.
    Actually in my case netwr value is correct and all the line items are also in good shape, problem is only with header level pricing, that too only one condition is showing wrong value and that needs ACTIVATE to click to get updated with correct value.
    In my case its very diffucult to replicate the senario and the one example we have for testing is a huge invoice. Also my pricing procedure has many routines hooked to diffrent condition tyeps. Hence it would be tedious job to debug and see each and every routine from the pricing.
    Still, I would try to do it. But I would appreciate if you can let me know what did your developer do wrong in the routines so that I would also concentrate on the same line.

  • Price Rounding Issue - AFS  Pricing

    Hello Friends,
    We are facing an issue in sales order pricing & its subsequent effect in invoice. We use AFS pricing, where different grid sizes have its basic price.
    We have a basic price condition which come thru a master record, and this can be overridden by a manual price condition.
    When such manual condition is entered, it applies to all the quantity of the line item irrespective of the number of grid sizes.
    So suppose I had 6 grid sizes in the line item (which also results into 6 schedule lines) list price will be shown across all the grid sizes, see DOC1
    But when I enter a manual price EUR 7, it applies to the total quantity that is 6. So the net value in this case will be EUR 7, See DOC2
    By calculation, 7/6 = 1.166666666666667
    So when now I create the invoice, the value gets rounded for all the grid sizes & it becomes 1.17
    Here when system calculate the net value it will sum up 1.17, six times & the resultant net value is EUR 7.02, see DOC3
    As a result most of the time there is difference between the order value & the invoice value.
    Please suggest what action should be taken.
    Regards,
    Dhananjay Borate

    Dear Dhananjay Borate,
    You can avoid this issue working this the following options:
    Every Condition Type, in the "Control Data Box 1" have the option to apply a "Rouding Rule" with three different options:
    Empty.
                         In the standard rounding rule '_', values are rounded off according to business standards: 
                             10.454 -> 10.45 DEM
                             10.455 -> 10.46 DEM
    "A"
                        In rounding rule 'A', values are always rounded up:
                            10.459 -> 10.46 DEM
                            10.451 -> 10.46 DEM
    "B"
                       In rounding rule 'B', values are always rounded down:
                          1045.9 -> 1045 LIT
                          1045.1 -> 1045 LIT
    Also you can use,  in the "Gruop Condition ",  the Rounding difference comparison.
             Indicator that controls whether rounding difference is settled for group conditions with a group key routine. If the indicator is set, the system compares the condition value at header level with the total of the condition values at item level. The difference is then added to the largest item.
    Use the Conditons Types:
    PDIF - Diff.value (own)
    DIFF - Rounding Offwith the Conditions that apply to your needs. The standard gives this ones as examples:  [Requirement: Routine 13 - Rounding as perT001R], [Condition Formula 16] and [Basis Type 4]
    Regards,
    Johnattan.

  • Rounding issue in pricing

    HI,
    system is showing different condition values(condition type PNTP) in sales order and Invoice..
    Eg.  material cost in Material master is 16.59 $ per 1000 PCS
    here our ordering quantity is 10,000 pcs
    in sales order it is taking amount as 16.59 per 1000 pcs and for 10,000 condition value is  165.90 $
    but in invoice it is taking amount as 0.02 per 1 pc ( rounding the 16.59 to 1 pc  i.e 16.59/1000 = 0.01659 = 0.02) and hence for 10,000 qunatity it is showing condition value as 0.02*10,000 = 200 $
    here i am getting around 30$ different.. can you please help me in solving this issue...
    are there any SAP notes available for this?
    thanks,
    sudhir

    Hi,
    Go to VK11 and save the condition record as 0.01659 for your condition type.
    Or save the condition record as 16.59 per 1000.
    Then go to V/08 and select your pricing procedure.
    Over there remove the rounding of the condition type.
    Also go to V/06 select your condition type and go to detail.
    Over there just remove the rounding rule.
    Now try to create the sales order and check the pricing.
    One question do you want rounding should be done in the last of the pricing?
    Regards
    Raj.
    Edited by: Raj Aryan Malhotra on Jul 16, 2009 1:25 PM

  • Issue with Freight condition with scales

    HI Experts
    We have requirement like below.
    When customer send an order
    o     if the order contains materials for a minimum quantity the system should not apply freight condition
    o     if the order contains materials for less than minimum quantity the system should apply freight condition
    For example: sales condition freight has scale
         scale qty     unit     amount     unit
    From     0     PC     18,3     u20AC
         4     PC     0     u20AC
    e.g.1  customer send order that contain 9 PC, so system NOT apply freight condition
    material     quantity
    x1     1
    x2     1
    x3     2
    x4     5
    e.g.2  customer send order that contain 2 PC, so system apply freight condition
    material     quantity
    x1     1
    x2     1
    For this we have maintained Group condition and maintained scales up to 3 Order quantity 18 EUR . If order quantity is greater than 4 condition should not apply.
    But Now our issue is when ever Material determination is occurring in Order our condition is going to fail. For example  order quantity is 2 with TAPA item(parent item) and so substitute Item also 2 quantity (Tan item). In this case system is reading order quantity as 4 and our condition is 0. But actual quantity is 2 condition should apply in Order.
    Could you please suggest us where we can control this kind of scenario.
    Regards, Lakshmikanth

    Done through user exit

  • Issue with new Condition type..

    Hi,
    I want to create a Condition Type for VAT %, where we can insert value like...
    5% on 60% of Basic Price OR
    3% on 70% of Basic Price OR
    1% on 80% of Basic Price
    Note: - We have try with New Tax code and it's working... But through it, we require mew Tax code as per change condition..
    That's why we require a Condition Type for variable %...
    Please guide...

    Hi,
    You can do this through two ways.
    Option 1
    Add new condition type in tax procedure and  Make access sequence say with doc type and tax code.
    So for old PO's make the variable condition as 100% and for the new ones you need to create that many tax codes.
    Option 2:
    Write a routine for alternate base that is to be attached in tax procedure. Make a condition type in MM pricing procedure that is statistical and calculates value on base price.  Read this base price in the routine. So with this you will not make that many tax codes.
    Regards
    Sangeeta

  • Issue with if condition in smartform text elements

    Hi all.
    iam having a problem in smart forms
    itab has 3 fields
    id   matnr    werks
    1 a p1
    1 b p2
    1 c p3
    2 b l1
    2 c l2
    3 q u1
    3 l u2
    i neead output like in the smart form
    -id = 1-
    a p1
    b p2
    c p3
    -id = 2-
    b l1
    c l2
    -id = 3-
    q u1
    l u2
    I have aloop in main window
    itab into wa_itab.
    then i have program lines
    iam writing any perform statment insted iam write the code in here
    input paramters wa_itab-id
    output paramters id
    i declared id type zabc-id under global data in global definations
    CLEAR : ID.
    ON CHANGE OF WA_itab-ID.
    *BREAK point.
    ID = WA_ITab-iD.
    ENDON.
    after the program lines i have a text
    /: if &id& ne ' '.
    ---id = &id& ---
    /: endif
    &wa_itab-matnr&  &wa_itab-werks&
    now i see the output
    -id = 1-
    a p1
    -id=-  i don't need this (&id& has no value)
    b p2
    -id=-  i don't need this
    c p3
    -id = 2-
    b l1
    -id=-  i don't need this
    c l2
    -id = 3-
    q u1
    -id=-  i don't need this
    l u2
    I checked my code if two items have same id the id has no value and you can see the output also
    but for some reason its still goinng into the if condition
    And also is there away that i can debugg my text elements like in scripts. my break point doesn't take me to the text elements
    Thanks

    1. Move only the ID into one internal table say i_id,
    2. Now in your smartform,  create a table and loop at i_id into wa_id.
    3.Print your ID in a text, &wa_id-id&
    3. Now in main area  of the table Create a loop with the internal table you mentioned above with 3 elements, say, i_data into wa_data  give CONDITION as wa_data-id = wa_id-id.
    4. Print your other values &wa_data-matnr& &wa_data-werks&
    5. outside main area, clear the work areas.
    This should work fine as i use the same logic in one of my current developments!!!

  • Issue with join condition while using in the corelated sub query

    Bees,
    I am not able to use the below query since i have used a join condition in the corelated sub qery inline view.But i have a requirement like this . Please help me on this
    select * from dept d
    where exists (select 1 from (
    select deptno
    from emp where deptno= d.deptno)
    Thank you
    Boooo

    Hi,
    I've never seen a general solution for how to reference columns from main query a from sub-query c, where c is is sub-query of b, which is a sub-query of a.
    Whenever I've wanted to, I've been able to get the desired results with a different approach.
    In this case, you seem to want
    SELECT     *
    FROM     dept     d
    WHERE     EXISTS     (
              SELECT     1
              FROM     emp
              WHERE     deptno     = d.deptno
              );I'm guessing at your data and desired output.

Maybe you are looking for