SAP tableObjectVBKDModuleSD_O2C

VBKD table — VBKD Sales Document Business Data Table

VBKD stores the business data segment of a sales document header and its items: payment terms, incoterms, customer PO number, pricing date and billing date. It has one record per header, marked with item number 000000, and optionally one record per item where that item's business data overrides the header. Missing the 000000 row is the single most common mistake made against this table.

VBKD holds the business data fields of sales documents that are not pricing conditions or partner data: payment terms, incoterms, PO reference, pricing and billing relevant dates. It coexists at header and item level in the same table structure, which is the source of most misreads. The page covers the header/item split, the joins that actually work, and where reports silently drop records.

Reviewed by an ERPClimb SAP consultant on 15 Sept 2026· 1,092 words

What it stores

One row in VBKD represents the business data of either the sales document header or one specific item of that sales document. The table is structured so that a header-level row exists with item number 000000, holding the values that apply to the whole document by default. If an individual item needs different terms, a separate row is written for that item's own POSNR, and that row overrides the header value for that item only. This means VBKD is not a simple one-row-per-item table like VBAP; it is a mixed header-and-item table sharing one structure. Fields covered include payment terms, incoterms, the customer purchase order number and date, pricing date, billing date, and the exchange rate used for the document. It does not hold quantities, materials, or condition values.

Key fields

  • MANDT - client
  • VBELN - sales document number, links to VBAK header and VBAP items
  • POSNR - item number; value 000000 identifies the header-level business data row, any other value is an item-level override
  • BSTKD - customer purchase order number
  • BSTDK - customer purchase order date
  • ZTERM - payment terms key
  • INCO1 - incoterms part 1 (the code, e.g. FOB, CIF)
  • INCO2 - incoterms part 2 (location text)
  • PRSDT - pricing date used to redetermine conditions
  • FKDAT - billing date used for the document
  • KURRF - exchange rate applied to the document

How it joins the data model

  • VBAK-VBELN = VBKD-VBELN with VBKD-POSNR = 000000, for the header business data of a document
  • VBAP-VBELN = VBKD-VBELN and VBAP-POSNR = VBKD-POSNR, for item-level overrides where they exist
  • VBFA-VBELV = VBKD-VBELN or VBFA-VBELN = VBKD-VBELN, to trace which billing or delivery document inherited which business data
  • VBRK-VBELN joined indirectly through VBFA, since the billing document itself does not carry VBKD but the order that fed it does

How to read it safely

MANDT is the first key field and must be restricted in any direct table access, as with every SD table. VBELN is the second key and is highly selective on its own; restricting on VBELN alone before adding POSNR is the safe pattern, because scanning by ZTERM or INCO1 across the whole table without a document number is a full scan on a table that can be large in a mature system. When pulling business data for a set of documents, select all POSNR values including 000000 rather than filtering POSNR to a specific item up front, otherwise the header fallback row is excluded and fields appear blank for items that were never given their own override.

How to prove it in the data

Symptom: a billing document shows payment terms that do not match what is displayed on the sales order screen for a specific item. Select VBKD where VBELN equals the order number and POSNR equals both 000000 and the specific item number. If the item-level row exists and its ZTERM differs from the header row's ZTERM, the item override is what fed the billing document; the header value seen on the overview screen is not what was actually used for that line.

ECC vs S/4HANA

VBKD is retained in S/4HANA as an active transparent table with the same header-plus-item structure; it has not been replaced by a compatibility view or restructured. Sales document processing logic in S/4HANA still reads and writes VBKD the same way ECC does, so joins, key structure, and the 000000 header convention behave identically. No field-level changes specific to this table are documented as part of the S/4HANA simplification list for the sales order object.

Common pitfalls

  • Joining VBAP to VBKD on VBELN and POSNR without also selecting the 000000 header row silently drops the fallback values for items that never received their own override, making it look like the field is blank rather than inherited.
  • Assuming a value seen on the order entry screen for an item is stored at item level in VBKD. Many screen fields are populated from the header row and only get their own VBKD item row if the user actually changes them at item level.
  • Comparing ZTERM in VBKD against ZTERM in the customer master (KNVV) and treating a mismatch as a data error. VBKD is a copy taken at document creation time or redetermined by copy control; it is expected to diverge from the customer master once the document exists, especially after manual changes or copy control routines.
  • Expecting incoterms or payment terms changed in VBKD after order creation to automatically retro-apply to delivery or billing documents already created from that order. Downstream documents carry their own copied values and do not re-read the source order.
  • Using PRSDT or FKDAT from VBKD as the actual date printed on the invoice without checking whether pricing or billing date determination logic overrode it during document creation. VBKD holds the value used at the time, not necessarily the value the business user expects from current master data.
  • Treating VBKD as authoritative for pricing condition values. It holds only the date and reference fields that drive pricing, not the condition amounts themselves, which live in KONV or KONP.

Whose problem this is

Discrepancies in VBKD content are an SD order management question first, since order entry, copy control, and pricing/billing date determination are configured and tested by the SD team. Payment terms or incoterms mismatches that trace back to master data defaults are a shared question with the customer master data owner. Finance gets involved only when the downstream financial document shows a value that does not match what VBKD recorded for the order.

Related SAP objects

Reviewed pages this object connects to in the ERPClimb knowledge graph.

Source: ERPClimb — https://erpclimb.com/sap-tables/vbkdERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.