VA21 — Create Sales Quotation
VA21 creates a sales quotation, a non-binding offer to a customer with pricing, quantities, and a validity period, stored in VBAK/VBAP with document category B. It sits before the sales order in the pre-sales cycle and has no delivery or billing relevance of its own; its value depends entirely on validity dates and copy control into the order.
This page covers VA21, the transaction for creating a sales quotation in the order-to-cash cycle. It focuses on how quotations expire, how pricing gets frozen or redetermined on conversion to an order, and the diagnostic sequence for the recurring complaint that a quotation did not carry through to the order correctly.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,131 words
Purpose
VA21 creates a sales quotation, an SD document with document category B, normally document type QT, that quotes price and terms to a customer without creating any commitment to deliver or bill. The header carries a validity period (valid-from and valid-to dates) that is the single fact most people forget: once that window closes, the quotation is dead weight in the system even though it still displays fine in VA23. A quotation never triggers delivery or invoicing directly; it only matters if it is referenced when a sales order is created, and whether pricing, quantities, and item categories actually flow into that order is governed entirely by copy control configuration, not by anything visible on the quotation screen itself.
When it is used
VA21 is used in the pre-sales phase, when a customer asks for firm pricing and terms before committing to an order, or in configuration testing when a consultant needs to verify pricing procedure determination, item category assignment, or copy control from quotation to order without touching live order data. It is also the natural reproduction step when a customer support ticket says a quotation price did not carry into the order: creating a fresh quotation and converting it is faster and cleaner than trying to reason about an existing one with unknown history. In S/4HANA the equivalent Fiori quotation app exists for end users, but consultants doing configuration or root-cause work still default to VA21 because it exposes fields and messages the Fiori app hides.
How to use it in practice
- Enter document type (typically QT), sales organization, distribution channel, and division on the initial screen, or start from a reference inquiry number if one exists
- Fill header data: sold-to and ship-to party, PO number if given, and critically the validity dates from and to
- Enter item lines: material number and quantity; pricing and item category are proposed automatically from master data and document type configuration
- Review or override proposed pricing conditions, check availability if the configuration triggers an ATP check for quotations
- Save; the system assigns a document number from the internal or external range configured for the document type and confirms with the number on the status line
Key data objects
- VBAK - quotation header: document type, sales area, sold-to, validity-from and validity-to dates, document category B
- VBAP - item data: material, order quantity, plant, item category, rejection status
- VBKD - business data at header and item level: payment terms, Incoterms, currency
- VBEP - schedule line data for the quoted quantities and dates
- KONV or PRCD_ELEMENTS - pricing condition records copied into the document at the time of save
How to prove it in the data
Query VBAK filtering VBTYP equal to B and the relevant sales organization or date range to pull candidate document numbers. Pull the matching VBAP rows on VBELN to see items and quantities. To confirm whether a quotation actually fed a sales order, query VBFA joining VBELV (preceding document) equal to the quotation number and VBTYP_N equal to C (order), which shows whether and when it was referenced. Compare VBAK validity-to date against the order creation date in VBAK-ERDAT for the resulting order to confirm expiry as the cause.
ECC vs S/4HANA
VA21 remains fully available in SAP GUI on S/4HANA and the underlying tables VBAK and VBAP are unchanged in structure and purpose. A Fiori app for managing sales quotations exists for business users, but it is a UI layer over the same document; no new document category or storage model was introduced for quotations specifically. Consultants doing configuration or troubleshooting work continue to rely on VA21 rather than the Fiori app.
Common pitfalls and how to diagnose them
- Expired validity window: the quotation displays normally in VA23 but a new order created against it either refuses the reference or copies nothing useful because the valid-to date in VBAK has passed. Check the header validity dates first, before looking at anything else.
- Pricing mismatch on conversion: quotation pricing is a snapshot taken at save time, but converting to an order can redetermine pricing entirely depending on the copy control pricing type. Customers expect the quoted price to survive; whether it does is a copy control setting, not a pricing configuration bug, so check the pricing type on the copy control routine before touching condition records.
- Copy control gap: item category, quantity, or specific fields fail to carry from quotation to order because the copy control requirement routine excludes them, or the item category in the target document type differs from what the routine expects. Trace this in the copy control customizing for the document type pair, not by re-entering data manually.
- Incompleteness or credit block on save: the quotation appears to save but the number is not usable downstream because an incompletion log entry (missing partner, missing pricing) or a credit check block was silently set. Check the incompletion log on the document before assuming the save failed cleanly.
- Sales area or customer extension gap: the customer is not extended to the sales area used on the quotation, producing an authorization-style error that looks unrelated to master data. Check the customer master sales area extension before suspecting a configuration bug in the document type itself.
- Number range exhaustion: for external number ranges tied to quotation types, a full range produces a save failure with a generic message; this is a Basis-adjacent numbering issue, not a functional one, and is easy to misdiagnose as an authorization problem.
Whose problem this is
Functional SD ownership covers document type configuration, copy control routines, pricing procedure determination, and incompleteness rules. ABAP involvement is needed only if a custom pricing routine, user exit, or BAdI is implicated. Basis involvement is limited to number range exhaustion or authorization object issues. A good handover includes the quotation number, sales area, the resulting order number if conversion was attempted, and whether the issue reproduces on a brand-new quotation.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tcodes/va21ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.