Hello Experts,
On Maintenance Contracts (VA41) in our company we have a design of a parent item (that has pricing on it) and a child item that has the billing plan on it.The Pricing Procedures are designed in such a way, that all pricing conditions on the parent are set to statistical so it doesn't contribute to Net value on the parent item. There is a condition type on the child item, say ZCPY, that copies the condition type value from the parent, say ZNSV (Net Service Value), that represents item final price.
Since ZCPY is used to represent monthly price of the service item, its calculation type is set to 'M' (as doing this only can guarantee that all months irrespective of being 28, 29, 30 or 31) can get the same monthly price irrespective of number of days in them. So we can't use a Condition type with Calculation type 'C' - Percentage, with 100% rate, which perfectly copies any value.
The problem is that, if we use Condition Value formula to copy the value from parent condition ZNSV to ZCPY, then SAP will interpret the ZCPY value as absolute value, rather than monthly value, and the same value will apply on Billing Plan rows irrespective of the duration between Settlement From and Settlement To dates being a month, a quarter or a year. This is of course incorrect as we want the Billing plan row value to be equal to be ZCPY monthly value, if the Billing plan type is set to Monthly, multiplied by 3 times ZCPY monthly value if the Billing plan type is set to Quarterly etc.
So the only way left to copy the value from parent condition ZNSV to child condition ZCPY is to use Condition Base Value formula. However, we can only set Condition rate (XKMOV-KBETR) and Condition base (XKWERT = XKOMV-KAWRT) in Condition Base Value formula. So what was done earlier, is to divide the parent ZNSV value by Quantity on the item and assign it to Condition rate (XKOMV-KBETR). This will of course cause rounding issues, as the condition rate field XKOMV-KBETR has only two decimal places. This causes the parent price in ZNSV not to match the Billing child price ZCPY, because of loss during rounding of Condtion rate XKOMV-KBETR.
To overcome the limitation, we are assigning ZNSV Condition value (XKOMV-KWERT) directly to Condition rate XKOMV-KBETR and assigning the Quantity value to Condition rate unit (XKOMV-KPEIN).
SAP calculates ZCPY Condition value
= ( Condition Rate (KBETR) * Condition Base (Quantity = KAWRT) ) / Condition rate unit (KPEIN)
= ( ZNSV Condition Value * Quantity ) / Quantity
= ZNSV Condition Value (without rounding issue)
The problem with above approach is the KPEIN is only a 5 digit integer, limiting the Quantity on the item to a maximum 99,999 units. Also, the above approach will not allow for fractional quantities as KPEIN is an integer.
In this context, can anyone here suggest a better way to copy the value from ZNSV on parent item to ZCPY on child billing item? Please note that we can suggest redesigning the parent item to directly do the Billing plan and have its pricing conditions activated from current statistical, as this design already used since long and in tons of Contracts. Also as I said, the calculation type on ZCPY condition can't be changed from 'M' as we want to be monthly price.
Any user-exits or configuration techniques to overcome this? I never thought such a simple thing as copying one condition to the other can be such a mess!!