SAP R/3 provides a variant configuration feature that allows you to plan for variations in build-to order products. The author provides tips he has learned from using this feature in a high-tech manufacturing environment, and he outlines the correct process for setting up the variant configuration functionality.
Key Concept
R/3's variant configuration functionality is integrated with other logistics and financial modules in addition to SD, including PP, MM, and CO. It is useful when determining, for example, purchasing needs, production orders, or costing when dealing with a complex, configurable product.
Consider the purchase of a computer. Customers can specify exactly what they want in their computer through an easy custom-configuration and ordering process. This build-to-order process is a win-win situation for both suppliers and buyers. Suppliers don't have to maintain months of aging and expensive inventory and buyers get the best pricing and latest technology for features they really want.
This comes with a price on the logistics side: How do you efficiently plan for all the possible product variants? Computers and other high-tech gadgets typically have a large number of variants. The more factors that influence how a computer is put together, the harder it is to plan possible variants of the product. The two major problems with variants are:
- The combination of individual product features can lead to a vast number of variants.
- Dependencies among the individual product features mean that not all theoretically possible feature combinations are allowed due to technical or marketing reasons.
The result is that complex products require complex configuration tasks in sales, production, and distribution. However, a company selling or producing products with variants needs to perform these configuration tasks quickly and accurately. This is why SAP R/3 provides a strong variant configuration feature in the Sales and Distribution (SD) module that you can use to easily configure products. I will explain the basic variant configuration functionality using the computer example mentioned earlier. I will also offer tips based on my experience. This feature is available in all versions of R/3; the screenprints shown here are from R/3 4.7.
Getting Started
The configuration process starts with selecting the base computer unit and adding various features such as operating system, processor, memory, hard drive, and applications. The final price of the product will be based on the options selected for each of these features.
The steps required to create a variant product are:
- Create a configurable material.
- Define characteristics that describe the product. The values that can be assigned to these characteristics are used to define the product.
- Create a bill of materials (BOM) for the configurable material.
- Create a configuration profile.
- Define variant conditions for a configurable product. The price of a configurable product can vary according to the characteristic values assigned to the material. You use these variant conditions to control pricing for a configurable product.
- Create the object dependencies that describe the dependencies among BOM items, characteristics, and characteristic values.
Now I will walk you through each step.
Step 1. Maintain a Configurable Material
Start by creating a configurable material ZDESKTOP with a material type KMAT, which is a standard R/3 system configurable material type. The indicator Material is configurable is set in the attributes of the material type KMAT only (Figure 1). This means that the indicator is set automatically when a material of material type KMAT is created. Also, the Item category group 0002, which you will be using for configurable material, is the default for material type KMAT.

Figure 1
Set the Material is configurable indicator
To create a material, use transaction MM01. Specify the material type as KMAT. Alternatively, use transaction MMK1 to create a configurable material. In this case, the material type KMAT is automatically selected.
Make sure that the Item category group is 0002 in the Sales: Sales Organization Data view of the material master. Standard R/3 supports item category groups 0002 and 0004 for variant configuration. The item category group controls the assignment of item categories in the sales order, which in turn determines whether the item is relevant to pricing and transfer of requirements.
In my example, only the desktop computer, as the superior configurable material, transfers requirements and is
relevant to pricing. The components processor, memory, hard disk drive, removable storage, etc., are displayed for information only in the sales order. You use Item category group 0002 for pricing and transfer of requirements to take place only at header material level. Item category group 0004 is used for pricing and transfer of requirements to take place at the component level.
Maintain checking group 02 (individual requirement) for the Availability check in the MRP 2 view of the material master. The checking group defines the type of requirement that is created for a material.
Next, create all the components of the configurable material. Use material type HALB (semi-finished product) for these materials. These components are the characteristic values of all the characteristics you will use for the configurable material.
Note
You can define a material as configurable in the material master even if the material type does not support configuration. To do this, set the Material is configurable indicator in the Basic Data view of the material master (Figure 1).
Step 2. Define Characteristics
The characteristics define the features of a configurable product — in this case, the computer. You now define the characteristic values for each individual characteristic that can be assigned to the product, as shown below:
| Characteristic |
Value/BOM component |
| PROCESSOR |
450MHz/001-PRO
550MHz/002-PRO
667MHz/003-PRO |
| MEMORY |
256MB SDRAM/001-MEM
512MB SDRAM/002-MEM
1GB SDRAM/003-MEM |
| HARD DRIVE |
6GB drive/001-HDR
12GB drive/002-HDR
36GB drive/003-HDR |
| CD/DVD DRIVE |
CD-ROM drive/CD-DRIVE
DVD ROM drive/DVD-ROM-DR
DVD RAM drive/DVD-RAM-DR |
| REMOVABLE |
Zip drive/ZIP-DRIVE |
| STORAGE |
No Zip drive/NO-ZIP-DRIVE |
| KEYBOARD |
USB keyboard/KEYBOARD |
To create a characteristic, follow the menu path Logistics>Central Functions> Variant Configuration>Environment> Classification>Master Data> Characteristics (or use transaction CT04). The following shows how to create the first characteristic, PROCESSOR. Use the same method to create the other characteristics and assign values to them.
Note
Configurable materials always represent an individual customer requirement. Therefore, the availability of a configurable material can only be checked against sales order stock specifically for this order.
PROCESSORCharacteristicFigure 2Basic dataPROCESSORReleasedStatusData TypeCharacter Format, Currency Format, Date Format, Numeric Format, Time Format
Figure 2
The Basic data for characteristic PROCESSOR
For the characteristic PROCESSOR, maintain Character Format and set the Number of Chars to 30. This is the total number of characters that can be used to assign a value to this characteristic.
In the Value Assignment section, use the Single Value or Multiple Values indicator to assign either one value or more than one value to a characteristic. For the characteristic PROCESSOR, select the Single Value indicator, as only one processor will be used during the configuration of the desktop. Maintain the Entry Required indicator for this characteristic as well. It means that a value must be assigned to this characteristic when the product is configured. You cannot have a desktop without a processor.
Once you define the characteristic PROCESSOR, you need to maintain its allowed values. Click on the Values tab and enter the values with descriptions. These characteristic values become the components in the BOM of the product ZDESKTOP. Select the default value indicator (D) for the characteristic value 001-PRO (Figure 3). This value appears as the default value in the Characteristic Value Assignment screen during sales order entry.

Figure 3
Maintain the allowed values for each characteristic
The last step to creating your characteristic is to assign it to a class. In variant configuration, a class is used to hold the characteristics that describe a configurable material. By linking the class to the configurable material, you allow the material to be configured using the characteristics of the class.
To create a class, follow the menu path Logistics>Central Functions>Variant Configuration>Environment> Classification>Master Data>Classes (or use transaction CL02). Enter the name ZDESKTOP for the class in the Class field (Figure 4). The value 300 in the Class type field supports variant configuration in R/3. In the Basic data view, maintain Desktop as the language-dependent Description of the class, and Released in the Status field. Only class and characteristics with status Released can be used in variant configuration.

Figure 4
Link each characteristic to class ZDESKTOP
Once you define the class ZDESKTOP, you need to assign characteristics to it. Click on the Char. tab and enter the
characteristics as shown in Figure 5.

Figure 5
Enter the characteristics for class ZDESKTOP
Step 3. Create a BOM
The BOM contains all the components used to make up the configurable material. To create a BOM for a configurable material, follow the menu path Logistics>Sales and Distribution> Master Data>Products>Bills of Material>Material BOM>Create (or use transaction CS01).
Enter the ZDESKTOP configurable material in the Material field. Enter the plant and the BOM Usage 3 Universal. Enter all the components in the Multiple entry screen for the components shown in Figure 6 on the next page. In standard R/3, BOM Usage 3 supports BOM explosion relevant to sales and distribution.

Figure 6
Enter all components for the BOM
Tip!
The defined characteristic values and attributes can be overwritten while maintaining a class so that the same characteristics can be used in different classes, but individual attributes or characteristic values can be different in the different classes. To do this, click on the Overwrite values tab to maintain class specific values and click on the Overwrite characteristic icon to maintain class-specific attributes of the characteristics (Figure 5). Characteristics must have the status Released prior to assigning them to a class.
Tip!
You can assign classes of different class types in the configuration profile by creating more than one profile. However, avoid using more than one configuration profile for one material. The reason for this is that whenever you start the configuration for this material, the system prompts you with a pop-up window and ask you to select a configuration profile. In most cases, this slows down the business process.
Step 4. Create a
Configuration Profile
The configuration profile allocates a
configurable material to a class that has characteristics for describing the
configurable product. To create a configuration profile, follow the menu path Logistics>Central Functions>Variant Configuration>Configuration Profile> Create (or use transaction CU41). In the dialog box, select Material as the object. Enter ZDESKTOP as a configurable material name in the Material field. In the Configuration Profile Overview screen, enter ZDESKTOP as the profile name and 300 as the class type.
To allocate the configurable material to a class, select the profile created and click on the Assignments tab. Enter the class ZDESKTOP in the Class field (Figure 7). Return to the Configuration Profile Overview screen and change the status to Released from In preparation.

Figure 7
Make the class assignments for the configuration profile
Step 5. Define Variant Conditions
Variant conditions determine the price of a configurable material based on the characteristics and characteristic values used to describe this configurable material. To use variant condition, you must create characteristics called "reference characteristics" that refer to table fields. This characteristic value is determined from the table, unlike other characteristics for which the user defines the value set.
Tip!
You can create several pricing reference characteristics that refer to one table field, but creating only one pricing reference characteristic for all the configurable materials is considered a best practice. This is good from a consistency point of view, as the same reference characteristic is used for the pricing of all the configurable materials. This makes characteristics maintenance easier.
To create a reference characteristic, follow the menu path Logistics>Central Functions> Variant Configuration> Environment>Classification>Master Data>Characteristics (or use transaction CT04). Enter the name PRICING for the reference characteristics in the Characteristic field. Go to the Additional data tab and enter SDCOM in the Table name field and VKOND in the Field name field (Figure 8). Finally, select the indicators Not Ready for Input and No Display. This characteristic is not displayed as the values are inferred from the condition records, and no value can be assigned to the characteristic on the Characteristic Value Assignment screen. Assign reference characteristic PRICING to the class ZDESKTOP created earlier.

Figure 8
Create the reference characteristic PRICING
Let's review a few pricing basics relevant to variant configuration before I show you how to maintain variant conditions for the characteristics values. Condition types represent price elements in R/3. Two condition types are defined for configured materials:
- VA00: For this condition type, the surcharge/discount is expressed as an absolute amount.
- VA01: For this condition type, the
surcharge/discount is expressed as a percentage.
Note
Unlike other characteristics, reference characteristics do not require you to maintain basic data for reference characteristics, because the basic data such as description and data format is copied from the referenced table field. However, these entries can be changed if required. By default, the reference characteristic is a multiple-value characteristic.
Logistics> Sales and Distribution >Master Data> Conditions>Select Using Condition Type>CreateVK11VA00 On the Create Variant Price Condition (VA00) screen shown in Figure 9, enter the material, sales organization, and distribution channel for which you want to create the condition. Enter the characteristics values and the amounts.

Figure 9
Enter the data for creating a variant price condition
Step 6. Create Object Dependencies
Object dependencies are used to describe the interdependencies among characteristics, characteristics values, and BOM for checking the consistency and completeness of the configuration. They are also used for inferring values of the characteristics.
Object dependency is a huge topic and beyond the scope of this article. Moreover, not all dependency types are used in one configurable material. I will give you the basic definition of each of the five types that R/3 supports and explain in detail only those dependency types that my example uses.
Precondition is used to define whether a specific characteristic value can be used or whether the value can be assigned to a specific characteristic. This dependency type is applicable only for characteristics and characteristic values.
Selection condition is used to define items as mandatory and is applicable only for characteristics and BOM items.
Action/procedure is used to infer values for characteristics and is applicable for characteristics, characteristic values, BOM items, and configuration profile. There is a slight difference between action and procedure. Unlike action, procedure is a sequence of instructions that must be processed in the exact sequence defined. Hence, values inferred via procedures can overwrite each other, which is not true for action.
Constraint is used to define dependencies among characteristics of several configurable materials and is applicable only for configuration profile.
In my example, you first create a Precondition dependency type that ensures that an order for ZDESKTOP with a 667MHz processor cannot select 256MB memory. This dependency is attached to a characteristic value corresponding to 256MB of the characteristic MEMORY.
To create a dependency, follow the menu path Logistics>Central Functions> Variant Configuration>Dependency> Single Dependency>Create (or use
transaction CU01). Enter the dependency name Z_NO_256MB_WITH_667MHZ in the Dependency field. On the Change Dependency: Basic Data screen, enter the description and select the Precondition dependency type. Click on the Dependency editor tab and enter the following source code for the dependency:
Not (PROCESSOR = '003-PRO')
Save the source code and change the Status on the Basic Data screen to Released (Figure 10).

Figure 10
Change the Status to Released once you save the source code
To allocate this dependency to the characteristic value corresponding to 256MB of the characteristic MEMORY, go to the Change Characteristic screen and enter the characteristic name MEMORY. On the Values tab, select the characteristic value for 256MB memory (001-MEM) and go to Extras>Object dependencies> Assignments. Enter the dependency name Z059_NO_256RAM_WITH_667MHZ in the Relationship field and save the characteristic.
You need to create a Selection Condition dependency type to ensure that a 450MHZ processor is selected for the BOM of the configurable material ZDESKTOP if the value 450MHZ is assigned to the characteristic PROCESSOR.
Follow the steps similar to the creation of the previous dependency and select the dependency type Selection condition. Enter the source code for the dependency as:
PROCESSOR = '001-PRO'
Create similar dependencies for all the BOM components. Follow the steps mentioned above to allocate this dependency to BOM components.
Refer to the reference characteristic PRICING created earlier. You use the example of dependency type Procedure to calculate the price of the configured material. This procedure generates a product price by summing the associated value prices in pricing table SDCOM used in the characteristic PRICING.
Follow the steps similar to the creation of the previous dependency and select the dependency type Procedure. Enter the source code for the dependency in the Dependency editor as:
$self.PRICING = $self.PROCESSOR,
$self.PRICING = $self.MEMORY,
$self.PRICING = $self.DRIVE,
$self.PRICING = $self.CD_DVD_DRIVE,
$self.PRICING = $self.REMOVABLE_STORAGE,
$self.PRICING = $self.KEYBOARD.
The value inferred for the characteristic PRICING is equal to the sum of the price for each characteristic selected during the configuration process. Follow the steps mentioned above to allocate this dependency to configuration profile ZDESKTOP.
Tip!
Characteristics appear in the Characteristic Value Assignment screen in the same sequence as in the class. To change the sequence, move the characteristics in the class.
ZDESKTOPFigure 11Characteristic Value AssignmentConfiguration
Figure 11
Characteristic Value Assignment screen for a sales order using variant configuration
Ajay Pande
Ajay Pande is a senior consultant with the Enterprise Solutions Group of Infosys Technologies Ltd. He has experience in SAP implementation, configuration, and project management at Fortune 500 companies. He has also worked on integrating finance and logistics modules. Ajay holds a bachelor’s degree in mechanical engineering and a master’s degree in industrial engineering.
You may contact the author at ajay_pande@infosys.com.
If you have comments about this article or publication, or would like to submit an article idea, please contact the editor.