A comprehensive guide to understanding and implementing pricing procedures in SAP MM
Pricing in SAP MM determines how the system calculates the final price of materials or services in purchasing documents like purchase orders, contracts, and scheduling agreements. It's a structured process that combines base prices with various adjustments like discounts, surcharges, taxes, and delivery costs.
This guide will help you understand the complete pricing process, from configuration to transaction-level implementation.
The pricing procedure in SAP MM is a calculation schema that determines how the system calculates the price of materials or services in purchasing documents.
The starting price of a material or service. Standard condition types:
PB00: Time-dependent condition used in contracts, RFQs, etc.
PBXX: Time-independent condition used in purchase orders.
Reductions to the base price.
Percentage discounts: Calculated as a percentage of the base price.
Absolute discounts: Fixed amounts deducted from the base price.
Additions to the base price.
Instead of changing the base value, surcharges are added to get the final value.
Taxes calculated based on the net value.
JXS: Standard condition type for taxes.
Tax calculation is typically configured by FI consultants.
Additional costs related to the delivery of materials:
Freight: Transportation costs.
Packaging: Costs for packing materials.
Insurance: Costs to insure the shipment.
Setting up pricing in SAP MM involves several configuration steps. Follow this process to implement a complete pricing solution:
Tables define the combinations of fields (Plant, Vendor, Material, etc.) used for automatic condition determination.
You can use standard tables or create your own. SAP will notify you if a standard table already exists for your field combination.
Access sequences group tables in a sequence for condition determination.
Tables are arranged from most specific to most general. The "Exclusive" flag determines whether the system continues searching if it finds a match.
Condition types represent pricing components like base price, discounts, surcharges, taxes, and delivery costs.
For automatic conditions, assign the relevant access sequence. Manual conditions don't need an access sequence.
The pricing procedure (calculation schema) defines which condition types are used and how they interact.
Configure steps, counters, from/to values, and other settings to control the calculation flow.
Create schema groups for vendors and purchasing organizations to determine which pricing procedure to use.
Assign purchasing organizations to the schema groups created in the previous step.
Link the pricing procedure to the schema groups for vendors and purchasing organizations.
This determines which pricing procedure the system will use for a specific combination of vendor and purchasing organization.
Create condition records for automatic conditions based on the access sequences and tables configured earlier.
These records contain the actual values (prices, discount percentages, etc.) used in calculations.
In the vendor master (BP transaction), assign the appropriate vendor schema group to each vendor.
This completes the link between vendors and pricing procedures.
Condition types are the building blocks of pricing in SAP MM. Each represents a specific component of pricing such as base price, discount, surcharge, tax, or delivery cost.
Condition Type | Description | Condition Class | Calculation Type | +/- |
---|---|---|---|---|
PB00 | Base Price (Time-dependent) | Prices | Quantity (C) | + |
PBXX | Base Price (Time-independent) | Prices | Quantity (C) | + |
RA01 | Discount on gross price | Discount/Surcharge | Percentage (A) | - |
RB00 | Absolute discount | Discount/Surcharge | Fixed Amount (B) | - |
JXS | Taxes | Taxes | Fixed Amount (B) | + |
FA1 | Freight (percentage) | Discount/Surcharge | Percentage (A) | + |
FB1 | Freight (fixed amount) | Discount/Surcharge | Fixed Amount (B) | + |
When configuring condition types, you need to set several parameters:
Defines the nature of the condition:
Determines how the condition value is calculated:
Categorizes the condition for processing:
Determines whether the condition increases or decreases the price:
Controls how the condition can be entered:
For header-level conditions, determines how the condition value is distributed to items:
Determined by the system based on predefined rules:
Entered manually during document creation:
The choice between automatic and manual conditions depends on business requirements. Automatic conditions are useful for standardized pricing that applies consistently, while manual conditions offer flexibility for case-by-case pricing decisions.
Applied at the document header level:
Applied at the line item level:
Some condition types can be configured to work at both header and item levels, giving maximum flexibility.
The pricing procedure defines which condition types are used and how they interact to calculate the final price.
A pricing procedure consists of several components arranged in steps and counters:
Step | Counter | Condition Type | From | To | Manual | Required | Statistical |
---|---|---|---|---|---|---|---|
1 | 1 | PB00 | |||||
1 | 2 | PBXX | |||||
10 | 1 | 1 | |||||
20 | 1 | ZD01 | 10 | 10 | |||
20 | 2 | ZD02 | X | ||||
30 | 10 | 20 | |||||
40 | 1 | JXS | X | ||||
50 | 30 | 40 | |||||
60 | 1 | ZPC1 | 30 | 30 | X | ||
60 | 2 | ZPC2 | 30 | 30 | X | ||
60 | 3 | ZPC3 | X | ||||
70 | 50 | 60 |
Step: Groups related condition types together. All condition types with the same step number are considered part of the same pricing component.
Counter: Differentiates between condition types within the same step. For example, PB00 and PBXX might be in the same step but have different counters.
Calculation steps (with no condition type) use step numbers only to define how values from earlier steps are combined.
The From and To values define the basis for calculations and how values flow through the pricing procedure:
Example: A discount percentage condition type might have From/To values of 10/10, meaning it calculates the discount based on the value from step 10 (base price).
The Manual flag controls whether a condition type appears by default in the conditions screen:
This is useful for condition types that are used occasionally, as it keeps the conditions screen uncluttered.
The Required flag makes a condition type mandatory:
In MM, this is rarely used for pricing because base prices are already required by the system logic.
The Statistical flag determines whether a condition type affects the net value:
For taxes (JXS), this is typically checked because taxes are handled separately in accounting.
For delivery costs like freight and packaging, this might be checked if they are accrued expenses (set in the condition type configuration).
Account keys define how condition types are posted in financial accounting:
Accruals are used for delivery costs when the expense is recognized before actual payment.
The system determines which pricing procedure to use based on:
When a purchase order is created, the system automatically determines the appropriate pricing procedure based on this configuration.
Here are some real-world examples of pricing procedures and how they work in practice.
This example shows a pricing procedure with base price, multiple percentage discounts, taxes, and delivery costs.
In this example:
This example demonstrates the difference between group conditions and non-group conditions for header-level absolute discounts.
Header discount of 50.00 entered using ZD02 (no group condition):
Without the group condition, the full 50.00 discount is applied to each item, resulting in a total discount of 100.00.
Header discount of 50.00 entered using ZD03 (with group condition):
With the group condition, the 50.00 discount is proportionally distributed across items based on their value (1:2 ratio), resulting in a total discount of exactly 50.00.
This example demonstrates how automatic conditions are determined based on access sequences and condition records.
When a purchase order is created with:
The system automatically applies the 5% discount because it matches the condition record for the Plant/Vendor/Material combination defined in the access sequence.
Our site uses cookies. By using this site, you agree to the Privacy Policy and Terms of Use.