Configuration Engine
This component is a core Business Solutions component in the way that it is implemented to provide support for sales processes with interactive product configuration, for example. The component is in particular suitable for applications that focus on interaction in the configuration process.
The Configuration Engine is sometimes also referred to as the Internet Pricing and Configurator (IPC) or as the Sales Configuration Engine (SCE).
The application must be able to provide runtime versions of knowledge-base objects.
The Configuration Engine is part of the application platform that is based on NetWeaver.
As a component of solutions such as SAP Internet Sales, the Configuration Engine can be used for all applications that have the appropriate interfaces.
The overview below shows the Configuration Engine embedded between the knowledge base and the application or user interface for interactive configuration.

Like other components, the Configuration Engine has a series of interfaces. To ensure that the Configuration Engine can function as intended, knowledge and correct usage of the following interfaces is required:
The Configuration Engine is essentially based on runtime versions of knowledge-base objects. The knowledge base, collected in knowledge-base objects, results from models that are created to describe configurable objects, their properties, and their interdependencies. Master data maintenance is responsible for creating and updating these models.
The master data is maintained as part of the application in which the Configuration Engine functions.
You start the Configuration Engine by calling an application.
You want to create a new configuration for a specific object type. For example, you want to configure a computer in a sales order. The Configuration Engine receives this request with the specific object type; it searches the knowledge base and compiles an active configuration (on the basis of all the information and rules this contains).
The application can request a copy of the active configuration, usually at the end when all the features have been defined for the computer. This copy, or external configuration, can also be saved by the application. In comparison, the active configuration is volatile, that is, the Configuration Engine does not save any results.
An existing external configuration can also form the starting point of a configuration, if, for example, the order is to be changed at the customer's request.
The knowledge base (the basis for the configuration) can contain keys that represent price-relevant information with regard to the specification of a characteristic. These keys are called variant condition keys.

If extra charges arise when you select a specific processor for the computer, the Configuration Engine can trigger price determination for this in the Pricing Engine.
Product variants, variant functions, and context are additional interfaces that are important for operating the Configuration Engine. While product variants are generally considered to be part of the master data, variant functions and context comprise additional factors that must be taken into account by the Configuration Engine.
User-Defined Variant Functions
The Configuration Engine processes data that is typically required for configuring products in sales; it therefore supports interactive configuration processes and provides the application in question with a copy of the results for further use.
The task of each configuration is to design an object in accordance with specific options. A model, which is to form the basis of the configuration, defines which characteristic values are to be possible in the configuration process. In this model, the possible object attributes are described together with their mutual dependencies.
In order to solve a configuration task, therefore, you need to know the object type and its characteristics, as well as the interdependencies of these characteristics – information that must be provided to the Configuration Engine in the form of runtime versions of knowledge-base objects.

When you sell a computer, you have to specify its features in the sales order. In other words, a series of characteristics of the object type “computer,” such as processor type and main memory type, have to be defined. In this case, the Configuration Engine must identify the appropriate combinations of processor and main memory types, on the basis of the computer model that describes the possible combinations accurately.
Usually, configuration tasks are processed in a series of sequential steps: Initially, all options are open.

A first step in our example could be to define a specific processor for the computer.
Generally, an initial characteristic is defined for the object, also known as setting a value for the characteristic. The task of the Configuration Engine is now to check whether and which effects this has on other characteristics, and to present the resulting configuration options. This process is similar to a questions and answers game between the application and the Configuration Engine.
In the configuration process, additional characteristic values are set, step by step. The Configuration Engine checks that each characteristic value assignment is consistent until, in a final check, it reports the configuration as complete.

In our example, the components for the computer are defined step by step until the computer can be considered to be functional and meets the customer’s requirements.
Additional factors can also be included in this check, such as a query as to whether other specific articles were proposed in the sales process that are often sold together with a computer of this type.
If inconsistencies occur while the product is being configured, the Configuration Engine reports this as a configuration conflict. The Configuration Engine distinguishes between two types of conflict and enables in-depth explanations and proposals for solving the conflict to be displayed. To leverage these options, you have to take into consideration configuration conflicts accordingly during the modeling process.