ProdTable
worksheet headerProduction order header — one row per order carrying the item being built, order status and type, scheduled and actual dates, and the BOM and route it was created from
What the badges mean
- main
- Table group: how F&O categorizes the table's role — main entity, group/header, transaction, worksheet header, worksheet line, reference, parameter, or framework.
- Shared across companies
- The table carries no
DataAreaId— rows aren’t partitioned per company, so a query never needs (and can’t use) a company filter here (see the quirks guide). - Date-effective
- The table carries a
ValidFrom/ValidToeffectivity window — a join without a date filter multiplies every key by its history (see the quirks guide).
Header & line
ProdTable is the header for its lines in ProdBOM.
Fields
25 fields · 1 key
25 fields.
| Key | Field | EDT | Description | Type | Length | Flags |
|---|---|---|---|---|---|---|
| Key | ProdId | ProdId | The production order number — the natural key BOM lines and postings join back on | string | 20 | |
| ItemId | ItemId | Item the order produces | string | 20 | ||
| Name | Order description, defaulted from the item name | string | 60 | |||
| ProdStatus | Order status across its life cycle (created through ended) | enum | ||||
| ProdType | Whether this is a standard order or a vendor (subcontracted) order | enum | ||||
| InventDimId | InventDimId | Inventory-dimension combination the order produces into; join to InventDim to resolve site / warehouse | string | 25 | ||
| BOMId | BOMId | BOM header the order's material lines were copied from | string | 20 | ||
| RouteId | RouteId | Route the order's operations were copied from | string | 20 | ||
| QtySched | Quantity the order is scheduled to produce | real | ||||
| QtyCalc | Estimated quantity the order was cost-estimated at | real | ||||
| QtyStUp | Started quantity — how much of the order has been released to production | real | ||||
| RemainInventPhysical | Quantity still to be reported as finished | real | ||||
| SchedStart | Scheduled start date — the primary analysis date for production load | date | ||||
| SchedEnd | Scheduled end date; unset rows carry the 1900-01-01 sentinel | date | ||||
| DlvDate | Delivery date the order is due against; unset rows carry the 1900-01-01 sentinel | date | ||||
| StUpDate | Actual start date; unstarted orders carry the 1900-01-01 sentinel | date | ||||
| FinishedDate | Date the order was reported as finished; unset rows carry the 1900-01-01 sentinel | date | ||||
| RealDate | Date the order was ended (costed); unset rows carry the 1900-01-01 sentinel | date | ||||
| ProdPoolId | Production pool the order is grouped under for scheduling and reporting | string | ||||
| ProdGroupId | Production group, used for ledger posting profiles | string | ||||
| CollectRefProdId | ProdId | Reference production order — links a sub-production back to its parent order | string | 20 | ||
| InventRefType | What kind of demand the order was created against (sales order, production, none…) | enum | ||||
| InventRefId | Order number of the referenced demand document, per InventRefType | string | 20 | |||
| InventTransId | InventTransId | Inventory transaction reference of the order's receipt — the lot the produced quantity lands on | string | 40 | ||
| DefaultDimension | RecId | RecId of the order's default financial-dimension value set in DimensionAttributeValueSet | int64 |
Field provenance: hand-curated.
Boilerplate SQL
Starting point for reading ProdTable on Databricks — enums are decoded, 1900-01-01 dates are wrapped to NULL, and the DataAreaId anchor is in place. Set your Unity Catalog location, company, and filter values below; they’re substituted into the SQL and the copy button.
6 parameters not filled: <catalog>, <schema>, <company>, <ProdId>, <DATE_FROM>, <DATE_TO>
-- ============================================================
-- Table : ProdTable Production order header — one row per order carrying the item being built, order status and type, scheduled and actual dates, and the BOM and route it was created from
-- Purpose: Column-selected read of ProdTable — auto-generated from field metadata
-- Grain : One row per company (dataareaid) + ProdId
-- Notes : Auto-generated skeleton for Synapse Link / Fabric Link-landed F&O data (lowercase column names). Enums decoded inline where verified; datetimes stored in UTC; 1900-01-01 dates are sentinels mapped to NULL. System/audit columns omitted — see the quirks guide.
-- ============================================================
SELECT
pr.prodid AS "The production order number — the natural key BOM lines and postings join back on",
pr.itemid AS "Item the order produces",
pr.name AS "Order description, defaulted from the item name",
pr.prodstatus AS "Order status across its life cycle (created through ended)", -- enum: decode pr.prodstatus via GlobalOptionsetMetadata join — see quirks guide #enums
pr.prodtype AS "Whether this is a standard order or a vendor (subcontracted) order", -- enum: decode pr.prodtype via GlobalOptionsetMetadata join — see quirks guide #enums
pr.inventdimid AS "Inventory-dimension combination the order produces into; join to InventDim to resolve site / warehouse",
pr.bomid AS "BOM header the order's material lines were copied from",
pr.routeid AS "Route the order's operations were copied from",
pr.qtysched AS "Quantity the order is scheduled to produce",
pr.qtycalc AS "Estimated quantity the order was cost-estimated at",
pr.qtystup AS "Started quantity — how much of the order has been released to production",
pr.remaininventphysical AS "Quantity still to be reported as finished",
pr.schedstart AS "Scheduled start date — the primary analysis date for production load",
CASE WHEN CAST(pr.schedend AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(pr.schedend AS DATE) END AS "Scheduled end date; unset rows carry the 1900-01-01 sentinel", -- 1900-01-01 sentinel → NULL
CASE WHEN CAST(pr.dlvdate AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(pr.dlvdate AS DATE) END AS "Delivery date the order is due against; unset rows carry the 1900-01-01 sentinel", -- 1900-01-01 sentinel → NULL
CASE WHEN CAST(pr.stupdate AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(pr.stupdate AS DATE) END AS "Actual start date; unstarted orders carry the 1900-01-01 sentinel", -- 1900-01-01 sentinel → NULL
CASE WHEN CAST(pr.finisheddate AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(pr.finisheddate AS DATE) END AS "Date the order was reported as finished; unset rows carry the 1900-01-01 sentinel", -- 1900-01-01 sentinel → NULL
CASE WHEN CAST(pr.realdate AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(pr.realdate AS DATE) END AS "Date the order was ended (costed); unset rows carry the 1900-01-01 sentinel", -- 1900-01-01 sentinel → NULL
pr.prodpoolid AS "Production pool the order is grouped under for scheduling and reporting",
pr.prodgroupid AS "Production group, used for ledger posting profiles",
pr.collectrefprodid AS "Reference production order — links a sub-production back to its parent order",
pr.inventreftype AS "What kind of demand the order was created against (sales order, production, none…)", -- enum: decode pr.inventreftype via GlobalOptionsetMetadata join — see quirks guide #enums
pr.inventrefid AS "Order number of the referenced demand document, per InventRefType",
pr.inventtransid AS "Inventory transaction reference of the order's receipt — the lot the produced quantity lands on",
pr.defaultdimension AS "RecId of the order's default financial-dimension value set in DimensionAttributeValueSet"
FROM <catalog>.<schema>.prodtable pr
-- Dimension expansion: uncomment to resolve site / warehouse / location / batch
-- LEFT JOIN <catalog>.<schema>.inventdim id ON id.inventdimid = pr.inventdimid AND id.dataareaid = pr.dataareaid
-- Resolve DimensionAttributeValueSet (via DefaultDimension): uncomment to join on its RecId surrogate key
-- LEFT JOIN <catalog>.<schema>.dimensionattributevalueset dim ON dim.recid = pr.defaultdimension
WHERE
pr.dataareaid = '<company>'
-- AND pr.prodid = '<ProdId>'
-- AND pr.schedstart >= '<DATE_FROM>' -- yyyy-MM-dd (UTC)
-- AND pr.schedstart <= '<DATE_TO>' -- yyyy-MM-dd (UTC)
ORDER BY pr.prodid;Verified September 2026
Relationships
Diagram of 1-hop neighbors — join details below. RecId and InventDim edges are highlighted; they’re the joins newcomers most often get wrong.
Join details
ON prodtable.prodid = prodbom.prodid AND prodtable.dataareaid = prodbom.dataareaidON prodtable.itemid = inventtable.itemid AND prodtable.dataareaid = inventtable.dataareaidON prodtable.bomid = bomtable.bomid AND prodtable.dataareaid = bomtable.dataareaidON prodtable.routeid = routetable.routeid AND prodtable.dataareaid = routetable.dataareaidON prodtable.inventdimid = inventdim.inventdimid AND prodtable.dataareaid = inventdim.dataareaidON prodtable.defaultdimension = dimensionattributevalueset.recid
Data Entities That Expose This Table
More Production Control tables
- RouteRoute operation sequence — one row per operation number on a route, ordering the operations and linking each to the next; operation times live on the related RouteOpr table
- RouteTableRoute header — one row per route identifier with its name and approval state; route versions assign it to items, and Route rows hold its operation sequence
- RouteVersionRoute version — the link that assigns a route to a finished item for a validity period, quantity range, and site, mirroring how BOMVersion assigns a BOM
- BOMBill of materials line — one component per row under a BOM header, with quantity per unit, validity dates, scrap factors, and the operation it is consumed at
- BOMTableBill of materials header — one row per BOM identifier, with its name, approval state, and production site; versions in BOMVersion decide which items use it and when
- BOMVersionBOM version — the link that assigns a BOM header to a finished item for a validity period, quantity range, and site; the Active flag decides which version planning and orders pick