offdataai
SAP · data model template

SAP Material Master data model

Third-normal-form mirror of the SAP material master as it lands from the source ERP. Each organizational view (plant, storage, valuation, sales, UoM) becomes its own entity hanging off the MARA general record by foreign key, matching SAP's view-per-org-level segmentation; the bill of material is normalized into header (STKO) and item (STPO) tables.

Normalized replica of the SAP ECC/S4HANA material master multi-view tables for a warehouse staging/replication layer: general data (MARA), descriptions (MAKT), plant (MARC), storage location (MARD), valuation (MBEW), sales (MVKE) and unit-of-measure conversions (MARM), plus BOM header (STKO) and item (STPO) — keyed by the real SAP business keys (matnr, werks, lgort, bwkey, vkorg, meinh, stlnr) and anchored to T134/material-group/UoM/plant check tables. It is a normalized (3NF) relational model that mirrors the source system, suited to operational databases and to landing source data faithfully.

3NFSAPSOX
13
tables
103
columns
12
relationships
1
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: PostgreSQL). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

referencegeneralplant_storagevaluation_salesbill_of_material

Design decisions

  • View-per-organizational-level normalization mirrors SAP

    SAP maintains the material master in segments keyed by organizational level — MARA (client), MARC (plant), MARD (storage location), MBEW (valuation area), MVKE (sales org/channel); replicating each segment as its own table preserves that multi-view structure losslessly.

  • Descriptions and UoM conversions split out

    MAKT (one row per language) and MARM (one row per alternative unit) are 1:many off the material; separate tables avoid repeating the general data and respect 3NF by removing the multi-valued language/UoM dependency.

  • Bill of material normalized into header and item

    SAP stores BOMs as STKO (header, keyed by stlnr/stlal) → STPO (item); replicating that header/item split keeps component lists out of the material master and supports alternative/variant BOMs.

  • Check tables modeled as lookups

    Material type (T134), material group, base UoM and plant (T001W) are slow SAP check tables; modeling them as lookups without an audit trail keeps reference data clean and avoids re-keying every material segment row.

Tables in the SAP Material Master model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Tables (9)

material_general

Grain: one row per material (matnr)

SAP MARA — material master general data.

ColumnTypeKeys
material_general_keybigintPK
material_type_keybigint
material_group_keybigint
base_uom_keybigint
matnrvarcharBK
mtartvarchar
matklvarchar
meinsvarchar
mbrshvarchar
brgewdecimal
ntgewdecimal
geweivarchar
ersdadate
ernamvarcharPII
lvormboolean

material_description

Grain: one row per material per language (matnr, spras)

SAP MAKT — material descriptions.

ColumnTypeKeys
material_description_keybigintPK
material_general_keybigint
matnrvarcharBK
sprasvarcharBK
maktxvarchar

material_plant

Grain: one row per material per plant (matnr, werks)

SAP MARC — material master plant data.

ColumnTypeKeys
material_plant_keybigintPK
material_general_keybigint
plant_keybigint
matnrvarcharBK
werksvarcharBK
ekgrpvarchar
dismmvarchar
dispovarchar
beskzvarchar
plifzdecimal
eisbedecimal
lvormboolean

material_storage

Grain: one row per material per storage location (matnr, werks, lgort)

SAP MARD — material master storage location/batch segment.

ColumnTypeKeys
material_storage_keybigintPK
material_plant_keybigint
matnrvarcharBK
werksvarcharBK
lgortvarcharBK
labstdecimal
insmedecimal
spemedecimal
lvormboolean

material_valuation

Grain: one row per material per valuation area (matnr, bwkey, bwtar)

SAP MBEW — material valuation.

ColumnTypeKeys
material_valuation_keybigintPK
material_general_keybigint
matnrvarcharBK
bwkeyvarcharBK
bwtarvarcharBK
vprsvvarchar
verprdecimal
stprsdecimal
peinhdecimal
salk3decimal
waersvarchar

material_sales

Grain: one row per material per sales org/channel (matnr, vkorg, vtweg)

SAP MVKE — material master sales data.

ColumnTypeKeys
material_sales_keybigintPK
material_general_keybigint
matnrvarcharBK
vkorgvarcharBK
vtwegvarcharBK
dwerkvarchar
ktgrmvarchar
mtposvarchar
taxm1varchar
lvormboolean

material_uom

Grain: one row per material per alternative UoM (matnr, meinh)

SAP MARM — units of measure for material.

ColumnTypeKeys
material_uom_keybigintPK
material_general_keybigint
matnrvarcharBK
meinhvarcharBK
umrezdecimal
umrendecimal
eannrvarchar

bom_header

Grain: one row per BOM header (stlnr, stlal)

SAP STKO — BOM header.

ColumnTypeKeys
bom_header_keybigintPK
stlnrvarcharBK
stlalvarcharBK
stltyvarchar
bmeinvarchar
bmengdecimal
datuvdate
stlstvarchar

bom_item

Grain: one row per BOM item (stlnr, stlkn)

SAP STPO — BOM item.

ColumnTypeKeys
bom_item_keybigintPK
bom_header_keybigint
component_material_keybigint
stlnrvarcharBK
stlknvarcharBK
posnrvarchar
idnrkvarchar
mengedecimal
meinsvarchar
postpvarchar

Lookup tables (4)

material_type

Grain: one row per material type

SAP T134 / T134T — material type check table.

ColumnTypeKeys
material_type_keybigintPK
mtartvarcharBK
mtbezvarchar
mbrshvarchar

material_group

Grain: one row per material group

SAP T023 / T023T — material group check table.

ColumnTypeKeys
material_group_keybigintPK
matklvarcharBK
wgbezvarchar

base_uom

Grain: one row per unit of measure

SAP T006 / T006A — unit of measure check table.

ColumnTypeKeys
base_uom_keybigintPK
meinsvarcharBK
msehlvarchar
dimidvarchar

plant

Grain: one row per plant

SAP T001W — plant/branch check table.

ColumnTypeKeys
plant_keybigintPK
werksvarcharBK
name1varchar
land1varchar
bukrsvarchar

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • material_general.material_type_key → material_type (many-to-one)
  • material_general.material_group_key → material_group (many-to-one)
  • material_general.base_uom_key → base_uom (many-to-one)
  • material_description.material_general_key → material_general (many-to-one)
  • material_plant.material_general_key → material_general (many-to-one)
  • material_plant.plant_key → plant (many-to-one)
  • material_storage.material_plant_key → material_plant (many-to-one)
  • material_valuation.material_general_key → material_general (many-to-one)
  • material_sales.material_general_key → material_general (many-to-one)
  • material_uom.material_general_key → material_general (many-to-one)
  • bom_item.bom_header_key → bom_header (many-to-one)
  • bom_item.component_material_key → material_general (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time