Skip to content
Fusion Reference

INV_ONHAND_QUANTITIES_DETAIL

Product: INVtransactionPer inventory org

The on-hand balance detail — receipt-level slices of stock per item, org, subinventory, locator, and lot, consumed in FIFO order as material issues

Identity
Module: InventoryInventory-org partitioned (ORGANIZATION_ID)
EBS equivalents (1)
Grain note

Rows are FIFO receipt slices — SUM PRIMARY_TRANSACTION_QUANTITY at your chosen grain; a single row is not a balance

Notes

One item in one bin can hold many rows (one per receipt). On-hand at any grain is SUM(PRIMARY_TRANSACTION_QUANTITY) — or SUM(TRANSACTION_QUANTITY) in the row's own UOM — grouped by that grain; DATE_RECEIVED orders the slices. Fusion also maintains a ready-made aggregate in INV_ONHAND_QUANTITIES_SUMMARY.

What the badges mean
Product: EGP
Product: the Oracle product family that owns the object — the short code Oracle's Tables and Views documentation lists as the object owner. Fusion is SaaS, so this isn't a database schema; there's no SQL path to the tables at all (see the quirks guide).
master
Data class: what the table holds — master data, transaction documents, control/configuration, interface/staging, or a documented view.

Structural facts — how the table is partitioned, not a trap by itself

BU-striped (ORG_ID)
Rows are scoped to a business unit. The column is still named ORG_ID, but in Fusion it means business unit, not the EBS operating unit — treat any migrated “operating unit” filter as suspect (see the quirks guide).
Per inventory org
Rows are scoped to an inventory organization via ORGANIZATION_ID — always pair it with INVENTORY_ITEM_ID on item-level joins (see the quirks guide).
Set / ledger / named-BU striped
Some tables stripe by a named column instead of ORG_ID: reference data set (SET_ID — see the quirks guide), ledger (LEDGER_ID on the GL journal tables), or a named business-unit column (PRC_BU_ID / REQ_BU_ID in procurement). The table page’s partition line names the column, and the generated SQL anchors on it — never treat these tables as unpartitioned.
Language-striped
The table carries a LANGUAGE column (a _TL translation table or FND_LOOKUP_VALUES) — one row per language. Filter to one LANGUAGE or a join multiplies rows.

Join & extract hazards — verify before you rely on this

Date-effective
This is an _F table — one row per entity per effectivity window, with EFFECTIVE_START_DATE and EFFECTIVE_END_DATE part of the key. Join without a window filter and every fact multiplies by history (see the quirks guide).
View
This is a documented convenience view, not a physical table. Extract through the BICC data store that fronts its base objects instead of assuming the view lands as-is.
In field listings, the Key chip marks a key field — a member of the documented primary key or of a documented unique index.

Extract access

The delivered surfaces that reach this table — the BICC extract data store (PVO) for bulk extraction and the OTBI subject areas for real-time queries. There is no SQL path to the SaaS database.

  • FscmTopModelAM.ScmExtractAM.InvBiccExtractAM.InventoryOnhandExtractPVO
    OTBI: Inventory - Inventory Balance Real Time

    Keyed on OnhandQuantitiesId, mirroring the detail table's key. The subject-area name is singular Balance in Oracle's book — not Balances.

    Oracle data-store documentation (opens in new tab)

Fields

15 fields · 1 key

15 fields.

Table fields: position, field name, description, data type, and flags. 15 fields.
#FieldDescriptionTypeFlags
1ONHAND_QUANTITIES_IDSurrogate key of the on-hand sliceNUMBER
Key
2INVENTORY_ITEM_IDItem on handNUMBER
3ORGANIZATION_IDInventory org holding the stockNUMBER
4SUBINVENTORY_CODESubinventory holding the stockVARCHAR2
5LOCATOR_IDLocator holding the stockNUMBER
6LOT_NUMBERLot, when lot-controlledVARCHAR2
7PRIMARY_TRANSACTION_QUANTITYSlice quantity in the item's primary UOM — SUM this for on-handNUMBER
8TRANSACTION_QUANTITYSlice quantity in the entered UOMNUMBER
9TRANSACTION_UOM_CODEUOM of the creating transaction — note the _CODE suffix the transaction ledger's TRANSACTION_UOM lacksVARCHAR2
10SECONDARY_TRANSACTION_QUANTITYSlice quantity in the secondary UOM (dual-UOM items)NUMBER
11SECONDARY_UOM_CODESecondary UOMVARCHAR2
12DATE_RECEIVEDReceipt date of the slice — orders the FIFO consumptionDATE
Filter date
13PROJECT_IDProject stripe on the sliceNUMBER
14TASK_IDTask stripe on the sliceNUMBER
15COUNTRY_OF_ORIGIN_CODECountry-of-origin stripe on the sliceVARCHAR2

Field provenance: hand-curated. 1 key field.

Boilerplate SQL

Starting point for reading the BICC-landed copy of INV_ONHAND_QUANTITIES_DETAIL on Databricks — real DATE columns need no conversion, and the org anchor and the LAST_UPDATE_DATE watermark (the column incremental BICC extracts key on) are already in place. Set your Unity Catalog location, schema, and org values below; they’re substituted into the SQL and the copy button.

Query parameters

7 parameters not filled: <catalog>, <schema>, <inventory_org_id>, <ONHAND_QUANTITIES_ID>, <DATE_FROM>, <DATE_TO>, <watermark>

-- ============================================================
-- Table  : INV_ONHAND_QUANTITIES_DETAIL — The on-hand balance detail — receipt-level slices of stock per item, org, subinventory, locator, and lot, consumed in FIFO order as material issues
-- Purpose: Column-selected read of INV_ONHAND_QUANTITIES_DETAIL — auto-generated from field metadata
-- Grain  : One row per inventory org (ORGANIZATION_ID) + ONHAND_QUANTITIES_ID
-- Caution: Rows are FIFO receipt slices — SUM PRIMARY_TRANSACTION_QUANTITY at your chosen grain; a single row is not a balance
-- Notes  : Auto-generated skeleton for Oracle Fusion Cloud data landed in your lakehouse by a BICC extract — there is no SQL path to the SaaS database. Column names follow Oracle's table documentation — if your landed data still carries PVO attribute headers, map names first; see quirks #pvo-drift. 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.ONHAND_QUANTITIES_ID AS "Surrogate key of the on-hand slice",
  t.INVENTORY_ITEM_ID AS "Item on hand",
  t.ORGANIZATION_ID AS "Inventory org holding the stock",
  t.SUBINVENTORY_CODE AS "Subinventory holding the stock",
  t.LOCATOR_ID AS "Locator holding the stock",
  t.LOT_NUMBER AS "Lot, when lot-controlled",
  t.PRIMARY_TRANSACTION_QUANTITY AS "Slice quantity in the item's primary UOM — SUM this for on-hand",
  t.TRANSACTION_QUANTITY AS "Slice quantity in the entered UOM",
  t.TRANSACTION_UOM_CODE AS "UOM of the creating transaction — note the _CODE suffix the transaction ledger's TRANSACTION_UOM lacks",
  t.SECONDARY_TRANSACTION_QUANTITY AS "Slice quantity in the secondary UOM (dual-UOM items)",
  t.SECONDARY_UOM_CODE AS "Secondary UOM",
  t.DATE_RECEIVED AS "Receipt date of the slice — orders the FIFO consumption",
  t.PROJECT_ID AS "Project stripe on the slice",
  t.TASK_ID AS "Task stripe on the slice",
  t.COUNTRY_OF_ORIGIN_CODE AS "Country-of-origin stripe on the slice"
FROM <catalog>.<schema>.INV_ONHAND_QUANTITIES_DETAIL t
WHERE
  t.ORGANIZATION_ID = <inventory_org_id>  -- inventory org, NOT the business unit — see quirks guide #item-org-striping
  -- AND t.ONHAND_QUANTITIES_ID = <ONHAND_QUANTITIES_ID>
  -- AND t.DATE_RECEIVED >= DATE '<DATE_FROM>'
  -- AND t.DATE_RECEIVED <= DATE '<DATE_TO>'
  -- AND t.LAST_UPDATE_DATE >= TIMESTAMP '<watermark>'  -- the column incremental BICC extracts key on
ORDER BY t.ONHAND_QUANTITIES_ID;

Verified September 2026 · docs release 26C

Column names differ in BICC extracts — see PVO header drift.

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.

Loading relationship diagram…

Join details

  • INV_ONHAND_QUANTITIES_DETAILEGP_SYSTEM_ITEMS_Bforeign key · N:1
    ON INV_ONHAND_QUANTITIES_DETAIL.INVENTORY_ITEM_ID = EGP_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID AND INV_ONHAND_QUANTITIES_DETAIL.ORGANIZATION_ID = EGP_SYSTEM_ITEMS_B.ORGANIZATION_ID
  • INV_ONHAND_QUANTITIES_DETAILINV_SECONDARY_INVENTORIESforeign key · N:1
    ON INV_ONHAND_QUANTITIES_DETAIL.SUBINVENTORY_CODE = INV_SECONDARY_INVENTORIES.SECONDARY_INVENTORY_NAME AND INV_ONHAND_QUANTITIES_DETAIL.ORGANIZATION_ID = INV_SECONDARY_INVENTORIES.ORGANIZATION_ID
  • INV_ONHAND_QUANTITIES_DETAILINV_ITEM_LOCATIONSforeign key · N:1
    ON INV_ONHAND_QUANTITIES_DETAIL.LOCATOR_ID = INV_ITEM_LOCATIONS.INVENTORY_LOCATION_ID AND INV_ONHAND_QUANTITIES_DETAIL.ORGANIZATION_ID = INV_ITEM_LOCATIONS.ORGANIZATION_ID
  • INV_ONHAND_QUANTITIES_DETAILINV_LOT_NUMBERSforeign key · N:1
    ON INV_ONHAND_QUANTITIES_DETAIL.LOT_NUMBER = INV_LOT_NUMBERS.LOT_NUMBER AND INV_ONHAND_QUANTITIES_DETAIL.INVENTORY_ITEM_ID = INV_LOT_NUMBERS.INVENTORY_ITEM_ID AND INV_ONHAND_QUANTITIES_DETAIL.ORGANIZATION_ID = INV_LOT_NUMBERS.ORGANIZATION_ID

Browse more Inventory tables

More Inventory tables

Maintained by Summit Analytics, a supply chain analytics practice. The tools and references are free — the consulting is selective.

Part of the Summit Analytics reference library.

Work with the practice

Not affiliated with or endorsed by Oracle. Oracle and Oracle Fusion Cloud Applications are registered trademarks of Oracle and/or its affiliates.