Composition of the overall price of a Sales Order
The overall price of a sales order is calculated based on multiple order items, with each item's value made up of various price elements, also known as price conditions.
Consider a sales order that includes two items: a laptop and a printer. Each item has its own base price and may have additional price elements such as discounts, surcharges, and taxes applied to it. The overall price of the sales order is computed by summing the prices of all items and applying relevant price elements to reach the final total price.
Let's consider some example values:
- The laptop has a list price of $1000, but a 10% discount is applied as a price condition. So, the final price is $1000 - $100 (discount) = $900.
- The printer has a list price of $200, but a $20 additional surcharge is added as a price element. So, the final price is $200 + $20 (surcharge) = $220.
To calculate the overall price of the sales order, the system first determines the total price for each item, then sums these totals. In this case, it would add the calculated prices of the laptop and printer ($900 + $220 = $1120).
Additionally, header-level price elements can be applied. These price elements are calculated based on the order's total amount. For example, if the combined cost of the laptop and printer is $1120, and an additional 10% discount is applied for orders over $1000, the final total would be $1120 - $112 (header-level discount) = $1008.
In summary, the system calculates the final total price for the entire sales order by considering the prices of all individual items and their associated price elements, plus any header-level price elements applied to the order total.

You can review the Price Conditions and the calculated values in the Conditions view of the Create Sales Order app.

Manual and Automatic Price Condition Assignment
Price conditions can be either manually set by the user or automatically determined using master data. For instance, a company may have predefined master data called Condition Records that dictate a 10% discount for a specific customer, say Customer ABC. When a sales order is generated for Customer ABC, the system automatically applies the discount based on these condition records, eliminating the need for manual intervention. This automation not only speeds up the order entry process but also minimizes the risk of human error in calculating the final sales order price.
Condition Records
Condition records are part of the master data that define the pricing conditions for sales and distribution processes. They specify the terms and conditions, such as discounts, surcharges, taxes, and freight costs, that apply to a particular business transaction. Condition records are used to automate and control the pricing process, ensuring consistent and accurate pricing for customers and products.
You can use the Manage Prices - Sales app to maintain Condition Records.

Condition Type
Condition records are categorized by condition types, which define the purpose of the condition, such as discounts (e.g., customer discount, material discount) or surcharges (e.g., peak season surcharge).
Condition Record Key
For every condition type, condition records are always defined based on a key. A key is a sequence of fields that tells the system when to apply the condition record.
For example, a condition record you could have:
- Condition Type: PR00 (Base Price)
- Key Field: Sales Organization (1010), Material Number (e.g., LAPTOP1001)
- Value: $1000
This condition record says that, in the Sales Organization 1010, the base price for the laptop model `LAPTOP1001` is $1000.
Given a condition type, you can also assign several possible key combinations.
For example, the standard condition type PPR0 ( Price ) foresees the following sequence of key combinations:
- Sales Organization, Distribution Channel, Customer, Material
- Sales Organization, Distribution Channel, Material
A a consequence, you can use the second key to value a generic material price, and you can use the first one to value a Customer-specific material price.
By using different keys, you can set up condition records that apply specific pricing rules in different scenarios.
Practical Example: Suppose your company sells laptops, and you want to set up different price conditions based on various factors.
- Base Price for a Specific Laptop
- Condition Type: PR00 (Base Price)
- Key Field: Material Number (e.g., LAPTOP1001)
- Value: $1000
This condition record says that the base price for the laptop model `LAPTOP1001` is $1000.
- Bulk Purchase Discount
- Condition Type: K004 (Bulk Purchase Discount)
- Key Fields: Material Number (LAPTOP1001), Quantity (>=10)
- Value: 10% discount
This condition record specifies that if at least 10 units of `LAPTOP1001` are purchased, a 10% discount is applied.
- Special Offer for a Specific Customer
- Condition Type: ZC01 (Customer-Specific Discount)
- Key Fields: Customer Number (CUST2001), Material Number (LAPTOP1001)
- Value: -5% discount
This condition record indicates that if customer `CUST2001` purchases `LAPTOP1001`, a 5% discount is applied.
- Seasonal Promotion
- Condition Type: ZP01 (Seasonal Promotion)
- Key Fields: Sales Document Type (Promotion), Material Number (LAPTOP1001)
- Value: $50 off
This condition record applies a $50 discount to `LAPTOP1001` if the sale is part of a seasonal promotion.
How It Works During Order Processing Let's say Customer `CUST2001` places an order for 15 units of `LAPTOP1001` during the seasonal promotion.
When the order is processed, the system will check the condition records and apply the appropriate pricing conditions. In this case, the system will recognize that the customer is eligible for a bulk purchase discount (-10% = -$100) and a customer-specific discount (-5% = -$50), as well as the seasonal promotion discount (-$50).
As a result, the final price for each unit of `LAPTOP1001` will be calculated based on these condition records ($1000 - $100 - $50 - $50 = $800), providing the customer with the most cost-effective pricing based on the specific order details and conditions.
Condition Record Validity Period
In addition, you can specify a validity period to limit a pricing agreement to a specific period.
For example:
- Different price lists for different years.
- Discounts that are given only for the duration of a special offer.
Condition Record Upper and Lower Limit
You can specify an upper limit and a lower limit for each condition record. If you want to manually change the pricing elements that are determined by the system, you can do so only within these limits.

Condition Record Scale
You can define the values in a condition record, such as price, surcharge, and discount, according to a scale.
Scales are used to set specific values based on different factors, like the quantity of items being purchased. Scales condition records are essentially a way to apply different pricing based on certain criteria.
The condition type determines the category of a condition and describes how the condition is used.
For each condition type, you can control the scale base type and the calculation type.
There is no limit to the number of scale levels.
For example, many businesses offer bulk purchase discounts to incentivize customers to buy larger quantities. For example, a wholesale supplier might provide a lower per-unit price for a product if a customer purchases a certain volume. Scales could be used to automatically apply these bulk purchase discounts based on the quantity of items ordered, ensuring that the correct pricing is consistently and accurately applied.

The table below lists the possible scale base types and calculation types:
Scale Base Type | Possible Calculation Type |
---|---|
Value | Percentage of an initial value |
Value | Fixed amount |
Quantity | Amount by unit of measure |
Weight | Amount per unit of weight |
Volume | Amount per unit of volume |
Period | Quantity per unit of time |
Pricing procedure

A pricing procedure is a sequential list of condition types and subtotals that are used to calculate the price at the item and header levels of a document.
All condition types that are permitted for a transaction in pricing are contained in the pricing procedure.
The pricing procedure is determined in Customizing according to the following criteria:
- Sales area (consisting of sales organization, distribution channel and division)
- Sales document (document pricing procedure field)
- Sold-to party (customer pricing procedure field)
Pricing Procedure Attributes
Configuration of pricing procedures contains a variety of attributes that can influence the processing of individual condition types.
Some of these attributes are as follows:
- Level (Step): The level in the pricing procedure determines the sequence in which the system processes and places the conditions in the sales document (where applicable).
- Subtotals: The pricing procedure can contain any number of subtotals. To define subtotals, leave the Condition Type field blank and enter a name for the subtotal in the Description field.
- Condition formula: The condition formula in the pricing procedure allows you to define an alternative base for calculating the condition value and for consolidating conditions for subtotals. The default base is the current value that resulted from processing the previous condition types.
- Requirements: You can specify requirements (ABAP routines) to determine how the system must use the individual condition types.
- Specific settings: you can mark a condition type in the pricing procedure as a condition that is mandatory, a condition that can only be entered manually (any existing access sequence is ignored in this case), or as a condition that can be used for statistical purposes only.
Counter Field in a Pricing Procedure
If you want to retain the input sequence for manual conditions, these conditions must appear at the same level. Use the Counter sub-key to enter conditions at the same level in the pricing procedure.

Access Sequence
An access sequence defines the search strategy to locate the correct condition record of a specific condition type to which the access sequence is linked. This search strategy defines the sequence in which the system reads the condition records for a condition type. Every condition type that retrieves its data from condition records uses an access sequence.

An access sequence can be assigned to a condition type (except for condition types that are configured as a header condition).
Each access within an access sequence describes the key fields for the desired condition record. Each line or access in an access sequence references a condition table.
A condition table defines the key fields that are used for a condition record.
If an access sequence contains more than one access, the accesses are usually arranged from specific to general in descending order.
An access can also be made dependent on the requirements (ABAP routines) that are assigned in the access sequence.