T156 table — Movement Type Master Table
T156 is the customizing table that defines every movement type (BWART) used in Inventory Management, such as 101 for goods receipt or 201 for goods issue to cost center. One row is one movement type, carrying the control indicators that classify it as a receipt, issue, or transfer posting. It does not itself drive account determination or which fields appear on the entry screen; that sits in companion tables.
This page covers T156, the master table behind every movement type in MM Inventory Management. It focuses on what the header-level indicators actually control versus what people wrongly assume they control, since most movement type confusion is really a T156 vs T156M mix-up.
Published 15 Sept 2026· 1,003 words
What it stores
Each row in T156 represents one movement type, identified by BWART, and holds the general control indicators SAP uses to classify that movement type: whether it is a stock increase or decrease, whether it is a receipt into or issue from a stock account, and whether it posts to consumption. This is the definitional layer. It answers the question 'what kind of movement is 261' but not 'what fields does 261 require on the MIGO screen' or 'which GL account does 261 hit'. Those questions belong to other tables. T156 is maintained through customizing, rarely touched after go-live except when a new movement type is being introduced for a business scenario the standard set does not cover, such as a bespoke scrapping or subcontracting flow.
Key fields
- MANDT - client
- BWART - movement type, the key that every material document item carries
- KZBEW - movement indicator, broadly classifies the type of posting the movement type belongs to (for example transfer posting versus goods movement)
- KZZUG - receipt indicator, flags movement types that represent a receipt into stock
- KZVBR - consumption posting indicator, flags movement types that post to consumption
- SOBKZ - special stock indicator, flags whether the movement type is tied to a special stock category such as consignment or subcontracting
How it joins the data model
- MSEG-BWART = T156-BWART, the standard join from any material document item back to its movement type definition
- MATDOC-BWART = T156-BWART, the equivalent join on the S/4HANA extended material document table
- MKOL-BWART = T156-BWART and MSKA-BWART = T156-BWART when tracing special stock postings back to movement type classification
- T156-BWART joined conceptually to reason code table entries, since reason codes are only valid for the movement types they are assigned to
How to read it safely
T156 is a small customizing table, typically a few hundred rows across all clients, so selectivity is not a performance concern the way it is on MSEG or MATDOC. Always restrict by MANDT first out of habit, then filter on BWART if checking a specific movement type. The real work is reading the indicator combination correctly rather than filtering a large dataset: KZBEW, KZZUG and KZVBR together determine the category, and no single field tells the whole story. Do not try to infer account determination behavior from this table; it only classifies the movement, it does not carry GL accounts or valuation class logic.
How to prove it in the data
Symptom: a posting with movement type 262 is being treated as a receipt instead of a reversal of a goods issue to cost center. Selection: read T156 for BWART = '262' and check KZZUG and KZVBR. If KZZUG is blank and the record is flagged as a reversal-type movement rather than a genuine receipt, the posting logic upstream (in MIGO or the interface) is misclassifying the transaction, not the table definition. Cross-check the same fields for BWART = '261' to confirm 262 is configured as its counter-movement.
ECC vs S/4HANA
T156 is unchanged in S/4HANA as a customizing table; movement types remain the same concept and the standard set is largely identical to ECC. The underlying document tables it joins to have changed shape, since MSEG and MKPF are now compatibility views over the unified MATDOC table, but the BWART key and its meaning carry through untouched. No CDS-based replacement exists for T156 itself; it is maintained through the same customizing transactions as before.
Common pitfalls
- Assuming T156 controls which fields are mandatory or hidden on the MIGO or MB1x entry screen. That field-level control lives in the movement type and transaction combination table (commonly referenced as T156M), not in T156 itself.
- Assuming a blocked or missing movement type in T156 is why postings fail with an account determination error. Account determination failures point to valuation class and the automatic posting configuration, not to T156's classification indicators.
- Treating KZBEW, KZZUG and KZVBR as independent switches that can be read one at a time. They work as a combination; a movement type can look like a receipt on one indicator and a consumption posting on another depending on the special stock scenario.
- Confusing a movement type's reversal counterpart with a manually chosen 'similar looking' movement type. Using the wrong reversal movement type produces a document that balances on quantity but breaks the audit trail SAP expects between an original posting and its cancellation.
- Expecting T156 changes to take effect for documents already posted. Changing indicators here affects future postings only; historical MSEG or MATDOC rows keep whatever classification applied at posting time.
- Extending T156 with a new custom movement type without also maintaining the companion transaction/event control and account determination entries, which leaves the new movement type technically definable but unusable in practice.
Whose problem this is
Movement type configuration is owned by the MM inventory management functional consultant, maintained through the movement type customizing transaction, commonly OMJJ. Any request to add or change a movement type needs sign-off from whoever owns account determination configuration as well, since a new movement type is only useful once its account determination entries exist.
Related SAP objects
Reviewed pages this object connects to in the ERPClimb knowledge graph.
Source: ERPClimb — https://erpclimb.com/sap-tables/t156ERPClimb is an independent platform and is not affiliated with SAP SE. Reference pages are written and reviewed by SAP consultants for learning and troubleshooting.