Quick Answer — SAP MM Key Tables
- Purchasing tables: EKKO (header) and EKPO (item) — joined on MANDT + EBELN. EKKO holds the vendor and date; EKPO holds the material, quantity, and plant.
- Material master tables: MARA → MARC → MARD — a three-level hierarchy from client level (MARA) to plant level (MARC) to storage location stock (MARD).
- In S/4HANA, use MATDOC — not MSEG — for goods movement data. MATDOC replaced the old MKPF + MSEG split. This is the most important S/4HANA table change in SAP MM.
- Invoice verification tables: RBKP (header) and RSEG (item) — created when MIRO is posted. Joined to FI via BKPF (accounting document header).
- EKBE (purchasing document history) is the most practical MM table for daily work — it shows every GR, IR, and cancellation posted against a PO line item.
Every purchasing document lives in two tables. The header (EKKO) holds the vendor, date, and organisation. The items (EKPO) hold the materials, quantities, and plants. You always need both for a complete picture.
The MSEG → MATDOC change is the biggest S/4HANA shift in MM tables. MSEG still exists in S/4HANA (for compatibility), but new development must use MATDOC. In interviews, saying MSEG for S/4HANA goods movements signals you have not kept up with the platform.
MARD holds stock — but always use MMBE in practice. MARD is the storage location stock table, but posting delays can make it temporarily inaccurate. Transaction MMBE (stock overview) always reflects the real-time position.
SE16N is your everyday tool for table queries. You do not need to write ABAP to query SAP tables. SE16N (General Table Display) lets any consultant look up records directly — crucial for issue investigation and data reconciliation.
EKBE is the most practically useful MM table for support work. It shows the full history of every goods receipt and invoice posted against a PO. If something looks wrong in a three-way match, EKBE is the first place to check.
- EKKO — purchasing document header
- EKPO — purchasing document item
- EKBE — PO history (GR/IR tracking)
- EINA / EINE — info record
- EKET — scheduling agreement lines
- MARA — client-level general data
- MARC — plant-level (MRP settings)
- MARD — storage location stock
- MBEW — valuation (price, value)
- MARM / MLAN — UOM, tax classification
- MATDOC — material document (S/4HANA)
- MSEG — material document item (ECC)
- MKPF — material document header (ECC)
- T156 / T156S — movement type config
- RBKP — invoice header (MIRO)
- RSEG — invoice item
- BKPF — accounting doc header (FI)
- BSEG — accounting doc line items (FI)
- LFA1 — general data (client level)
- LFB1 — company code data
- LFM1 — purchasing org data
- BUT000 — Business Partner (S/4HANA)
- T001W — plants definition
- TVKO — purchasing organisations
- T024 — purchasing groups
- T156 / T156S — movement types
SAP MM Procurement Tables
When a purchase order is created in SAP (transaction ME21N), SAP writes data to multiple database tables simultaneously. The core split is always the same: a header table and an item table. The header holds everything that applies to the whole document; the item table holds one row per line item. This is the standard SAP table pattern you will see across every module.
Plain English first. Think of a purchase order like a physical paper PO you might have seen in any office. The top section has the vendor name, date, and PO number — that is the header (EKKO). Below it is a table with each line — material, quantity, price — that is the items (EKPO). SAP separates these into two database tables because the vendor and date do not need to repeat for every single line. That is the logic behind the EKKO/EKPO split, and it applies to every purchasing document type in SAP.
| Field | Description | Example Value | Notes |
|---|---|---|---|
| MANDT | Client | 100 | Always part of every SAP table primary key. Separates data between SAP clients. |
| EBELN | Purchasing document number | 4500012345 | The PO number. Primary key field. Used to join EKKO to EKPO. |
| BSART | Document type | NB | NB = standard PO, FO = framework order, ZNB = company-specific custom type. Drives default settings. |
| LIFNR | Vendor account number | 0000100001 | Links to LFA1 (vendor master). The vendor is a header-level field — one vendor per purchasing document. |
| BEDAT | Document date | 14.08.2026 | The date the PO was created. Not the delivery date — that is at item level in EKPO (EINDT). |
| EKORG | Purchasing organisation | 1000 | The purchasing org that created the PO. Determines which purchasing conditions and info records apply. |
| EKGRP | Purchasing group | 001 | The buyer group responsible for the PO. Often used for reporting and workload distribution. |
| WAERS | Currency | CAD | Document currency for all values in this PO. Canadian operations typically CAD; US operations USD. |
| AEDAT | Last changed date | 14.08.2026 | When the PO was last modified. Useful for tracking changes in support scenarios. |
| Field | Description | Example Value | Notes |
|---|---|---|---|
| EBELN | Purchasing document number | 4500012345 | Join key — links this item row back to the EKKO header. Same EBELN, one or many EKPO rows. |
| EBELP | Item number | 00010 | Line item number. Increments by 10 (00010, 00020…). Part of the primary key with EBELN. |
| MATNR | Material number | MAT-001 | The material being ordered. Plant is at item level — different line items can go to different plants. |
| WERKS | Plant | 1000 | The receiving plant for this line item. Not in EKKO — the vendor delivers to each plant separately. |
| MENGE | Purchase order quantity | 100.000 | Quantity ordered. Always check with EKBE to see how much has been received versus this quantity. |
| MEINS | Unit of measure | EA | Order unit. May differ from the material's base unit — conversion handled via MARM table. |
| NETPR | Net price | 25.00 | Price per unit in document currency. Used by MIRO for three-way match checking. |
| EINDT | Delivery date | 25.08.2026 | Expected delivery date at item level. Used for delivery monitoring and scheduling. |
| LOEKZ | Deletion indicator | L | L = line item marked for deletion. Items with LOEKZ = L are excluded from goods receipts and invoicing. |
| ELIKZ | Final delivery indicator | X | X = delivery completed for this line. Set manually or automatically when ordered quantity is fully received. |
How to Query Purchasing Tables in SE16N — Step by Step
Every SAP MM consultant needs to know how to pull data directly from EKKO and EKPO. Here is the exact sequence used in production support work.
Additional Procurement Tables
| Table | What It Stores | Join Key | When to Use It |
|---|---|---|---|
| EKBE | Purchasing document history — every GR, IR, and cancellation posted against a PO line | MANDT + EBELN + EBELP | Most Used — first stop for three-way match issues, GR/IR reconciliation, and delivery verification |
| EINA | Purchasing info record — general data (vendor + material relationship) | MANDT + INFNR | Check why a PO is defaulting a particular vendor price or delivery time |
| EINE | Purchasing info record — purchasing org level data (price, validity, conditions) | MANDT + INFNR + EKORG | Pair with EINA for full info record detail including price validity dates |
| EKET | Schedule lines for scheduling agreements (delivery dates and quantities per line) | MANDT + EBELN + EBELP | Used only for scheduling agreements (BSART = LPA). Standard POs do not have EKET records. |
| EKCC | Contract release orders — links a PO to its framework order (contract) | MANDT + EBELN | Investigate why a PO is referencing a contract (ME33K) and track contract utilisation |
| A016 | Purchasing conditions — info record conditions (condition records for pricing) | MANDT + condition type keys | Used by ABAP developers to read or update purchasing price conditions programmatically |
| T024 | Purchasing groups — text and descriptions for purchasing group codes | MANDT + EKGRP | Quick lookup for purchasing group names when only a code (e.g. 001) is visible in reports |
| TVKO | Purchasing organisations — definition and description | MANDT + EKORG | Organisational structure queries — finding which company codes a purchasing org is assigned to |
SAP MM Material Master Tables
The material master in SAP is not one table — it is a hierarchy of tables, each holding a different level of data. Understanding the hierarchy is essential because it explains why you sometimes see data in MM01 at the client level and different data at the plant level. The structure: MARA (all plants, client level) → MARC (per plant) → MARD (per storage location).
Why the three-level split exists — in plain English. A material like "Steel Rod 10mm" might exist in 50 plants across the company. The basic description, unit of measure, and weight are the same everywhere — so SAP stores those once in MARA. But each plant has its own MRP settings, safety stock levels, and procurement type — so SAP stores those per plant in MARC. And each storage location within each plant holds its own physical stock — so SAP stores that in MARD. One material, one MARA record, 50 MARC records, and potentially hundreds of MARD records. That is the design — and knowing it prevents a lot of confusion during data investigations.
| Table | Level | Key Fields | What It Holds | Interview Importance |
|---|---|---|---|---|
| MARA | Client | MATNR | Material number, material type (MTART), material group (MATKL), base unit of measure (MEINS), gross/net weight, volume. Everything that is the same regardless of plant. | High |
| MARC | Plant | MATNR + WERKS | MRP type (DISMM), MRP controller (DISPO), safety stock (EISBE), reorder point (MINBE), procurement type (BESKZ — E internal, F external), special procurement key (SOBSL), lot size (BSTFE). All plant-specific settings. | High |
| MARD | Storage Location | MATNR + WERKS + LGORT | Unrestricted stock (LABST), quality inspection stock (EINME), blocked stock (SPEME), restricted-use stock. Current physical quantity per storage location. | High |
| MARM | Client | MATNR + MEINH | Unit of measure conversions — how many base units equal one order unit. For example: 1 carton (CTN) = 12 EA. Used when PO unit differs from base unit of measure. | Medium |
| MLAN | Client | MATNR + ALAND + TATYP | Tax classification for the material — determines input tax treatment during purchasing. Relevant for companies with partial VAT/GST recovery. | Medium |
| MBEW | Plant (Valuation) | MATNR + BWKEY | Material valuation data: price control indicator (VPRSV — S=standard, V=moving average), standard price (STPRS), moving average price (VERPR), total stock value (SALK3). The financial view of each material. | High |
| MVKE | Sales Organisation | MATNR + VKORG + VTWEG | Sales organisation and distribution channel data. Primarily an SD table but maintained through MM01 in the Sales views. | Medium |
For real-time stock levels, use transaction MMBE — not MARD directly. MARD is technically the stock table, but SAP updates it slightly after all posting processes complete. In a busy system with many parallel postings, a direct SE16N query on MARD can occasionally show a number that is fractions of a second out of date. MMBE (Stock Overview) and MB52 (Warehouse Stocks of Material) always reflect the confirmed real-time position. Use MARD for development and reporting; use MMBE for operational stock inquiries.
MBEW — The Valuation Table You Must Know
MBEW (material valuation data) is a material master table that sits at the intersection of MM and FI. It holds the financial value of every material at every plant. When you post a goods receipt in MIGO, SAP reads MBEW to find the standard price or moving average price and creates the accounting document automatically. When OBYC (account determination) is involved, it is the values in MBEW that drive what amount hits the stock account versus the price difference account.
| Field | Description | Example | Why It Matters |
|---|---|---|---|
| MATNR | Material number | MAT-001 | Primary key — which material this valuation record belongs to. |
| BWKEY | Valuation area (plant) | 1000 | In SAP MM, valuation area = plant. One MBEW record per material per plant. |
| VPRSV | Price control indicator | S or V | S = standard price (STPRS used for all postings). V = moving average price (VERPR updated with each GR). |
| STPRS | Standard price | 25.00 | Active when VPRSV = S. Every MIGO posting uses this price — differences go to PRD (price difference) account. |
| VERPR | Moving average price | 24.80 | Active when VPRSV = V. Updated with each goods receipt — weighted average of all stock receipts. |
| SALK3 | Total stock value | 2,480.00 | The total balance sheet value of this material at this plant. SALK3 ÷ LBKUM (unrestricted qty) = current MAP. |
SAP MM Inventory Management Tables
Every time you post a goods movement in MIGO — whether a goods receipt, goods issue, transfer posting, or return — SAP creates a material document. In SAP ECC, that document was split across two tables: MKPF (header) and MSEG (items). In SAP S/4HANA, those two tables were merged and simplified into a single table: MATDOC.
- MKPF — material document header (MBLNR + MJAHR)
- MSEG — material document items (movement type, qty, value)
- Two separate tables with a header-item join
- MSEG still exists in S/4HANA for backward compatibility
- New ABAP development should not use MSEG in S/4HANA
- MATDOC — unified material document (header + items in one table)
- Simplified key: MBLNR + MJAHR + ZEILE
- Includes all fields previously split across MKPF and MSEG
- Faster queries — no join required between header and item
- This is the table to use for all new S/4HANA development
| Field | Description | Example Value | Notes |
|---|---|---|---|
| MBLNR | Material document number | 5000012345 | The document number assigned when a MIGO posting is saved. Primary key field 1. |
| MJAHR | Material document year | 2026 | Fiscal year of the document. Primary key field 2 — needed because MBLNR resets each year. |
| ZEILE | Item number | 0001 | Line item within the material document. Primary key field 3. |
| BWART | Movement type | 101 | The movement type determines the direction and effect of the posting. 101 = GR for PO. Critical exam topic. |
| MATNR | Material number | MAT-001 | The material that was moved. |
| WERKS | Plant | 1000 | Plant receiving or issuing the material. |
| LGORT | Storage location | 0001 | The specific storage location within the plant. Matches MARD's LGORT for stock updates. |
| MENGE | Quantity | 50.000 | Quantity posted in this movement. Always positive — direction is determined by the movement type. |
| EBELN | Purchasing document number | 4500012345 | The PO this GR references. Populated for movement type 101 (GR for PO). The link between MATDOC and EKKO/EKPO. |
| EBELP | Purchasing document item | 00010 | The PO line item. Together with EBELN, links the GR to the exact PO item. Used in three-way match. |
| BUDAT | Posting date | 14.08.2026 | The date the goods movement was posted to inventory. Determines which period the stock update falls in. |
Movement Types — What the Numbers Mean
The BWART (movement type) field in MATDOC is the most important field in inventory management. It tells SAP exactly what kind of movement occurred — and drives everything that follows: which accounts are posted to, whether stock increases or decreases, whether a financial document is created, and which special stock type is affected. Every movement type has a three-digit code.
| Movement Type | Description | Stock Effect | Finance Effect |
|---|---|---|---|
| 101 | Goods receipt for purchase order | Unrestricted stock ↑ | Debit stock account (BSX), credit GR/IR clearing (WRX) |
| 102 | Reversal of goods receipt for PO (undoes 101) | Unrestricted stock ↓ | Reverses the 101 financial posting |
| 122 | Return to vendor (goods issued back to vendor) | Unrestricted stock ↓ | Reverses stock and GR/IR — links to vendor credit |
| 201 | Goods issue to cost centre (consumption posting) | Unrestricted stock ↓ | Debit cost centre (GBB/VBR), credit stock (BSX) |
| 261 | Goods issue to production order | Unrestricted stock ↓ | Debit production order, credit stock |
| 301 | Plant-to-plant transfer (one-step) | Stock moves between plants | Posting in both plants — may create price differences if prices differ |
| 311 | Transfer from storage location to storage location (one plant) | Stock moves between storage locations | No FI document — value stays in same plant |
| 501 | Receipt without purchase order (free goods in) | Unrestricted stock ↑ | Posts at moving average price — no GR/IR clearing |
| 551 | Scrapping (goods issue for scrapping) | Unrestricted stock ↓ | Debit scrapping account (GBB/AUA), credit stock |
SAP MM Invoice Verification Tables
When an invoice is entered through MIRO (Logistics Invoice Verification), SAP creates documents in both the MM and FI modules simultaneously. The MM side stores the invoice verification document in RBKP (header) and RSEG (items). The FI side creates an accounting document in BKPF (header) and BSEG (items). Both documents are linked through the accounting document number.
Why two sets of tables exist for one invoice — in plain English. The MM invoice (RBKP/RSEG) contains purchasing information: which PO was invoiced, which goods receipt it matches, the vendor's invoice number. The FI accounting document (BKPF/BSEG) contains financial information: which GL accounts were debited and credited, the posting period, the tax code used. SAP creates both because MM needs to track three-way match status and FI needs to track the financial transaction separately. They are linked — but they serve different purposes and different teams.
| Field | Description | Example | Notes |
|---|---|---|---|
| BELNR | Invoice document number | 5105012345 | Primary key field 1. The MM invoice document number — different from the FI accounting document number. |
| GJAHR | Fiscal year | 2026 | Primary key field 2. Always needed with BELNR because document numbers reset each year. |
| LIFNR | Vendor account number | 0000100001 | The vendor being invoiced. Join to LFA1 for vendor name and details. |
| BLDAT | Document date (invoice date) | 10.08.2026 | The date on the vendor's invoice. Can differ from the posting date. |
| BUDAT | Posting date | 14.08.2026 | The date the invoice is posted in SAP — determines the fiscal period. |
| RWBTR | Gross invoice amount | 2,600.00 | Total invoice value including tax. Currency from the linked PO (WAERS in EKKO). |
| RBSTAT | Invoice status | A | A = blocked, blank = posted. Query RBKP with RBSTAT = A to find all blocked invoices before running MRBR. |
| AUGBL | Clearing document number | 1500012345 | Populated when the invoice is paid and cleared in FI. Blank = invoice still open (unpaid). |
| Field | Description | Example | Notes |
|---|---|---|---|
| BELNR | Invoice document number | 5105012345 | Join key — links this RSEG row to its RBKP header. Same BELNR and GJAHR. |
| GJAHR | Fiscal year | 2026 | Needed with BELNR for the join. |
| BUZEI | Item number | 001 | Line item number within the invoice document. Part of the primary key. |
| EBELN | Purchasing document number | 4500012345 | The PO this invoice line references. This is the three-way match link back to EKKO/EKPO. |
| EBELP | PO item number | 00010 | The specific PO line being invoiced. Together with EBELN, SAP checks EKBE for matching GR quantities. |
| MATNR | Material number | MAT-001 | The material being invoiced. |
| MENGE | Invoice quantity | 50.000 | The quantity on the vendor's invoice. If this exceeds the GR quantity, SAP may block the invoice. |
| WRBTR | Invoice amount for this line | 1,250.00 | Line value in document currency. If this differs from PO value beyond tolerance, invoice may block. |
SAP Vendor Master Tables
Vendor master data in SAP follows the same hierarchical logic as material master data — general data that applies everywhere is stored once; company-code-specific data is stored per company code; purchasing-organisation-specific data is stored per purchasing organisation. In SAP S/4HANA, vendor master is maintained via transaction BP (Business Partner) — but the underlying tables remain LFA1, LFB1, and LFM1.
SE16N vs standard reports — when to use which. SE16N gives you raw table data and is best for ad-hoc investigation, data reconciliation, and support work where you know exactly what you are looking for. Standard reports (ME2M, MB51, MIR4, MB5S) are better for operational queries because they apply business logic, handle authorisation checks, and produce output in a format business users understand. In interviews, always mention both — knowing when not to use SE16N is as important as knowing how to use it.
- Raw database data — no business logic applied
- Any table, any field combination
- Best for: support investigation, data reconciliation
- Risk: can expose sensitive data if unrestricted
- Often restricted in production systems
- Requires knowing the table and field names
- Business logic applied — shows processed results
- Authorisation-controlled per business area
- Best for: operational queries, business user output
- Safe in production — designed for end users
- Available to all users with appropriate roles
- Output formats: ALV grid, PDF, Excel export
| Table | Level | Key Fields | What It Holds | Maintained In |
|---|---|---|---|---|
| LFA1 | Client (General) | MANDT + LIFNR | Vendor name (NAME1), country (LAND1), address, tax number (STCD1), language. Same for all company codes. | BP (S/4HANA) / XK01 (ECC) |
| LFB1 | Company Code | MANDT + LIFNR + BUKRS | Reconciliation account (AKONT), payment terms (ZTERM), payment method (ZWELS), withholding tax. One record per company code where the vendor is active. | BP / XK01 |
| LFM1 | Purchasing Organisation | MANDT + LIFNR + EKORG | Purchasing-org-level defaults: order currency (WAERS), payment terms for purchasing (ZTERM), minimum order value, planned delivery time. | BP / MK01 |
| LFM2 | Purchasing Org + Plant | MANDT + LIFNR + EKORG + WERKS | Plant-level purchasing data for specific vendor-plant combinations. Less commonly used than LFM1. | BP / MK01 |
| BUT000 | Business Partner (S/4HANA) | MANDT + PARTNER | The central Business Partner table in S/4HANA. LFA1 is still populated, but BUT000 is the primary BP record. Understanding this table is critical for S/4HANA projects. | BP (S/4HANA only) |
S/4HANA change you will be tested on. In SAP S/4HANA, all vendor and customer master data is managed through the Business Partner (BP) concept. Separate transactions like XK01 (create vendor) and MK01 (extend vendor to purchasing org) still exist but redirect to BP in S/4HANA. The underlying data still flows into LFA1, LFB1, and LFM1 — but the maintenance transaction is now always BP. This change is tested directly in C_TS452 (Organisational Structure and Master Data topic area).
Production system table access is often restricted — and for good reason. In most enterprise SAP environments, direct table access via SE16N is blocked or audited in production (PRD). Basis teams restrict it to prevent accidental data exposure and to maintain SOX/audit compliance. Always use standard reports first: ME2M for PO data, MB51 for material documents, MIR4 for invoices. If you genuinely need SE16N access in production, raise a formal access request with your basis/security team and document the business reason.
Complete MM Table Reference — All Areas
| Table | Area | What It Stores | Interview Priority |
|---|---|---|---|
| EKKO | Procurement | Purchasing document header (vendor, date, document type) | Must Know |
| EKPO | Procurement | Purchasing document item (material, qty, plant, price) | Must Know |
| EKBE | Procurement | Purchasing document history (all GR/IR postings against PO) | Must Know |
| EINA | Procurement | Info record general data (vendor-material relationship) | Know |
| EINE | Procurement | Info record purchasing org data (price, validity) | Know |
| EKET | Procurement | Scheduling agreement delivery schedule lines | Know |
| MARA | Material Master | General material data — client level (material type, group, UOM) | Must Know |
| MARC | Material Master | Plant-level material data (MRP settings, procurement type) | Must Know |
| MARD | Material Master | Storage location stock (unrestricted, QI, blocked quantities) | Must Know |
| MBEW | Material Master | Material valuation (standard/MAP price, total value) | Must Know |
| MARM | Material Master | Unit of measure conversions | Know |
| MLAN | Material Master | Tax classification for material | Know |
| MVKE | Material Master | Sales organisation data for material | Awareness |
| MATDOC | Inventory Mgmt | Material document — S/4HANA (replaces MKPF+MSEG) | Must Know |
| MSEG | Inventory Mgmt | Material document item — ECC (still exists in S/4 for compatibility) | Know difference |
| MKPF | Inventory Mgmt | Material document header — ECC (use MATDOC in S/4HANA) | Know difference |
| RBKP | Invoice Verification | Invoice document header (MIRO result — vendor, amount, status) | Must Know |
| RSEG | Invoice Verification | Invoice document item (PO reference, qty, value) | Must Know |
| LFA1 | Vendor Master | Vendor general data — client level (name, country, tax number) | Must Know |
| LFB1 | Vendor Master | Vendor company code data (reconciliation account, payment terms) | Must Know |
| LFM1 | Vendor Master | Vendor purchasing organisation data (currency, delivery time) | Know |
| BUT000 | Vendor Master | Business Partner central table — S/4HANA | S/4 Important |
| T156 | Configuration | Movement type text and descriptions | Know |
| T156S | Configuration | Movement type control parameters | Know |
| T001W | Configuration | Plants — definition and description | Awareness |
| BKPF | Finance (FI) | Accounting document header — created by MIGO and MIRO postings | Know |
| BSEG | Finance (FI) | Accounting document line items — GL accounts, amounts, cost objects | Know |
SAP MM Tables — 20 Questions Answered
The most important SAP MM tables are: EKKO (purchasing document header), EKPO (purchasing document item), MARA (general material data), MARC (plant-level material data), MARD (storage location stock), MATDOC (goods movements in S/4HANA — replaces MSEG), RBKP (invoice document header from MIRO), RSEG (invoice document item), and LFA1 (vendor master general data). These cover the four core MM areas: procurement, inventory management, master data, and invoice verification.
MSEG (document segment for material documents) was replaced by MATDOC in SAP S/4HANA. MATDOC is the unified inventory management document table that replaced the old MKPF (material document header) and MSEG (material document item) split. In S/4HANA, all goods movement data is stored in MATDOC as a single table with a simplified structure. MKPF and MSEG still exist in S/4HANA for compatibility but are no longer the primary tables — always use MATDOC for new development and reporting.
EKKO (purchasing document header) and EKPO (purchasing document item) are joined on two fields: MANDT (client) and EBELN (purchasing document number). The relationship is one-to-many: one EKKO header record links to multiple EKPO item records. In SE16N or SE16, when you query purchasing data you typically need both tables — EKKO gives you vendor (LIFNR), document date (BEDAT), and document type (BSART); EKPO gives you material (MATNR), quantity (MENGE), and plant (WERKS).
In SAP S/4HANA, goods movement data is stored in MATDOC (Material Document). This replaced the old two-table structure of MKPF (header) and MSEG (item) from SAP ECC. MATDOC stores everything in one table: document number (MBLNR), year (MJAHR), item (ZEILE), material (MATNR), plant (WERKS), movement type (BWART), quantity (MENGE), and the linked purchasing document (EBELN/EBELP). When doing ABAP development or reporting in S/4HANA, always use MATDOC — not MSEG.
MARA holds material data that applies across the entire SAP client — material number (MATNR), material type (MTART), material group (MATKL), base unit of measure (MEINS), and gross weight. It is the top-level material master table with one record per material. MARC holds material data at the plant level — one record per material per plant combination. It contains MRP settings (DISMM, DISPO), procurement type (BESKZ), special procurement key (SOBSL), and ABC indicator. A single MARA record can have many MARC records — one for each plant where the material is maintained.
Current stock levels are stored in MARD (storage location data for material). MARD holds unrestricted stock (LABST), quality inspection stock (EINME), and blocked stock (SPEME) at the storage location level — one record per material, plant, and storage location combination. For the most accurate real-time stock figure, always use transaction MMBE (Stock Overview) or MB52 (Warehouse Stocks of Material) rather than querying MARD directly, as posting delays can affect table accuracy in busy systems.
Invoice data entered via MIRO is stored in two tables: RBKP (header data — vendor, posting date, gross amount, invoice number) and RSEG (line item data — purchasing document reference, material, quantity, amount, tax code). The join is MANDT + BELNR + GJAHR. A third table, BKPF (accounting document header), is created simultaneously in FI. For blocked invoices, query RBKP with field RBSTAT = 'A' to identify invoices pending release in MRBR.
EINA (purchasing info record — general data) and EINE (purchasing info record — purchasing organisation data) store the purchasing info record created via ME11. EINA holds the material-vendor relationship at the client level: vendor (LIFNR), material (MATNR), and info record number (INFNR). EINE holds the purchasing organisation level data: net price (NETPR), valid from/to dates, and planned delivery time. The join between EINA and EINE is on MANDT + INFNR. Info records are the source of default pricing when a purchase order is created for a vendor-material combination.
The plant on a purchase order line item is stored in table EKPO (purchasing document item), field WERKS. Query SE16N with table EKPO, enter your purchasing document number in field EBELN, and the result shows WERKS at the line item level. Note that different line items on the same PO can be for different plants — the plant is always at item level, not header level. The header table EKKO does not contain plant — it only contains vendor (LIFNR), document type (BSART), and purchasing organisation (EKORG).
The most commonly asked SAP MM tables in interviews are: EKKO and EKPO (and the ability to explain their join and what data each holds); MARA, MARC, MARD (material master hierarchy — client, plant, storage location); MSEG/MATDOC (goods movement — and crucially, knowing that S/4HANA uses MATDOC); RBKP and RSEG (invoice verification); LFA1 and LFB1 (vendor master); and T156 (movement type table). Interviewers test whether you know which table to go to for which data — not just that the tables exist.
LFA1 is the vendor master general data table in SAP. It stores the core vendor information at the client level: vendor account number (LIFNR), name (NAME1), country (LAND1), city (ORT01), and tax number (STCD1). In S/4HANA, vendor master is maintained via transaction BP (Business Partner) but data still sits in LFA1. LFA1 has a companion table LFB1 (vendor master company code data) which stores company-code-specific data like reconciliation account (AKONT) and payment methods. The join is MANDT + LIFNR.
Use transaction SE16N (General Table Display) — the standard way to query any SAP database table without writing code. Enter the table name, add filter values for the fields you want, set a maximum number of results, and execute. SE16N is available to most SAP consultants with appropriate authorisation. In production systems, direct table access is often restricted — use standard reports like ME2M (purchase orders by material), MB51 (material document list), or MIR4 (display invoice) to get the same data through controlled transactions.
EKET is the scheduling agreement delivery schedule table in SAP MM. It stores delivery schedule lines for outline agreements (scheduling agreements created with ME31L). Key fields: EBELN (scheduling agreement number), EBELP (item number), EINDT (delivery date), MENGE (scheduled quantity), and WEMNG (quantity of goods received against this schedule line). The join to the main purchasing tables is MANDT + EBELN + EBELP. EKET is only populated for scheduling agreements — standard purchase orders do not have EKET records.
The GR/IR clearing account balance is visible via GL account data in table BSEG, filtered by the specific account configured in OBYC (transaction key WRX). To find open GR/IR items specifically, use report MB5S (GR/IR Account Analysis) — it reads from EKBE (purchasing document history), MATDOC (goods movements), and RBKP/RSEG (invoices) to calculate what is open. The EKBE table is the most useful direct table for seeing all GR and IR postings against a specific purchase order line.
EKBE (purchasing document history) stores the complete history of all transactions posted against a purchase order or scheduling agreement line item. Key fields: EBELN (PO number), EBELP (PO item), VGABE (transaction event type — E for GR, Q for invoice), MENGE (quantity), WRBTR (value), BELNR (material or accounting document number). EKBE is the single most useful table for answering questions like: "Has a GR been posted for this PO?" or "What has been invoiced so far?" — making it critical for AP reconciliation, three-way match checking, and GR/IR clearing work.
T156 is the movement type text table in SAP MM. It stores the description and short text for each movement type used in MIGO and other inventory management transactions. Key fields are MANDT, BWART (movement type), and SPRAS (language). The companion table T156S contains the control parameters for each movement type — whether it creates a financial document, which account determination it triggers, and whether it is a reversal movement. Movement types are configured via OMJJ, which reads from T156 and T156S.
In SAP S/4HANA, table MATDOC links a goods movement to its originating purchase order via fields EBELN (purchasing document number) and EBELP (purchasing document item). In SAP ECC, this same link was in table MSEG. When a goods receipt is posted in MIGO with reference to a purchase order, SAP automatically populates EBELN and EBELP in the resulting MATDOC record. This is how the three-way match works in the background — MIRO reads MATDOC to find what goods receipts exist for a PO before allowing invoice posting.
MLAN is the material master tax classification table. It stores the tax indicator for a material at the client level, used in tax determination during purchasing. Key fields: MATNR (material number), ALAND (country), TATYP (tax category), and TAXM1 (tax classification value — 0 = full tax, 1 = reduced tax, 2 = tax exempt). In SAP MM, MLAN matters when dealing with non-deductible input tax on purchase orders — the tax indicator in MLAN affects how VAT/GST is calculated and whether it is fully recoverable. Maintained through MM01 in the Sales views.
Use transaction ME2L (purchase orders by vendor) — the standard report for this task. If you need to query the database directly, use SE16N on table EKKO with the vendor number (LIFNR) as the filter. EKKO is the purchasing document header table, and vendor is a header-level field. Add a document type filter (BSART = 'NB' for standard POs, 'FO' for framework orders) if needed. To get line item details (materials, quantities, amounts), join EKKO to EKPO on MANDT + EBELN. In interviews, always mention both the transaction (ME2L) and the table join (EKKO/EKPO) to show you understand both the system and the data model.
Yes — VoiSAP's SAP MM training covers both the functional processes and the underlying data model, including the key tables in this guide. You get hands-on access to a live SAP S/4HANA system, so you can run SE16N queries and see how EKKO, EKPO, MATDOC, and RBKP actually look in a real system — not just theory. Training from an instructor with 18 years of SAP consulting experience across enterprise clients in the UK and Canada. Students consistently land their first SAP MM role within 3-6 months. Book a free demo to discuss your background and the right preparation path.
Book Your Free SAP MM Demo
Ask about the training, the tables, the certification, or anything else. An 18-year SAP consultant will get back to you — usually the same day.