VBPA table — Sales Document Partner Table VBPA
VBPA stores the partner assignments — sold-to, ship-to, bill-to, payer, and any custom partner functions — attached to a sales document, at header and optionally at item level. Each row is one partner function for one document (and item), pointing to a customer number, vendor number, or personnel number, plus an address reference for one-time or overridden addresses.
VBPA holds the partner determination result for sales documents: which customer or vendor plays which role (sold-to, ship-to, payer, and so on) for a given order, delivery-relevant item, or contract. The page covers the fields consultants actually query, the joins into VBAK/VBAP and customer master, and the recurring mistakes made when reading partner data out of this table.
Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,168 words
What it stores
One row in VBPA represents a single partner function assigned to a sales document, either at header level (item number zero) or at item level when the item overrides the header partner, for example a different ship-to on one line of a multi-line order. The row records which partner function (sold-to, ship-to, payer, bill-to, or a client-specific function) applies, and which business partner fills that role — a customer, a vendor (for functions like forwarding agent), or an employee (for sales rep or employee responsible). VBPA is populated by partner determination at document creation, using the customer master's default partners as a starting point, and can be manually overridden afterward on the document itself.
Key fields
- MANDT - client
- VBELN - sales document number (order, contract, scheduling agreement, or quotation)
- POSNR - item number; 000000 means the partner applies at header level for the whole document
- PARVW - partner function code (AG sold-to, WE ship-to, RE bill-to, RG payer, and any custom codes defined in the partner determination procedure)
- PARZA - partner counter, used when more than one partner exists for the same PARVW on the same document, for example split ship-tos
- KUNNR - customer number when the partner is a customer
- LIFNR - vendor number when the partner is a vendor, used for functions such as forwarding agent
- PERNR - personnel number when the partner is an employee, used for sales rep or employee responsible
- ADRNR - address number pointing to the central address table, relevant when the partner uses a one-time or manually overridden address
How it joins the data model
- VBPA-VBELN = VBAK-VBELN to get from a partner row to its sales document header
- VBPA-VBELN = VBAP-VBELN and VBPA-POSNR = VBAP-POSNR to check whether a partner override applies to a specific item
- VBPA-KUNNR = KNA1-KUNNR to get the customer's general master data (name, country, central data)
- VBPA-KUNNR joins to KNVV on customer, sales organization, distribution channel, and division (taken from VBAK) to confirm the customer is actually extended to the sales area used on the document
- VBPA-ADRNR = ADRC-ADDRNUMBER to resolve a one-time or overridden address rather than the customer master address
How to read it safely
Always restrict on MANDT and VBELN first; VBPA is not selective on its own and a scan without a document number range will hit the full table. When looking for a specific role, filter on PARVW as well, since a single document can carry ten or more partner rows once custom functions are configured. If more than one row can exist for the same PARVW, do not assume the first row returned is the right one — check PARZA and, for item-level questions, check POSNR explicitly rather than relying on header data alone. Do not read VBPA in isolation to conclude a customer's current address or terms; it stores the partner reference as of determination time, not live master data.
How to prove it in the data
Symptom: an order shipped to the wrong ship-to address. Select VBPA where VBELN equals the order number and PARVW equals the ship-to code (typically WE). If multiple rows return with different PARZA values, the order has split ship-tos and the delivery process picked one deterministically — check which item's POSNR-level row (if any) overrides the header row before assuming the customer master default was wrong.
ECC vs S/4HANA
VBPA continues to exist in S/4HANA in essentially its original shape and remains the table where sales document partner determination results are stored; the underlying business partner model consolidation (customer and vendor as business partners) did not change VBPA's structure, which still carries KUNNR and LIFNR as before. Reporting and app layers increasingly read partner data through compatibility or analytical views rather than direct table access, but the table itself, and the logic that populates it during order processing, has not been replaced.
Common pitfalls
- Reading only the header row (POSNR 000000) and missing an item-level override; a document can have a different ship-to on one line than at the header, and ignoring item rows produces wrong conclusions about where goods were meant to go.
- Ignoring PARZA when more than one partner shares the same PARVW; a naive single-row read can silently pick the wrong ship-to among several split deliveries.
- Treating the presence of a KUNNR in VBPA as proof the customer is properly set up; VBPA only stores the number used at determination time, not confirmation the customer is extended to the relevant sales area — that has to be checked separately in the customer's sales area data.
- Assuming VBPA reflects current customer master defaults; it is a snapshot taken at document creation (or last manual change on the document), so updating the customer's default ship-to afterward does not retroactively change existing orders, which is a frequent source of 'why does this old order still show the old address' tickets.
- Looking up a one-time (CPD) customer number in KNA1 expecting a real address; one-time account groups return a generic dummy customer, and the actual name and address entered on the document live behind the ADRNR reference, not in the customer master.
- Assuming a partner function code means the same thing across every document type or sales area; custom partner functions are configured per partner determination procedure, so the same letter code can carry different meaning in different areas of the same client.
- Not checking item status before trusting partner data pulled by document; a rejected or fully cancelled item can still carry its own partner row in VBPA, which skews downstream reporting if status is not filtered.
Whose problem this is
The SD functional consultant owns questions about why a given partner appears (or does not) on a document, since that behavior is driven by the partner determination procedure assigned to the sales document type. Master data or customer service ownership covers the default partners maintained on the customer master itself. Basis or interface teams should not be asked to explain partner selection logic; their role is limited to data extraction, not determination rules.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/vbpaERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.