ERP Table and Field Explorer
Oracle E-Business Suite Tables and Field Explorer
Search the core Oracle E-Business Suite R12 tables by table name, column or description, see each table's registered key, the columns that matter and its joins, then pick two to four tables to get an Oracle SQL JOIN skeleton. Tables ending in _ALL are striped by ORG_ID (operating unit), inventory tables by ORGANIZATION_ID, and GL and SLA tables by LEDGER_ID; every key and column here comes from the eTRM for 12.2.
120 tables, 1179 documented fields and 211 join paths across 13 modules. Free, runs in your browser, no login needed.
1Find a table by name, description or field
Naming: Base tables are owned by product schemas (ONT, PO, AP, AR, INV, GL, XLA) and reached through APPS synonyms. Tables ending in _ALL hold every operating unit and carry ORG_ID; the APPS synonym without the suffix (OE_ORDER_HEADERS, PO_HEADERS) is secured by Multi-Org Access Control and returns rows only after MO_GLOBAL sets the context. _B tables hold base data and _TL tables translations (filter LANGUAGE = USERENV('LANG')). In 12.2 the APPS synonyms point to editioning views such as OE_ORDER_HEADERS_ALL#.
Tables by module
2Pick tables
120 of 120Items
MTL_SYSTEM_ITEMS_B
Item master: one row per item per inventory organization, with every item attribute (control flags, planning, costing, order management, purchasing).
Also known as: Master Items form, MSIB, item master, inventory items
INVENTORY_ITEM_IDORGANIZATION_ID| Field | Meaning |
|---|---|
| INVENTORY_ITEM_ID | Item identifier, the same value in every organization the item is assigned to. |
| ORGANIZATION_ID | Inventory organization (MTL_PARAMETERS). The master org row holds master-controlled attributes. |
| SEGMENT1 | First item key flexfield segment, usually the whole item number. |
| DESCRIPTION | Description in the base language only; translations are in MTL_SYSTEM_ITEMS_TL. |
| PRIMARY_UOM_CODE | Primary unit of measure code. |
| INVENTORY_ITEM_STATUS_CODE | Item status, for example Active or Inactive. |
| ITEM_TYPE | User item type, for example FG finished good or P purchased item (user defined lookup). |
| PLANNING_MAKE_BUY_CODE | 1 make, 2 buy (lookup MTL_PLANNING_MAKE_BUY). |
| BOM_ENABLED_FLAG | Y when the item may appear on a bill of material. |
| LOT_CONTROL_CODE | 1 no lot control, 2 full lot control. |
| SERIAL_NUMBER_CONTROL_CODE | 1 none, 2 predefined, 5 at inventory receipt, 6 at sales order issue. |
| BUYER_ID | Default buyer (PO_AGENTS.AGENT_ID). |
Joins
- MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_PARAMETERS.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_SYSTEM_ITEMS_TL.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_SYSTEM_ITEMS_TL.ORGANIZATION_ID
Add LANGUAGE = USERENV('LANG').
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_ITEM_CATEGORIES.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_ITEM_CATEGORIES.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = CST_ITEM_COSTS.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = CST_ITEM_COSTS.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_ONHAND_QUANTITIES_DETAIL.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_ONHAND_QUANTITIES_DETAIL.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.BUYER_ID = PO_AGENTS.AGENT_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_ITEM_REVISIONS_B.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_ITEM_REVISIONS_B.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_MATERIAL_TRANSACTIONS.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_MATERIAL_TRANSACTIONS.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_LOT_NUMBERS.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_LOT_NUMBERS.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_SERIAL_NUMBERS.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_SERIAL_NUMBERS.CURRENT_ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = MTL_RESERVATIONS.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = MTL_RESERVATIONS.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = BOM_STRUCTURES_B.ASSEMBLY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = BOM_STRUCTURES_B.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = BOM_COMPONENTS_B.COMPONENT_ITEM_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = BOM_OPERATIONAL_ROUTINGS.ASSEMBLY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = BOM_OPERATIONAL_ROUTINGS.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = WIP_ENTITIES.PRIMARY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = WIP_ENTITIES.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = WIP_REQUIREMENT_OPERATIONS.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = WIP_REQUIREMENT_OPERATIONS.ORGANIZATION_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = OE_ORDER_LINES_ALL.INVENTORY_ITEM_ID AND MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID = OE_ORDER_LINES_ALL.SHIP_FROM_ORG_ID
- MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID = PO_LINES_ALL.ITEM_ID
Always join on both INVENTORY_ITEM_ID and ORGANIZATION_ID, or filter one organization, or rows multiply. The APPS view MTL_SYSTEM_ITEMS_KFV adds CONCATENATED_SEGMENTS. Other common columns: INVENTORY_ITEM_FLAG, CUSTOMER_ORDER_ENABLED_FLAG, PURCHASING_ENABLED_FLAG, FULL_LEAD_TIME, LIST_PRICE_PER_UNIT.
3Generate a JOIN skeleton (2 to 4 tables)
Dialect: Oracle SQL
-- Query skeleton generated by netray.co/tools/table-explorer
-- Dialect: Oracle SQL. Review keys, filters and indexes before running on production.
-- Connect as APPS. Query the _ALL tables and filter ORG_ID yourself, or run EXEC MO_GLOBAL.SET_POLICY_CONTEXT('S', <org_id>) first to use the secured synonyms (S single, M multiple, A all operating units).
-- Inventory tables need ORGANIZATION_ID in the join as well as the item id; GL and SLA tables need LEDGER_ID, and XLA tables APPLICATION_ID.
-- Read only. Create and change data through the open interfaces and public APIs (for example OE_ORDER_PUB, AP invoice interface, INV_RESERVATION_PUB), never with direct DML.
SELECT
oeor.HEADER_ID,
oeor.ORG_ID,
oeor.ORDER_NUMBER,
oeor.ORDER_TYPE_ID,
oeor.ORDERED_DATE,
oeor2.LINE_ID,
oeor2.LINE_NUMBER,
oeor2.SHIPMENT_NUMBER,
oeor2.INVENTORY_ITEM_ID,
oeor2.ORDERED_QUANTITY,
hzcu.CUST_ACCOUNT_ID,
hzcu.PARTY_ID,
hzcu.ACCOUNT_NUMBER,
hzcu.ACCOUNT_NAME,
hzcu.STATUS,
hzpa.PARTY_NUMBER,
hzpa.PARTY_NAME,
hzpa.PARTY_TYPE,
hzpa.ORIG_SYSTEM_REFERENCE,
hzpa.DUNS_NUMBER_C
FROM APPS.OE_ORDER_HEADERS_ALL oeor
LEFT JOIN APPS.OE_ORDER_LINES_ALL oeor2
ON oeor.HEADER_ID = oeor2.HEADER_ID
-- OE_ORDER_HEADERS_ALL to HZ_CUST_ACCOUNTS: Customer; the name is on HZ_PARTIES.
LEFT JOIN APPS.HZ_CUST_ACCOUNTS hzcu
ON oeor.SOLD_TO_ORG_ID = hzcu.CUST_ACCOUNT_ID
LEFT JOIN APPS.HZ_PARTIES hzpa
ON hzcu.PARTY_ID = hzpa.PARTY_ID
ORDER BY oeor.HEADER_ID
FETCH FIRST 100 ROWS ONLY;How to use it
- 1
Search
Type a table name such as OE_ORDER_LINES_ALL, a column such as FLOW_STATUS_CODE, or a word such as receipt or hold. Matching columns are highlighted under each table.
- 2
Filter and inspect
Narrow by module (order to cash, procure to pay, manufacturing, finance, interfaces), then open a table for its key, columns, coded values and joins. Click a join to jump to that table.
- 3
Build the join
Add two to four tables or pick a starter such as order to invoice or PO to payment. The skeleton uses the documented join columns and Oracle FETCH FIRST syntax, ready for SQL Developer or TOAD.
- 4
Keep it
Star tables as favorites, export to PDF, Excel, Word or CSV, and optionally save the whole setup to your Netray account to reopen it later.
Questions about Oracle E-Business Suite tables
What is the difference between OE_ORDER_HEADERS_ALL and OE_ORDER_HEADERS?
OE_ORDER_HEADERS_ALL is the table (owned by ONT) that holds orders of every operating unit, told apart by ORG_ID. OE_ORDER_HEADERS is an APPS synonym over the same data that Multi-Org Access Control secures with a policy, so from a plain SQL session it returns no rows until you initialize the context, for example EXEC MO_GLOBAL.SET_POLICY_CONTEXT('S', 204) for one operating unit. The same pattern applies to PO_HEADERS_ALL, AP_INVOICES_ALL, RA_CUSTOMER_TRX_ALL and the other _ALL tables. In 12.2 the synonym points to the editioning view OE_ORDER_HEADERS_ALL#.
Why do I get duplicate rows when joining MTL_SYSTEM_ITEMS_B?
The item master holds one row per item per inventory organization: the key is INVENTORY_ITEM_ID plus ORGANIZATION_ID. Join on both columns, using the warehouse of the transaction (for example OE_ORDER_LINES_ALL.SHIP_FROM_ORG_ID or PO_LINE_LOCATIONS_ALL.SHIP_TO_ORGANIZATION_ID), or filter to the item master organization from MTL_PARAMETERS.MASTER_ORGANIZATION_ID.
Where is the customer name stored in Oracle EBS R12?
Customers live in Trading Community Architecture. Orders and invoices store the customer account id (SOLD_TO_ORG_ID, BILL_TO_CUSTOMER_ID), which is HZ_CUST_ACCOUNTS.CUST_ACCOUNT_ID. The name is HZ_PARTIES.PARTY_NAME, joined through HZ_CUST_ACCOUNTS.PARTY_ID. Addresses go HZ_CUST_SITE_USES_ALL to HZ_CUST_ACCT_SITES_ALL to HZ_PARTY_SITES to HZ_LOCATIONS. Since R12 suppliers are TCA parties too (AP_SUPPLIERS.PARTY_ID), with PO_VENDORS kept as a compatibility view.
How do I link a sales order line to its delivery and invoice?
Shipping: WSH_DELIVERY_DETAILS.SOURCE_LINE_ID = OE_ORDER_LINES_ALL.LINE_ID with SOURCE_CODE = 'OE', then WSH_DELIVERY_ASSIGNMENTS to WSH_NEW_DELIVERIES. RELEASED_STATUS shows pick progress (R ready to release, S released to warehouse, Y staged, C shipped, B backordered). Invoice: AutoInvoice copies the order into the line flexfield, so RA_CUSTOMER_TRX_LINES_ALL.INTERFACE_LINE_CONTEXT = 'ORDER ENTRY' and INTERFACE_LINE_ATTRIBUTE6 = TO_CHAR(LINE_ID), with the order number in INTERFACE_LINE_ATTRIBUTE1.
What are the PO header, line, shipment and distribution tables?
PO_HEADERS_ALL is the document, PO_LINES_ALL the item and price, PO_LINE_LOCATIONS_ALL the shipment schedule with quantities received and billed and the match option, and PO_DISTRIBUTIONS_ALL the accounts and destination. Receipts are in RCV_SHIPMENT_HEADERS, RCV_SHIPMENT_LINES and RCV_TRANSACTIONS (PO_LINE_LOCATION_ID and PO_DISTRIBUTION_ID), and matched invoices in AP_INVOICE_LINES_ALL and AP_INVOICE_DISTRIBUTIONS_ALL.
How do I drill from a GL journal line to the subledger transaction?
In R12 subledgers account through Subledger Accounting. Join GL_JE_LINES to GL_IMPORT_REFERENCES on JE_HEADER_ID and JE_LINE_NUM, then to XLA_AE_LINES on GL_SL_LINK_ID and GL_SL_LINK_TABLE, then XLA_AE_HEADERS, XLA_EVENTS and XLA_TRANSACTION_ENTITIES, whose SOURCE_ID_INT_1 is the document id (for example INVOICE_ID when ENTITY_CODE = 'AP_INVOICES'). XLA_DISTRIBUTION_LINKS goes down to the distribution. Filter APPLICATION_ID on every XLA table: they are partitioned by it.
Where do I find the meaning of codes like STATUS_TYPE 3 or PHASE_CODE C?
Most coded columns are lookup codes. FND_LOOKUP_VALUES holds them by LOOKUP_TYPE, for example WIP_JOB_STATUS (1 unreleased, 3 released, 4 complete, 12 closed), PICK_STATUS for delivery details, CP_PHASE_CODE and CP_STATUS_CODE for concurrent requests, and LINE_FLOW_STATUS for order lines. Purchasing, Payables and Receivables read them through PO_LOOKUP_CODES, AP_LOOKUP_CODES and AR_LOOKUPS. This explorer shows the verified values in the field descriptions.
Can I insert or update EBS tables with SQL?
Query with SQL, write through the supported paths: open interface tables with their import programs (Order Import, Payables Open Interface Import, AutoInvoice, Journal Import, Import Items) or the public PL/SQL APIs. They run the validation, defaulting, workflow and accounting that direct DML skips, and Oracle Support may not help with data changed outside them.
Sources
Table names and columns were checked against these public references. Tables whose key or columns we could not confirm say so in their notes. Column sets change between releases, so confirm against the data dictionary of your own version before you build on it.
- eTRM 12.2.2 (etrm.live mirror): INV.MTL_SYSTEM_ITEMS_B columns and indexes
- eTRM 12.2.2: OE_ORDER_HEADERS_ALL table, primary key and foreign keys
- eTRM 12.2.2: ONT.OE_ORDER_HEADERS_ALL columns
- eTRM 12.2.2: APPS.OE_ORDER_HEADERS synonym (base object OE_ORDER_HEADERS_ALL#)
- eTRM 12.2.2: APPS.MO_GLOBAL package specification (SET_POLICY_CONTEXT access modes)
- eTRM 12.2.2: INV tables by product (browse)
- eTRM 12.2.2 search: table pages for every table listed (search by table name)
- eTRM 12.2.2: lookup type WIP_JOB_STATUS
- eTRM 12.2.2: lookup type PICK_STATUS
- eTRM 12.2.2: lookup type WIP_ENTITY
- eTRM 12.2.2 search: lookup types CP_PHASE_CODE, CP_STATUS_CODE, CLOSING_STATUS, AUTHORIZATION STATUS, DOCUMENT STATE, INV/CM, SITE_USE_CODE, RCV TRANSACTION TYPE
- etrm.live: independent Oracle EBS eTRM reference for 12.1.1 and 12.2.2
- Oracle E-Business Suite Release 12.2 documentation library