SAP tableObjectSTPOModulePP_M2D

STPO table — BOM Item Table STPO

STPO stores the item-level data of a bill of material: one row per BOM item node, holding the component material, quantity, unit of measure and item category. It is alternative- and validity-independent; which alternative uses which item, and from when to when, is controlled separately in STAS. Always join through STLKN, never assume STPO alone tells you the current, active BOM.

STPO holds the component-level content of a bill of material, one row per item node, independent of which BOM alternative or date range that item belongs to. This page covers the key fields, the joins to STKO and STAS that make the data usable, and the pitfalls that come from treating STPO as a complete, date-valid BOM on its own.

Published 16 Sept 2026· 1,046 words

What it stores

Each row in STPO represents a single item within a bill of material group, identified by an internal BOM number and an item node number. The row carries the item's technical content: which material or object is consumed, in what quantity, in what unit, and under what item category (stock item, non-stock item, text item, document item, class item, variable-size item). STPO does not by itself say which BOM alternative the item belongs to or during what date range it is valid; that context sits in STAS. A single STPO row can be shared by more than one alternative if the alternative uses the same item content, which is exactly why changes made directly against STPO have a habit of rippling further than expected.

Key fields

  • MANDT - client
  • STLNR - internal BOM number (not the material or BOM group number shown on screen)
  • STLKN - BOM item node number, the internal key linking to STAS for validity and alternative context
  • IDNRK - component material number consumed by this item
  • POSNR - item number as displayed to the user (not the same as STLKN)
  • MENGE - component quantity, relative to the base quantity held on STKO-BMENG
  • MEINS - unit of measure for MENGE
  • POSTP - item category: L stock item, N non-stock item, T text item, D document item, K class item, R variable-size item
  • AUSCH - component scrap percentage
  • SANKA - costing relevance indicator for the item

How it joins the data model

  • STPO-STLNR = STKO-STLNR to reach the BOM header for a given internal BOM number
  • STPO-STLKN = STAS-STLKN (with matching STLNR) to bring in the alternative and the validity dates (DATUV/DATUB) for that item
  • STAS-STLTY/STLNR/STLAL = STKO-STLTY/STLNR/STLAL to resolve which alternative and BOM usage the item belongs to
  • MAST-STLNR = STKO-STLNR (via MAST-MATNR/WERKS) to get from a material and plant to the BOM number, then down into STPO
  • STPO-IDNRK = MARA-MATNR to identify the component material and pull its master data

How to read it safely

STPO is a large, high-volume table across most PP landscapes, so never select from it without restricting MANDT plus STLNR, or without coming in via MAST/STKO for a known material, plant and usage. STLNR is an internal pointer, not the material number, so filtering directly on IDNRK across the whole table is expensive and still won't tell you which alternative or date range applies. The table has no built-in validity filter of its own; every row that was ever created for a BOM number stays present, including items that have since been superseded or deleted from active use, so date logic always has to come from STAS, not from STPO.

How to prove it in the data

To confirm that a specific component is genuinely part of the currently valid BOM for a material and plant: start at MAST for the material and plant to get STLNR, read STKO for the alternative and usage, join to STAS on STLNR to find the STLKN rows valid for today's date, then read STPO for those STLKN values and check IDNRK against the component in question. If the component appears in STPO but its STLKN never shows up in a currently valid STAS row, it is not active in that BOM today, regardless of what STPO alone suggests.

ECC vs S/4HANA

STPO exists unchanged as a transparent table in S/4HANA; the underlying data model for BOM header, status and item was not redesigned in the move from ECC. BOM maintenance apps in S/4HANA read and write through the same STKO/STAS/STPO structure, generally exposed through compatibility views and CDS layers for reporting, but the table itself, its key and its split of header/validity/item content are the same as in ECC.

Common pitfalls

  • Reading STPO in isolation and assuming every row is currently active: validity and alternative assignment live in STAS, not STPO, so an STPO row can belong to an alternative that expired years ago.
  • Confusing STLKN (internal node key) with POSNR (the item number shown on screen): joins built on POSNR instead of STLKN silently return wrong or duplicate rows once a BOM has been changed with a change number.
  • Treating MENGE as an absolute required quantity: it is relative to STKO-BMENG, so component requirement calculations that skip the base quantity conversion are wrong by whatever factor the base quantity differs from 1.
  • Assuming a class item or variable-size item (POSTP = K or R) points to a real, consumable material in IDNRK: it may point to a class or a dummy object, and the real component is only resolved at order or planning time.
  • Changing an STPO row directly and expecting the change to be scoped to one alternative: because STPO content can be shared across alternatives via STAS, a direct table-level edit or an incorrectly scoped engineering change can alter more alternatives than intended.
  • Ignoring SANKA and POSTP when reconciling BOM quantities against cost estimates: text items, documents and non-costing-relevant items inflate a naive item count without contributing to material cost.

Whose problem this is

BOM content and structure are owned by production or plant engineering master data teams, not by the technical PP consultant. Questions about whether an item should be active, its quantity, or its scrap percentage go back to the engineering change process; the consultant's role is usually to prove what the system currently holds and trace how a change history led there.

Related SAP objects

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

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