Learn tips and tricks on how to navigate through important configuration settings and functions that make up pricing in SAP CRM, which is an important functionality that drives sales processes in various SAP systems.
Key Concept
Pricing is a functionality used to determine pricing information such as gross price, discounts, and surcharges when business transactions (e.g., quotations, sales orders, or contracts) are processed for a particular customer on a particular date based on defined and valid conditions.
Pricing in SAP CRM offers many capabilities, including item level pricing, multiple calculation types, manual price changes at header and item levels, scales with different scale ratings, validity periods, free goods discount, and elements conversion (e.g., you can convert units of measure, currency, and quantity). I discuss the different elements that influence pricing in SAP CRM — including pricing procedures, condition types, access sequences, condition records, and condition tables. I also explain the condition technique, pricing analysis, and condition maintenance. Note that the steps in this article refer to SAP CRM 2007.
SAP CRM Pricing Elements
A pricing procedure defines condition types that are valid for a business transaction based on factors such as sales organization, distribution channel, document pricing procedure, and customer pricing procedure. (I describe and define condition types later in this section.) Pricing procedures control the subtotals that are created and displayed on the pricing screen and the requirements that must be satisfied for you to use a condition type. A pricing procedure also helps to ascertain if a condition type is compulsory and the extent to which manual price processing is allowed. A source system (SAP CRM or other systems, such as SAP R/3) exists for every pricing procedure. Pricing procedures are set up in Customizing via IMG menu path Customer Relationship Management > Basic Functions > Pricing > Define Settings for Pricing > Create Pricing Procedure. Figure 1 shows examples of defined pricing procedures in Customizing.

Figure 1
Sample pricing procedures
To define a new pricing procedure, click the New Entries button and enter the required information in the screen that appears (Figure 2). To define or update the attributes of a pricing procedure, highlight the appropriate entry and double-click the Control data folder on the left side of the screen. Figure 3 shows the control data (e.g., condition types and validity period) for a particular pricing procedure, 0CRM01 — Standard CRM.

Figure 2
Create the pricing procedure

Figure 3
Control data for a pricing procedure
Condition types are the characteristics, features, and attributes of a condition. They define the categorization and utilization strategy of a condition. Condition types can be defined by following IMG menu path Customer Relationship Management > Basic Functions > Pricing > Define Settings for Pricing > Create Condition Types (Figure 4). To create a new condition type, click the New Entries button and enter the required information in the screen that appears (Figure 5).

Figure 4
Condition types

Figure 5
Create a condition type
Note
Figures 6, 7, 8, and 9 are excerpts from the screen shown in Figure 5.
In Figure 6, you see that you can set every condition type’s automatic surcharge, automatic discount, prices, or taxes. This allows you to assign a condition type to every type of price, tax, discount, or surcharge. In addition, you can define the calculation type (e.g., percentage, fixed amount, volume, gross weight) and scale base type (e.g., net value, quantity and gross weight) for condition types, as shown in Figures 7 and 8.

Figure 6
Condition class setting for condition types

Figure 7
Calculation types of condition types

Figure 8
Scale Base Type for condition types
The calculation type allows you to execute different calculations (e.g., fixed amount, percentage, time-based, weight-based, and quantity-based) in the condition record. This capability offers flexibility — for example, it allows you to define the basis on which a discount is calculated, such as fixed amount, volume, or percentage. The scale base type options allow you to make elements such as prices, discounts, or surcharges dependent on a scale (e.g., a quantity scale or weight scale). You can assign an access sequence to every condition type in the condition type details screen as well (Figure 9).

Figure 9
Access sequence definition for condition types
The access sequence is a procedure that the system uses to carry out search functions for valid data in a particular condition type. A typical access sequence consists of one or more accesses that have their individual and corresponding condition tables (which I cover later in this section). You should create an access sequence for every condition type that has condition records via menu path Customer Relationship Management > Basic Functions > Pricing > Define Settings for Pricing > Create Access Sequences (Figure 10).

Figure 10
View the access sequences
When you search for condition records, remember that the order of the search function for fields in condition tables should be from specific condition records to general condition records. For example, say that the basic price of material ABCD is $10, but customer XYZ has a special price of $8 defined for material ABCD. If the access sequence has been configured to first search for a customer-specific material price before searching for the basic price, the system proposes the customer-specific material price of $8 and not the basic price of $10 during transaction processing. To define a new access sequence, click the New Entries button and enter the appropriate information in the screen that appears (Figure 11). To define fields or update the field definitions for an access sequence, highlight an access sequence and double-click the Fields folder on the left side of the screen. Figure 12 shows the field definitions of an access sequence.

Figure 11
Create an access sequence

Figure 12
Access sequence field definitions
Condition records act as a repository for condition-centric data and determine input and output values for a determination process. Condition techniques in SAP CRM and SAP ERP are based on condition records. The output values (price, markup, and discount) are based on defined input values (business partner, business partner group, and product). The values are valid for a defined period of time and you can maintain them based on a value scale.
Condition tables are a combination of search and result fields that uniquely identify individual condition records. When you search for condition records, use search fields to define the search criteria. Examples of these fields are sales organization, distribution channel, price list, currency, product, and division. The supported data types for search fields in the search criteria are:
- ACCP: Posting period JJJJMM
- CHAR: Character string
- LANG: Language key
- DATS: Date field (JJJJMMDD). It is stored as CHAR(8).
- UNIT: Unit key for QUAN fields (explained below)
- TIMS: Time field (hhmmss). It is stored as CHAR(6).
- RAW: Uninterpreted sequence of bytes
- CUKY: Currency key. It is referenced from the CURR field (explained below).
- NUMC: Character string (number only)
Result fields are the output fields of the search for a condition record. The supported data types for result fields are:
- CURR: Currency field
- DEC: Calculation field with comma (,) and plus (+) or minus (-)
- QUAN: Quantity field display with format UNIT on a unit field
- PREC: Precision of a QUAN field
- FLTP: 5-byte precision floating point number
- INT1: 1-byte integer less than or equal to 255
- INT2: 2-byte integer for length field before LCHR or LRAW only (explained below)
- INT4: 2-byte integer
Certain fields cannot be copied to condition tables. Fields with the following data types are not supported:
- LCHR: Long character string with preceding INT2 field
- LRAW: Long byte string with preceding INT2 field
- RSTR: Variable length string of bytes
- STRG: Variable length character string
- SSTR: Short variable length character string
- CLNT: Client
The naming convention for condition tables in SAP CRM is as follows:
- SAP CRM condition tables: SAPxxxxx (where x is a maximum of 5 digits)
- SAP CRM customer condition tables: CUSxxxxx (where x is a maximum of 5 digits)
Condition tables are set up in Customizing via IMG path Customer Relationship Management > Basic Functions > Pricing > Define Settings for Pricing > Create Condition Tables. Figure 13 shows the fields of a sample condition table, SAP006, in SAP CRM.

Figure 13
Condition table fields
Condition Technique
SAP CRM follows a sequence of steps to automatically determine the price of a business transaction. Although the steps described in this section do not require any action on your part, it is a best practice to know them so that you have all the proper elements set up in your system before the steps take place. The condition technique, which is an SAP CRM pricing mechanism, is a key to the pricing flow process because it processes price queries by searching for prices in predefined condition records based on sales area, partner procedures, and document procedures. The steps involved in the condition technique are:
Step 1. Pricing makes input elements — such as sales organization, partner determination procedure, and document pricing procedures — available to the condition technique.
Step 2. The system determines the pricing procedure based on sales organization, distribution channel, division, partner determination procedure, and document pricing procedure.
Step 3. The system determines the defined access sequence by evaluating the first condition type of the pricing procedure. This step, along with steps 4-7, is repeated for each condition type defined in the pricing procedure.
Step 4. The system evaluates the access sequence with the condition tables. The sequential arrangement of the condition tables forms the basis for the search criteria used in determining the specific condition records.
Step 5. The system searches for valid condition records for the condition tables. If the search does not produce a valid condition record, the system searches the next condition table for valid condition records.
Step 6. If the system finds a valid condition record, it is immediately made available for pricing in the form of prices and discounts.
Step 7. If the search procedure consists of more than one condition type, the system repeats the search for a valid condition record for each condition type.
Pricing Analysis
You can also perform a pricing analysis in business transactions. Pricing analysis allows you to check how the different pricing elements from an item are calculated. To use the pricing analysis functionality, a pricing trace must be activated by setting the parameter PRC_TRACE = ‘X’ in transaction SU3 or via menu path System > User Profile > Own Data > Parameters (Figure 14). Keep in mind that the trace recording reduces performance (specifically, system speed) by approximately 10%.
Tip!
For more information on pricing analysis in SAP CRM, consult SAP Note 1307853.

Figure 14
Pricing analysis setting in the user profile
Maintenance of Conditions
Pricing conditions can be defined as an agreement on prices, discounts, or freights based on certain metrics (e.g., business partner, product, and product group) and apply to a defined period of time. The system allows you to define the kind of data (e.g., product, product group, customer, or customer group) that pricing conditions can be created for by selecting a condition type and a condition table. Refer back to Figure 5 to see where to make these settings (note that Figures 15 and 16 are pulled from Figure 5). Depending on how you configure condition types (Figure 15), some elements, such as amount and unit of measure, can be changed (Figure 16).

Figure 15
Customization setting options for changes to condition types

Figure 16
Full view of changes you can make to a condition type
A condition maintenance group allows you to bundle condition tables and types for condition maintenance. The condition maintenance group defines the available condition types you can choose when creating condition records. You can set up condition maintenance groups in customizing by following menu path Customer Relationship Management > Master Data > Conditions and condition technique > Condition Technique: Basics > Create Maintenance Group (Figure 17). To define a new maintenance group, click the New Entries button and enter the required information in the screen that appears (Figure 18).

Figure 17
Condition maintenance groups

Figure 18
Create a maintenance group
To view the details of a maintenance group, highlight an existing maintenance group in Figure 17 and double-click the Condition Maintenance Group: Detail folder on the left side of the screen (Figure 19). For my example, I chose the maintenance group BUPADISCOU.

Figure 19
Aggregation of condition tables and condition types in the condition maintenance group
Condition maintenance allows you to revise your business rules at any point in time. For example, you can decide to grant a 10% discount to customers only in the month of December. You can do this by maintaining a condition master record in SAP CRM by following menu path SAP Menu > Master Data > Prices and Conditions > Maintenance Conditions (Figure 20). Here you can select the application (e.g., SAP CRM) and the maintenance group (e.g., BUPADISCOU).

Figure 20
Initial selection screen for condition maintenance
Click the execute icon and a screen similar to Figure 21 appears. Here, you are prompted to choose a condition type (e.g., 0K07 — Customer Discount) from a list. After you select one, the screen becomes populated with several line items. Highlight a line item and click the Details button. In the screen that appears, you can add details such as the sales organization, condition rate, and validity period (Figure 22).

Figure 21
Condition type selection using the list shown in the inset

Figure 22
Maintenance of condition record
Kehinde Eseyin
Kehinde Eseyin is a security architect. He holds a bachelor’s degree in computer science. He has about 12 years of IT security, governance framework, IS risk, and compliance experience gained by working in numerous global organizations. Over the years, he has demonstrated competencies in security design, information assurance, cyber security, data privacy, threat and vulnerability management, penetration testing, business architecture, project management, IT audit, IS controls framework, and identity and access management.
You may contact the author at eseyinok@gmail.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.