EKKO table — Purchasing Document Header Table
EKKO stores one row per purchasing document header, covering purchase orders, contracts, scheduling agreements and RFQs. It holds vendor, purchasing organization, document type, currency, terms and release status, but no quantities or values, which live at item level in EKPO.
EKKO is the header table behind every purchasing document created in ME21N, ME31K, ME31L and related transactions. This page covers what a header row actually represents, how to join to items and history, and the pitfalls of reading status and dates at header level when the real answer sits in EKPO or EKBE.
Published 15 Sept 2026· 980 words
What it stores
A row in EKKO is one purchasing document header, keyed by EBELN. The document type field BSART decides what that header actually is: a standard PO, a contract, a scheduling agreement, an RFQ or a quotation, and the meaning of several other fields shifts depending on that type. The header carries vendor, purchasing organization, purchasing group, currency, payment terms, incoterms, creation data and, where a release procedure is active, the overall release status. It does not carry quantities, prices or delivery dates for individual items; those belong to EKPO and EKET. It also does not carry goods receipt or invoice history; that is EKBE. Treat EKKO as the envelope, not the contents.
Key fields
- MANDT - client
- EBELN - purchasing document number, the join key to almost everything else
- BSTYP - document category, distinguishes PO, RFQ, contract, scheduling agreement at a coarse level
- BSART - document type, e.g. standard PO, framework contract, controls field interpretation and screen layout
- LIFNR - vendor number for this document
- EKORG - purchasing organization
- EKGRP - purchasing group
- WAERS - document currency
- ZTERM - payment terms key
- INCO1 - incoterms part 1
- AEDAT - creation date of the header
- ERNAM - user who created the document
- LOEKZ - header-level deletion flag
- FRGKE - overall release indicator, only meaningful when a release strategy is configured
- KDATB, KDATE - validity start and end, populated for contracts and scheduling agreements, blank on standard POs
How it joins the data model
- EKKO-EBELN = EKPO-EBELN, header to line items, the join used for almost every purchasing report
- EKKO-EBELN = EKET-EBELN (via EKPO-EBELP = EKET-EBELP), header to delivery schedule lines
- EKKO-EBELN = EKBE-EBELN, header to the goods receipt and invoice history
- EKKO-EBELN = EKKN-EBELN, header to account assignment lines
- EKKO-EBELN = EKPA-EBELN, header to partner roles such as ordering address or goods recipient
- EKKO-LIFNR = LFA1-LIFNR, vendor master lookup
- EKKO-EKGRP = T024-EKGRP, purchasing group description
How to read it safely
MANDT restricts every selection first, then EBELN is the natural key if it is already known. Where EBELN is not known, restrict on BSART and EKORG together before adding a date range on AEDAT; selecting on LIFNR alone across a large system is expensive because vendor is not the leading index component. Avoid a full table scan filtered only on FRGKE or BSTYP, both are low-cardinality flags with poor selectivity. If the question is about value or quantity, do not query EKKO at all, go to EKPO or EKBE and pull EBELN back from there.
How to prove it in the data
Symptom: a buyer claims a PO was never released for payment blocking checks. Select EKKO where EBELN equals the document number and read FRGKE. A value indicating incomplete release confirms it is stuck in the release strategy, not blocked downstream. Cross-check against the release status history in the associated release table if the strategy uses multiple steps, since FRGKE only shows the current aggregate state, not which approver is still outstanding.
ECC vs S/4HANA
EKKO remains the primary persistence table for purchasing document headers in S/4HANA; it was not replaced or split the way some FI tables were. Fiori apps and analytical reporting read purchasing data through CDS views built on top of EKKO and EKPO, but the underlying table structure and key fields described here are unchanged for standard purchasing documents. Custom ABAP written against EKKO directly still works.
Common pitfalls
- Reading FRGKE as final proof that a PO is fully released without checking whether a release strategy is even configured for that document type and value; on document types without a strategy the field is simply not relevant
- Assuming LOEKZ blank means the document is fully active; the item-level deletion flag in EKPO can differ from the header, a PO can have all items deleted while the header row survives
- Treating KDATB and KDATE as delivery dates; they are contract or scheduling agreement validity dates and are blank on ordinary purchase orders, confusing them with EKET dates gives a wrong delivery timeline
- Expecting a total order value on the header; EKKO carries no net value field, the value has to be summed from EKPO, and doing that sum incorrectly across multiple currencies without checking WAERS produces a meaningless total
- Using AEDAT as a proxy for when the order was actually placed with the vendor commercially; it is the creation date of the SAP document, which can lag or lead the real business event, especially with mass creation from requisitions
- Assuming BSART alone tells the full story on a scheduling agreement versus contract distinction; BSTYP has to be checked alongside it because some configurations reuse similar type codes across categories
Whose problem this is
A functional MM or purchasing consultant owns questions about document type behavior, release strategy configuration and header field meaning. Vendor master data disputes route to the master data or procurement operations team. Account assignment or cost object questions on a specific header belong jointly to MM and FI/CO, since the account assignment category set at header influences what EKKN allows at item level.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/ekkoERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.