BOM_COMPONENTS_B
Schema: BOMmasterSingle-level bill components — one row per component per operation per effectivity window, with usage quantity, yield, supply type, and the supply subinventory shop-floor issues pull from
Rows are date-effective — the same component reappears per revision window; filter EFFECTIVITY_DATE/DISABLE_DATE around an as-of date (and IMPLEMENTATION_DATE IS NOT NULL) or explosions double-count
No org column — the organization resolves through the bill header. The legacy BOM_INVENTORY_COMPONENTS compatibility view is an access layer over this table; confirm its exact predicate against your instance before trying to reproduce its row set from the base table.
What the badges mean
- Schema: INV
- Schema: the Oracle product schema that owns the table (INV, ONT, WSH, PO, BOM, WIP, MRP, MSC, AR, AP, GL, HR, APPLSYS) — tells you which product family the object belongs to, not who can query it.
- master
- Data class: what the table holds — master data, transaction documents, control/configuration, interface/staging, or an APPS-schema view.
- OU-striped (ORG_ID)
- Rows are scoped to an operating unit. A landed extract carries every operating unit’s rows — filter or join on
ORG_ID, and don’t confuse it withORGANIZATION_ID(see the quirks guide). - Per inventory org
- Rows are scoped to an inventory organization (plant or warehouse) via
ORGANIZATION_ID— a different partition from OU-striped tables (see the quirks guide). - Language-striped
- The table carries a
LANGUAGEcolumn (a _TL translation table or FND_LOOKUP_VALUES) — one row per language. Filter to oneLANGUAGEor a join multiplies rows (see the quirks guide). - View
- This is an APPS-schema convenience view, not a physical table. Extract the base tables it joins instead — views can be slow at scale and aren't guaranteed stable across patches.
Structural facts — how the table is partitioned, not a trap by itself
Join & extract hazards — verify before you rely on this
Header & line
BOM_COMPONENTS_B lines join back to their header BOM_STRUCTURES_B — and the org column — so a line never fans out.
Fields
18 fields · 1 key
18 fields.
| # | Field | Description | Type | Flags |
|---|---|---|---|---|
| 1 | COMPONENT_SEQUENCE_ID | Surrogate key of the component row | NUMBER | Primary-key field |
| 2 | BILL_SEQUENCE_ID | The bill the component belongs to — also where the organization resolves from | NUMBER | |
| 3 | COMPONENT_ITEM_ID | The component item | NUMBER | |
| 4 | OPERATION_SEQ_NUM | The routing operation that consumes the component — 1 when no routing; a value match, not a foreign key | NUMBER | |
| 5 | ITEM_NUM | Sort/display sequence on the bill | NUMBER | |
| 6 | COMPONENT_QUANTITY | Usage quantity per assembly | NUMBER | |
| 7 | COMPONENT_YIELD_FACTOR | Yield factor applied to usage | NUMBER | |
| 8 | EFFECTIVITY_DATE | When the component row becomes effective — the as-of filter column | DATE | The table's primary analysis date — a real DATE column, no conversion needed |
| 9 | DISABLE_DATE | When the row stops being effective — NULL while active | DATE | |
| 10 | IMPLEMENTATION_DATE | NULL on unimplemented ECO rows — filter it out for the as-built view | DATE | |
| 11 | PLANNING_FACTOR | Planning percentage for option/model components | NUMBER | |
| 12 | QUANTITY_RELATED | Whether the component quantity is tied to the option quantity | NUMBER | |
| 13 | WIP_SUPPLY_TYPE | Supply method — push, pull, phantom, bulk, supplier; numeric, decode from your instance's manufacturing lookups | NUMBER | |
| 14 | SUPPLY_SUBINVENTORY | Default supply subinventory for issues | VARCHAR2 | |
| 15 | SUPPLY_LOCATOR_ID | Default supply locator | NUMBER | |
| 16 | OPTIONAL | Whether the component is optional on a model bill | NUMBER | |
| 17 | BOM_ITEM_TYPE | Component's BOM item type — standard, model, option class…; numeric, undecoded | NUMBER | |
| 18 | BASIS_TYPE | Item vs lot basis for the usage quantity | NUMBER |
Field provenance: hand-curated. 1 key field.
Boilerplate SQL
Starting point for reading BOM_COMPONENTS_B on Databricks — real DATE columns need no conversion, and the org anchor is already in place. The optional LAST_UPDATE_DATE watermark is included. Set your Unity Catalog location, schema, and org values below; they’re substituted into the SQL and the copy button.
6 parameters not filled: <catalog>, <schema>, <COMPONENT_SEQUENCE_ID>, <DATE_FROM>, <DATE_TO>, <watermark>
-- ============================================================
-- Table : BOM_COMPONENTS_B — Single-level bill components — one row per component per operation per effectivity window, with usage quantity, yield, supply type, and the supply subinventory shop-floor issues pull from
-- Purpose: Column-selected read of BOM_COMPONENTS_B — auto-generated from field metadata
-- Grain : One row per COMPONENT_SEQUENCE_ID
-- Caution: Rows are date-effective — the same component reappears per revision window; filter EFFECTIVITY_DATE/DISABLE_DATE around an as-of date (and IMPLEMENTATION_DATE IS NOT NULL) or explosions double-count
-- Notes : Auto-generated skeleton for Oracle EBS R12 data landed in your lakehouse. Dates are real DATE/TIMESTAMP columns — no conversion needed. WHO audit columns omitted (see the quirks guide); the optional LAST_UPDATE_DATE watermark filter supports incremental extracts.
-- ============================================================
SELECT
t.COMPONENT_SEQUENCE_ID AS "Surrogate key of the component row",
t.BILL_SEQUENCE_ID AS "The bill the component belongs to — also where the organization resolves from",
t.COMPONENT_ITEM_ID AS "The component item",
t.OPERATION_SEQ_NUM AS "The routing operation that consumes the component — 1 when no routing; a value match, not a foreign key",
t.ITEM_NUM AS "Sort/display sequence on the bill",
t.COMPONENT_QUANTITY AS "Usage quantity per assembly",
t.COMPONENT_YIELD_FACTOR AS "Yield factor applied to usage",
t.EFFECTIVITY_DATE AS "When the component row becomes effective — the as-of filter column",
t.DISABLE_DATE AS "When the row stops being effective — NULL while active",
t.IMPLEMENTATION_DATE AS "NULL on unimplemented ECO rows — filter it out for the as-built view",
t.PLANNING_FACTOR AS "Planning percentage for option/model components",
t.QUANTITY_RELATED AS "Whether the component quantity is tied to the option quantity",
t.WIP_SUPPLY_TYPE AS "Supply method — push, pull, phantom, bulk, supplier; numeric, decode from your instance's manufacturing lookups",
t.SUPPLY_SUBINVENTORY AS "Default supply subinventory for issues",
t.SUPPLY_LOCATOR_ID AS "Default supply locator",
t.OPTIONAL AS "Whether the component is optional on a model bill",
t.BOM_ITEM_TYPE AS "Component's BOM item type — standard, model, option class…; numeric, undecoded",
t.BASIS_TYPE AS "Item vs lot basis for the usage quantity"
FROM <catalog>.<schema>.BOM_COMPONENTS_B t
WHERE
1 = 1 -- no partition column on this table; the filters below are optional
-- AND t.COMPONENT_SEQUENCE_ID = <COMPONENT_SEQUENCE_ID>
-- AND t.EFFECTIVITY_DATE >= DATE '<DATE_FROM>'
-- AND t.EFFECTIVITY_DATE <= DATE '<DATE_TO>'
-- AND t.LAST_UPDATE_DATE >= TIMESTAMP '<watermark>' -- WHO watermark, bulk-stamped by batch jobs; see quirks guide #who-columns
ORDER BY t.COMPONENT_SEQUENCE_ID;Verified September 2026
Relationships
Diagram of 1-hop neighbors — join details below. FND lookup decode and translation edges are highlighted; they’re the joins newcomers most often get wrong.
Join details
ON BOM_STRUCTURES_B.BILL_SEQUENCE_ID = BOM_COMPONENTS_B.BILL_SEQUENCE_IDON BOM_COMPONENTS_B.COMPONENT_ITEM_ID = MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_IDON BOM_INVENTORY_COMPONENTS.COMPONENT_SEQUENCE_ID = BOM_COMPONENTS_B.COMPONENT_SEQUENCE_ID
More BOM & Costing tables
- BOM_DEPARTMENTSThe department (work center) master per inventory organization — the places operations happen, with class, location, and the scrap account
- BOM_INVENTORY_COMPONENTSThe compatibility view legacy queries know BOM components by — an APPS-schema access layer over the physical components table
- BOM_OPERATION_RESOURCESResources required per routing operation — usage rate, assigned units, and the basis and charge types that drive costing, capacity, and scheduling
- BOM_OPERATION_SEQUENCESRouting operations — one row per operation per routing per effectivity window, department-assigned, with the count-point and backflush controls that decide where work is recorded
- BOM_OPERATIONAL_ROUTINGSThe routing header — one routing per assembly item, organization, and alternate designator, with the common-routing pointer and the completion subinventory finished assemblies land in
- BOM_RESOURCESThe resource master — machines, labor, and outside processing, plus overhead and material sub-elements sharing the table (the cost element discriminates), each with its UOM, charge behavior, and absorption account