BRFplus (Business Rules Framework plus) is a powerful rules-based engine, and is used by TM conditions. TM Conditions empower users to process complex business rules and it reduces the need to develop, customize, and configure. Conditions are used as filters for automatic decision-making. A condition maps input values to output values. For example, determination of product type, determination of resource type, determination of execution organization.

There are different types of conditions for different areas. For example, document type determination, order type determination, loading and unloading durations, incompatibilities, printing, approvals, tolerances, and any customer-specific rule(s).

Condition type (CT): First, you define the CT and specify the origin. Specify the CT, the fields against which you are testing, and how you want to store the test results when creating a condition. This is referred to as the origin of the condition. The system provides the following three options for the origin of the condition:
- Direct business object access: The Direct Business Object Access condition returns directly the value determined by the data access definition. There is no evaluation of the data.
- BRF+ Decision Table: The BRFplus Decision Table condition takes the input of the data access definition and evaluates it in a table. This condition table can be maintained from the condition user interface. This origin of condition is most commonly used by TM users.
- BRF+ Expression: The BRFplus Expression is a logical expression.

Input values: Input values originate in the fields of business objects (direct business object access) or user-specific fields (data crawler), or values determined in external determination classes. The available input values depend on the condition type chosen. The condition type defines the area in which the system is to take the condition into account. There are various input values and they are determined by the following factors:
Direct Business Object Access
Data Crawler
Determination Class
Output values: The output of a condition is comprised of several output values, all derived from the input values based on decision-making. The output values are determined by the condition type. For example, the FUB rule is a result of FUB rule determination.
BRFplus decision table: The system creates a condition based on BRFplus expressions. The system then processes this table from top to bottom during determination. When the system finds a row in the BRFplus decision table whose input values match the current input values, it copies the corresponding output values and processes them in the area that made the call.

Conditions are tests performed against various objects, such as transportation requirements or freight units, to determine whether a situation is true or false. For example, to decide if products on a single transportation requirement can be shipped together, each item on the OTR is checked for certain parameters. If a certain parameter is found, rules are built to determine where consolidation can take place. If an incompatibility exists, more than one shipment is necessary.
If you need extra fields for the condition types to be delivered as standard, or if you want to use customer condition types, create new data access definitions and extend the assignments in Customizing. You can also change or add to the data access definitions used by default. The condition type must be identified when defining a condition in SAP TM. A condition type is a configurable object that is based on field contents stored in various business object nodes. Each condition type is assigned to a business object (structure) and the node name (at the header or item level).
When defining a condition type, you can identify when a result is found, if it is stored in a structure, and if one or more conditions exist for this condition type. Condition types are then assigned to data access definitions. These objects specify what fields and in what sequence users can define specific condition records.




