Access Sequence & Condition Table in SAP MM (V/05, M/03)
โก Smart Summary
Access Sequence and Condition Table in SAP decide where a price is searched for. The sequence lists accesses in priority order, each pointing at a condition table whose key fields identify the condition record.

What is an Access Sequence and Condition Table?
A condition type such as PB00 describes what kind of value a gross price is. It does not know where to find one. That is the job of the access sequence attached to it.
Two objects work together:
- Condition table. A table whose key fields define one combination for which a price can be maintained, for example vendor plus material plus plant. Table 18 is the material info record combination used in the example below.
- Access sequence. An ordered list of accesses, each pointing at one condition table. SAP tries them from the top and stops at the first that returns a record.
The order therefore expresses business priority. A price negotiated in a contract should beat a general info record price, so the contract access sits above it. Reversing the two would silently overwrite negotiated terms with a standard rate, which is why access sequence maintenance deserves care.
The chain is completed by the calculation schema, which decides in what order the condition types are applied once each has found its value.
Define Access Sequence
To define and maintain access sequences, you need to follow a few simple steps.
Step 1) Go to SPRO > Materials management > Purchasing > Conditions > Define price determination process > Define access sequences.
As shown below, you will find a dialog structure of Access sequences, Accesses and Fields.
- Choose the Access sequence you want to maintain (PB01 gross price).
- Double click the Accesses folder in the dialog structure.
Step 2) In the next step you define access methods for the access sequence. You can see that several access methods are present for one sequence.
Every one of them is exclusive. It means that if a record is found in first access (Contract item), meaning that if the system finds a condition available from the Contract item, it will not search further, and that value will be used. If not, system will follow the other accesses in order to find appropriate entry.
You can also set a requirement for an access method to be used. For example, there is a requirement 35 assigned to access 10, which uses condition table 17 – Material Info Record (Plant-Specific).
A requirement for access number 10 is 35 – Plant info record. If there is no plant info record for the combination of the values in table 17, access 10 will not be used at all.
Step 3)
- Select the access you want to modify.
- Choose the lowest level folder in dialog structure – Fields.
Step 4)
- You can see we are located on the details screen for access sequence PB01, access 20 and table 18.
- The key fields of a condition table used in the condition access are showed here.
Condition table consists of condition fields which have certain attributes assigned to them. When the system tries to access a condition record it uses these attributes.
- Special value source โ this field contains a value to be used as default while accessing (e.g. using a fixed info record category for the access sequence)
- Init โ if this box is checked system will allow initial value for this field while accessing the condition table. If not system will not process the condition table lookup.
- Atyp โ processing type in access. You can specify if the field is relevant for condition access if it is part of a free or fixed key type. Default is left blank (fixed key type).
- Priority โ priority of a field (characteristic), it can be set from 01 to 99. Most of the time this field is left blank.
Define condition tables
Now, when we know what is a condition table, what it is used for, we can see where a condition table can be defined, and what option we have while creating it.
As you have seen in the previous topic, we have used table 18 โ Material Info Record in our example.
Let’s see where and how it is defined.
Displaying an existing condition table
Step 1)
- Execute the transaction code V/05 and on the initial screen enter our table number – 18.
- In the section 2, you can see our table definition, table number, description, and two options that can be selected. First means use of the validity period (always recommended) and the other is a check for release status of the record. If checked, only released info records will be taken into account while searching for the condition.
- Here is the list of fields you have already seen in the Define access sequence topic.
You can see how the table is defined for later use in customizing the access sequence.
V/05 transaction is used for displaying a condition table.
V/04 transaction is used for changing a condition table.
V/03 transaction is used for creating a condition table.
Creating a new condition table
Now you can define a new condition table if it is required, in order to use it in the access sequence definition. Most of the time new condition tables are not required, because SAP delivers a large catalogue of predefined tables.
Step 1)
- Enter t-code M/03 and execute it.
- Choose your new table number (must be unused, e.g. 818).
- If you want to copy an existing table into your new table, you can select the source table here. This is useful if your table is similar to another existing table, and needs only a simple change to fulfill the requirements.
Step 2) On the next screen, you can do all of the settings for a condition table, and generate it.
- Click this button if you want to edit the description.
- Choose if your table should check validity periods and release statuses.
- List of current fields. You can select any field you want to remove (by single clicking it) and choose the remove icon (List icon with a red minus sign).
- You can add fields from field catalog by double clicking them.
- You need to generate the table in order for it to be used by pricing functions.
You can also use right click to delete or add a field to your table, as well as to navigate the Field catalog on the right side of the screen. Not all of the fields can be shown in a single page of field catalog.
After successful creation, you will be prompted to create a change request and afterwards, you will be presented a log screen like you can see on the following screen.
You have successfully generated a condition table, let’s see if we can see it in the access sequence maintenance screens.
It’s there, so now we can create an access using this table. We will not cover this in detail as it is an extremely straight forward process.
On the accesses node of our access sequence, choose New entries button. You can create an access like in the below screen for testing purposes.
Fields should also be assigned to our access PB01 โ 96 in order for it to work properly.
Condition Table Transaction Codes: MM and SD
The transaction codes above deserve a note, because two parallel families exist and using the wrong one is a frequent source of confusion. The steps above use V/05 to display and M/03 to create, which reflects how many consultants actually work, but the families are not interchangeable.
| Action | Materials Management | Sales and Distribution |
|---|---|---|
| Create condition table | M/03 | V/03 |
| Change condition table | M/04 | V/04 |
| Display condition table | M/05 | V/05 |
| Access sequence maintenance | M/07 | V/07 |
| Condition type maintenance | M/06 | V/06 |
The M family belongs to purchasing and the V family to sales. Both read the same underlying table definitions, which is why V/05 will display a purchasing table, but always create in the family that matches the application so the field catalogue offered is the correct one. Sales side pricing is covered in the SAP SD training course.
โ ๏ธ Warning: A new condition table is unusable until it is generated. Saving the definition alone creates no database table, and the access sequence will simply not offer it. Always complete the generation step and check the log.
How Condition Records Are Found at Runtime
Configuration only makes sense once the runtime behaviour is clear. When a purchase order item is priced, SAP performs the following sequence for every condition type in the schema.
- Read the access sequence. The condition type names one sequence. A condition type without a sequence, such as PBXX, is skipped entirely and can only be entered by hand.
- Evaluate the requirement. Each access can carry a requirement routine. Requirement 35 in the example checks whether a plant specific info record exists. A failed requirement skips that access without any database read.
- Build the key. The key fields of the condition table are filled from the document. Vendor, material, plant, and purchasing organisation are taken from the order header and item.
- Read the condition table. If a record exists for that exact key and is valid on the pricing date, the value is taken and the search stops. This is what exclusive means.
- Fall through on no hit. If nothing is found, the next access is tried. When every access fails the condition simply carries no value, which on a mandatory condition raises an error.
This behaviour explains two common symptoms. A price that is stubbornly wrong usually means a higher access is matching a record nobody remembered, and the Analysis button on the item conditions screen names the access that won. A price that never appears usually means every access failed, most often because the purchase info record validity period has expired. The determination of the whole schema is covered in defining schema groups.











