SAP IS-Retail Sales price calculation logic
Recently I have seen few interesting articles about strategies how companies set prices of sales. I have to admit that after the lecture I was a bit surprise how complex it is. In case when the company manufacture their own products usually distribution is done to the wholesales or direct distribution to end client but majority of distribution goes to wholesalers and focus goes more to logistics processes the sales price calculation. Additionally with this business model manufacturing company knows or can predict in advance costs of production and final sales prices. With this approach standard ECC functionality seems to be sufficient as it’s still full of options.
- Grouping Customers via price lists or price groups (set in Customer master data).
- Grouping material is as well possible via material groups (set in material master data).
- Sales area via pricing reference distribution channel or division seems to be enough (set in customizing).
- Pricing reference material (set in material master data).
Regarding maintenance here is my humbled opinion that Sap does not provide robust solution. We have VK31, a bit “raw”, VK11 manual work and maintaining using index.
Totally different situation is in retail business where trader’s main area of operation is to buy cheap and sell with profit. This margin is crucial for retail companies while they are not able to decrease costs of production as a kind of income so the single income (of course we can talk here about services etc) comes from margin calculated for a huge number of articles that company trade with.
Sap Retail sales price calculation
As described in the introduction to this article, retail pricing works a bit differently than “standard” ECC pricing. The most important are margins which are main income for trading companies.
Scenarios for purchase of goods:
- Vendor deliver goods directly to store.
- Vendor deliver goods to distribution center and then merchandise distribution to stores.
- Sales from distribution center to Customer.
- Sales from store to Customer.
- Sales between two distribution centers – calculation of transfer price*.
- Sales from distribution center to store – calculation of transfer price*.
‘* This could be simple Stock transfer order where no pricing procedure is executed or scenario with purchase price calculation with billing document
Purpose of sales price in Retail
I assume this could be the most important to understand, that purpose of Sales pricing calculation execution in Retail is generation of condition types records used later on in different pricing procedures like sales to wholesales Customer, retail Customer or intercompany processes. Condition type records are created with pricing document that can be released, rejected etc.
Pricing procedures used throughout the process
- MM pricing procedure – used to calculate purchase price of goods from Vendor to DC/Store.
- SD pricing procedure – used to sell goods to from DC/Store to end Customer.
- Retail pricing procedure – used to calculate transfer price (in case of merchandise distribution) or final price. Outcome of those calculation are pricing condition records created via price document.
Example structure of enterprise
The scenario that I use for test purpose is quite simple, one distribution center and three shops. Two shops are supplied by distribution center and one store has direct deliveries from Vendor. Shops sell in two distribution channels and third distribution channel is assigned to distribution center for purpose of transfer logistics and internal processes.
Sales Organization/Distribution channel:
- ZSH1/P1: Direct
- ZSH1/P2: Commercial
- ZSH1/P9: Internal DC
- ZPD2 – Distribution center -> ZSH1/P9
- ZSK1- Store 1, ZSK2 – Store 2, ZSK3 – Store3 (supplied by external Vendor)
In case if you calculate sales price on the level of distribution channel, assignment to reference site is mandatory. This is because same distribution channel can be used in number of sites and data relevant for price calculation are maintained on site level, like source of supply, assignment to purchase organization etc.
Sales price calculation steps:
- Purchase price determination. External vendor – standard MM pricing procedure. Internal vendor – transfer price, determined via SD pricing procedure. If no price conditions records already exist, calculation is done in background.
- Calculation of Sales price (gross and net).
- Rounding of Sales price with price point rounding gives Final price.
- For wholesales Customers calculation of Retail price.
Purchase/Sales price determination
To calculate purchase prices, purchase price determination type is used. Calculated here purchase price is later on used to get sales price with predefined margins. The calculation starts with selection of source of supply. In each article for every distribution center or store, source of supply can be selected. Usually either standard (external vendor) or internal (transfer from another DC/store). Determination of purchasing price if external vendor is selected, the purchase price is determined on the basis of a purchase price calculation schema (standard for MM). If the source of supply is an internal vendor, the purchase price is determined on the basis of a calculation schema defined for sales price determination (transfer price).
As similar to purchase price calculation there are numbers of sales price determination procedures. Entry A means that whole calculation is performed based on purchase price and predefined markups. On the other hand entry B means that sales price is determined on currently existing condition records and here we can simulate impact of purchase price change or markup adjustment on our current sales price.
Different methods of calculating prices (one step, two steps)
Single-step price calculation is when store/DC procures articles directly from a Vendor, means no internal goods movement from distribution center to store. Calculating sales prices for the stores is based on the purchase price for external vendors (standard MM pricing procedure determination). Here important is that not all MM condition types will be taken into account for sales price calculation despite they are present in MM price procedure and have valid condition type record.
Image 1 – MM condition type validity on/off
Two-step calculation is executed for stores that are supplied by a distribution centers (internal vendors). Calculating sales prices for the stores is based on the transfer price for distribution centers (SD pricing procedure). Two step procedure is valid as well between two distribution centers.
In two step calculation if you calculate price for store and it supplying distribution center in one execution of transaction, two rows are present, one for price calculation for store and second for distribution center. Any changes done to row with distribution center will have immediate impact on calculation of price for store. If you execute two-step calculation price and there is DC transfer price at distribution chain level, it’s read from condition records. Otherwise online calculation for transfer price is performed in background and results are not stored in database.
Price point rounding
This setting allow the company to round final and retail price to some round or more user friendly values like 6.99 instead of 7.03 or 6.84. How does price point rounding work, was described several time. What is important here is the connection between type of distribution channel and selected rounding (can be for final price or retail price). If the distribution channel for which we calculate price is wholesales then retail price can be as well rounded.
Hint: Manual changes to Final price doesn’t involve rounding procedure.
- Purchase price is calculated with MM pricing procedure (in case of external procurement) or with transfer price (in case of internal supply – SD pricing procedure) and assigned to subtotal S –Effective value
- Later on system execute Sales price determination procedure based on pricing procedure assigned to price type and determined base on sales area for which were used on selection screen for calculation program. Entry for calculation is previously determined purchase price.
- Planned markups are read from condition type AUFS and applied for purchase price
- Sales price gross and net is calculated form purchase price and markups
- Price point is determined and applied (price point assigned in Customizing to either merchandise category or to article hierarchy node). Final price is calculated
- Retail price is calculated based on Final price and which is rounded by different price point rounding (assignment in customizing can as well indicate same price point rounding )
Configuration with example
Distribution chain control.
In settings tells how distribution channel is used from Retail perspective.
Image 2 – Distribution channel P2 settings
Image 3 – Distribution channel P9 settings
Dist. chain category is essential setting from price point rounding determination (if Retail price should be rounded as well). DChain pricing level is used to allow level on which price calculation can be run. Same configuration is for P1 and P2 distribution channel.
Maintain price type.
This step is crucial from sales price calculation. Here we set which Sales price schema is used to calculate retail price (not purchase price). Data held field set how calculation will behave if purchase price will change in calculation program (markup is help, final price is held and markup is adjusted). In general parameters for pricing for Retail document schema is set and used during sales price determination.
Image 4 – Own pricing type
Image 5 – Example of Sales price calculation schema
For distribution channels P1 and P2 I use different Price type – ZSH2,which include Retail markup and retail price calculation.
Image 6 – Example of Sales price calculation schema with Retail price calculation.
Assign pricing type to organization level
Image 7 – Assigning price type and reference site to sales area.
This step bound Distribution channel with price type (sales price procedure) used for calculate retail price. Additionally as described above reference site is needed in case that selection screen for sales price calculation program doesn’t contain site.
Maintain Purchase Price Determination Sequence
Here I use standard system settings means use of standard MM schema determination and as well source determination (external or internal based on parameter from Article regarding source of supply).
Image 8 –Purchase price determination sequence.
Maintain Sales Price Determination Sequence
Detail about this step described above and selected option is A – Calculate sales price from planned markup.
Define List Variant and Assign Items
This configuration allow user to choose which fields are available in the program to calculate Retail price. Standard list variant 01- Standard retail list variant is sufficient.
Price Point Group
Define price point group setting was number of times described on SCN. During assignment we have to choose in which situation price point group will be used.
- 01 – Final Price
- 02- Retail price (for wholesalers only) – applied only if distribution channel for which calculation is executed has type “for wholesale trade”
Image 9 – Assign price point group to sales area.
This is second the most important step in configuration that consists of two task. First task is to assign values from retail sales pricing procedure (either subtotals or condition records) to fields in the list displayed by the program. Some listed fields are ready to input so in this case by changing value within, system will change value in pricing procedure and makes the recalculations. By assigning condition type, system will create/update condition record mentioned in condition type for selected application.
Image 10 – Example of match list field with condition/subtotal in sales price schema and further update of condition type record.
In Sales pricing schema WWS003 field ENDPR (Final price) is calculated by system (no reference to condition or subtotal in sale price procedure) and value from this field updates condition PR00 for application V.
Because the price can be calculated on three different levels (this depends on parameters that we enter on selection screen for pricing program): 01 – Distribution chain 02 – Site 03 – Price list, conditions might be stored in different condition tables according to selected level
Image 11 –Assignment of condition type on different level of calculation to condition table.
In this example sales condition PR00 on level 01 –distribution chain is stored in table 304 but on price list level in table 306.
Sites: DC – ZPD2 (standard source of supply) ,Stores: ZSK1 – internal ZSK2 – internal ZSK3 –external
Vendors: 1126 – price 200PLN, 1121 – 190 PLN 1122 – 233PLN
Image 12 – Calculation run for distribution channel P9 used internally by Distribution center ZPD2.
First calculation of price for distribution center ZPD2 – ZSH1/P9. Due to standard source of supply external Vendor is determined (cheapest ). System determine MM pricing procedure and execute pricing.
Image 13 – Calculation run results for distribution channel P9.
Last position in pricing procedure has in configuration set subtotal – S effective price and it’s copied as purchase price.
Image 14 – MM pricing procedure used to determine purchase price for distribution channel P9.
Hint: Not all condition types are visible in analyses of pricing procedure due to on condition type level field Rel. to pricing is not set.
Sales price pricing procedure comes from Price type assigned to SalesOrg/Distribution channel (image 7).
Image 15 – Calculation results – Sales price perspective.
At the end of processing system wants to update following condition records. Due to prices were calculated on level of Sales organization and distribution channel, system select for each condition tables for this type of upload.
Image 16 – Condition type records update in calculation for distribution center P9.
Now calculation price for all 3 stores and distribution channel P2 (no price rounding)
Image 17 – Calculation run results for distribution channel P2 and stores ZSK1, ZSK2, ZSK3.
ZSK1 and ZSK2 are supplied internally (from ZPD2 – distribution center) and first line for sales price determination on distribution channel level use reference site ZSK2 so transfer price is applied from ZPD2. Last line (store ZSK3) use external procurement so standard MM pricing is executed. Sales price pricing procedure is the same for all channels/stores and comes from price type calculation assigned to sales organization/distribution channel. Retail price is different because for some stores because store ZSK2 has 5% extra markup and store ZSK1 has 15% . Similarly beside transfer price for ZSK1 and ZSK2 is the same in Base cost column Net cost is different because ZSK2 store has extra discount due to for example short distance from DC.
Image 18 – Calculation results for P2 – Sales price perspective.
Image 19 –Condition update.
Hello Maciej Jarecki,
Thanks for the article, It is really interesting.
Normally in SAP MM based on Your Currency set up, you have different prices for Valuation like the selling price for the external customer(legal Valuation), Profit Center Valuation if we sell the product within the company code, do we have something like this in SAP retail? Currency Type 10 and 32 in OB22.
Thank you. The tool presented here is only to calculate the conditions. No sales is done here. From finance point of view IS-Retail has as well option to set in OB22 additional currencies.
Hope it helps.
Hi Maciej Jarecki,
Really interesting article. I would like to ask you if you know what is the best way to catalog an item in IS retail from factory center with price control S to a CD where I´d need the price control V.
Thanks a lot in advance.