Condition Record Exists but Not Applied in Pricing
The condition record is visible in VK13 but pricing analysis on the order item shows the access was either never attempted, found no record, or found the record and rejected it. Common reasons: validity dates do not cover the pricing date, a higher-priority access in an exclusive access sequence already returned a value, a requirement routine suppressed the step, or the record sits in a key combination the order data does not actually match.
This page covers cases where a pricing condition record demonstrably exists in the system but does not appear on the sales order or billing document line. It walks through the access sequence, validity, exclusion and requirement-routine causes in the order a consultant should check them, and separates genuine master data fixes from configuration changes that need a transport.
Published 16 Sept 2026· 1,253 words
The business symptom
The complaint usually arrives as 'we set up the price and the order still shows the old one' or 'the discount is in the system but the customer got billed full price'. Sales support insists the condition record is definitely there because they can see it in VK13 with the right amount and the right validity dates as far as they can tell. Sometimes it is framed as intermittent: the same material shows the discount on one order and not on another written the same day for the same customer. Occasionally it surfaces only at billing, where an order priced correctly at creation re-prices during invoice creation and loses the condition. Nobody reports it as a configuration issue at this stage; it is reported as 'pricing is wrong' or 'the record isn't picking up'.
The configuration behind it
- Validity period mismatch: the condition record's valid-from/valid-to does not cover the pricing date actually used by the document, which may be the order date, the requested delivery date, or the billing date depending on the pricing date control on the item category or document type, not the date the consultant assumes.
- Exclusive access sequence: the access sequence for the condition type is flagged exclusive, so once an earlier access in the sequence finds any record, later accesses (including the one holding the intended record) are never even executed.
- Condition exclusion group: a different condition type in the same exclusion group returned a value first and the pricing procedure's exclusion logic dropped the lower-priority one, even though both records are valid and both were found.
- Key combination mismatch: the record was created against a combination that does not match the transaction data being passed, for example customer plus material when the order is actually keyed by price list type plus material, or a sales area that differs from the one on the order.
- Requirement routine on the pricing procedure step: a coded requirement attached to the condition type's line in the procedure evaluates false for this document (item category, plant, order type) and skips the step regardless of whether a record exists.
- Deletion indicator set on the record: the record displays in VK13 but carries a deletion flag, so it is logically inactive for new pricing even though it is not physically gone.
- Release/approval status: the record was created under a condition record release procedure and has not been released for use yet.
- Scale mismatch: a scale exists on the record but the order quantity or value falls outside the defined scale steps, or the scale base (quantity vs value vs weight) does not match how the order is measuring the line.
- Item category not relevant for pricing: the item's pricing indicator on the item category is blank, so the item is excluded from pricing determination entirely regardless of any condition record.
- Communication structure field not populated: the field the condition table's key combination relies on (a customer group, a price group, a characteristic from a classification) is empty on the order because no copy control or user exit filled it, so the access technically runs but finds no match on that field.
What to check
- Open the order item in VA02/VA03, go to conditions, and use the pricing analysis function. This is the single most useful step: it shows exactly which access sequence steps were run, which found a record, and which were skipped, and why.
- If the analysis shows the access was never run, check the pricing procedure in V/08 for that document's determined procedure and confirm the condition type's step is present and not disabled by a requirement routine.
- If the access ran but found nothing, check the condition record itself in VK13: validity dates against the actual pricing date field being used, deletion flag, release status, scale entries.
- If a record was found but a different condition type overrode it, check the access sequence definition in V/07 for the exclusive indicator, and check condition exclusion group assignments.
- Check the item category in VOV7 for the pricing relevance indicator on the line item in question.
- If the key combination is suspect, check the condition table definition behind the access sequence and compare its fields against what is actually populated in the order's communication structure at that point.
How to prove it in the data
Pull the pricing analysis output from the affected order item and capture it as evidence rather than describing it verbally; it names the exact access sequence step and the reason code for skip or no-record-found. Separately, list the condition records for the relevant condition type and key combination with their validity ranges and deletion status, and compare the valid-from/valid-to against the actual pricing date field the order used, not the order creation date assumed by the requester.
Resolution path
Validity, deletion flag and scale problems are pure master data fixes: correct the record in VK12, no transport required, and re-price the affected open documents. Release status issues are resolved by whoever owns the approval workflow releasing the record, also a data action. Exclusive access sequence behavior, exclusion group assignment, requirement routine logic, item category pricing relevance and pricing procedure step configuration are all customizing objects; changing any of them is a transport-based fix that goes through the normal SD configuration change process and needs regression testing against other document types sharing the same procedure or item category, since the same exclusion or requirement logic is usually shared across many order types. A communication structure field gap is a development fix (routine or user exit change) and also needs a transport. Do not fix an exclusion or requirement routine cause by editing the condition record; the record is not wrong, the logic that suppresses it is.
The fix people try first (and why it fails)
The reflex fix is to create a second, near-duplicate condition record with a wider validity range or a manual condition override entered directly on the order line, on the theory that 'the system will pick it up now'. If the real cause is an exclusive access sequence, exclusion group or a requirement routine, the new record is skipped for exactly the same reason the first one was, or the manual entry gets overwritten the next time the order re-prices at delivery or billing. The duplicate record also lingers in the pricing tables afterward, creating two active records for the same key combination that someone else discovers months later and cannot explain.
Whose problem this is
Master data corrections (validity, deletion flag, release) belong to whoever maintains pricing condition records, typically sales support or a pricing master data team. Access sequence, exclusion group, requirement routine and pricing procedure structure belong to SD configuration. The handover note should include the pricing analysis screenshot, the condition record key and validity, the pricing procedure and step involved, and whether the same combination behaves correctly on any other document type, which narrows down data versus configuration immediately.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-functional-issues/condition-record-exists-but-is-not-being-set-in-pricingERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.