Bill of Materials - Open Interface
Bill of Materials - Open Interface
Sanjeev Kale
Oracle Corporation
Introduction
Bills of material can be imported into Oracle Bills of Material or Oracle Engineering from any source using Bills and
Routing Interface. Existing Bills and product families can also be updated or deleted. Oracle Bills of Material and
Oracle Engineering validates the data, ensuring that the imported bills of material contain the same bill detail as those
manually entered by Define Bill of Material form.
This paper focuses on understanding of importing Bills and routings from legacy system to Oracle Bills of Material
and Oracle Engineering. This paper is designed to supplement Oracle Manufacturing, Distribution, Sales and Service
Open Interface Manual , User manual and BOM training class notes.
The Bill and Routing Interface program can be run from BOM responsibility Bills àImport Bills.
When the Bills and Routing program is run, a number of runtime options must be specified.
All Organizations
Yes Run the interface for all organization codes in
the bill of material and routing interface
tables.
No Run the Interface program only for the
organization the user is in. The interface
program only processes bill of material and
routing interface records in the current
organization.
Each Interface table’s required columns and derived columns are discussed in detail in the following pages. Look at
the following example for updating a bill component. The required data for updating a bill component is
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• COMPONENT_SEQUENCE_ID
a) You can provide the COMPONENT_SEQUENCE_ID for updating the bill component, or
Functional Overview
Before using the Bill and Routing Interface, a custom program must be written to extract bill of material and
component details from the source system and this program must insert rows in the following tables for each
extracted bill of material:
• BOM_BILL_OF_MTLS_INTERFACE
• BOM_INVENTORY_COMPS_INTERFACE
• BOM_ASSY_COMMENTS_INTERFACE
• BOM_SUB_COMPS_INTERFACE
• MTL_ITEM_REVISIONS_INTERFACE
• BOM_OP_ROUTINGS_INTERFACE
• BOM_OP_SEQUENCES_INTERFACE
• BOM_OP_RESOURCES_INTERFACE
• MTL_RTG_ITEMS_REVS_INTERFACE
• BOM_INTERFACE_DELETE_GROUPS
After the data is loaded in the interface table, the Bill and Routing interface program can be launched from the Import
Bills and Routings form in Oracle Bills of Material or Oracle Engineering. The interface program assigns values,
validates the data and then creates, updates, or deletes bills of material, product family or a routing.
Although bill and routing can be imported simultaneously, all routing operations must exist before a component is
assigned to an operation. Primary and alternate bills of material can be simultaneously imported. Since the Bill and
Routing Interface program validate data the same way the Define Routing or Define Engineering Routing form verifies
data, the alternate bill cannot be defined if the primary bill does not exist. Therefore the primary bill must be imported
before importing the alternate bill.
Transaction Type
Transaction_Type column determines the action to be taken to taken. It has following possible values:
• Create - To create bill of material or a Product family.
• Insert - To create a routings with operations and resources.
• Update - To update bill of material or routing.
• Delete - To Delete bill of material or routing.
• BOM_ROUTINGINTERFACE_PUB
Process Flow
Routing Data
• Assign routing data – all the rows in the BOM_OP_ROUTINGS_INTERFACE table are processed with
PROCESS_FLAG = 1
♦ Assign routing sequence Id
♦ Assign common routing
♦ Populate mandatory columns with default values.
♦ Set PROCESS_FLAG = 2 if assigning is successful.
Bill Data
• Assign Bill data - all the rows in the BOM_BILL_OF_MTLS_INTERFACE table are processed with
PROCESS_FLAG = 1
♦ Assign bill sequence Id
♦ Assign primary keys.
♦ Assign common bill.
♦ Populate mandatory columns with default values.
♦ Set PROCESS_FLAG = 2 if assigning is successful.
• Assign component data - all the rows in the BOM_INVENTORY_COMPS_INTERFACE table are processed with
PROCESS_FLAG = 1
♦ Assign components sequence Id.
♦ Assign primary and foreign keys.
♦ Populate mandatory columns with default values.
♦ Create child reference designator record.
♦ Create child substitute component record.
♦ Set PROCESS_FLAG = 2 if assigning is successful.
• Assign reference designator data - all the rows in the BOM_REF_DESGS_INTERFACE table are processed with
PROCESS_FLAG = 1.
Child
Planning N N N N
Configured Y Y Y Y
ATO Model P P P N
ATO Option Class P P P N
ATO Standard Y Y Y Y
PTO Model N N N N
PTO Option N N N N
PTO Standard N N N N
Product Family N N N Y
• For ATO, PTO and phantom bills where the parent item has ATP components set to No, a component cannot be
added that has either the item attributes Check ATP(ATP_FLAG) set to Yes or ATP
Components(ATP_COMPONENTS_FLAG) set to Yes.
• An optional component cannot be added to a bill that is neither model nor option class.
• A component cannot be added to a standard bill whose planning percent is not equal to 100
• A mandatory component cannot be added to a model or option class bill, whose planning percent is not equal to
100 and has the Forecast Control attribute set to Consume or None.
When a bill is imported, the Bill and Routing Interface program validate all rows in the Interface tables that have a
PROCESS_FLAG set to 1 (PENDING)
If the Bill and Routing Interface program cannot assign a value to a row or validate that row, the program sets the
PROCESS_FLAG for the row to 3 (Assign/Validation failed) and inserts a row in the MTL_INTERFACE_ERRORS
table.
If the Bill and Routing Interface program cannot insert the row into one of the production tables, the program sets the
PROCESS_FLAG for that row to 4 (Import Failed).
After the Bill and Routing Interface program successfully creates a bill of Material and components or a routing in the
production tables, it sets the PROCESS_FLAG to 7 (Import Succeeded).
To identify the error message for a failed row, the Interface program automatically populates the UNIQUE_ID column
in the error interface table with the same value as the TRANSACTION_ID value. Each error also has a value for
MESSAGE_NAME and REQUEST_ID columns in the error interface table. The MESSAGE_NAME column
corresponds to message stored in Oracle Application Message Dictionary and REQUEST_ID column stores the
concurrent request id. If the program detects any internal database error, the program stores the internal error in the
MESSAGE_NAME column and stores the specific database error message in the ERROR_MESSAGE column.
If a bill of material with multiple components / operations is imported and one of the components / operation fails
validation, the Bill and Routing Interface program imports the bill of material/routing and other validates components.
The rows in the interface tables can be reviewed and reported using SQL*Plus. Since all rows in the interface table
have a value for PROCESS_FLAG, records can be easily identified that are successfully imported into Oracle Bills of
Material and Oracle Engineering, or records that failed validation or import. These records can be identified by the
unique value for the TRANSACTION_ID column.
SELECT ERR.TRANSACTION_ID,
ERROR_MESSAGE, MESSAGE_NAME
FROM MTL_INTERFACE_ERRORS ERR,
BOM_BILL_OF_MTLS_INTERFACE BOI
WHERE ERR.TRANSACTION_ID = BOI.TRANSACTION_ID
Any row from the interface tables can be updated using SQL*Plus. If a row is updated to resolve invalid data, the
PROCESS_FLAG must be set to 1 (Pending) for that row. When the Bill and Routing Interface is resubmitted all rows
pending validation are processed.
Derived data - are those columns which the interface program automatically imports the row with the derived or
defaulted value. For example, CREATION_DATE column is a derived data column. Bill and Routing Interface
program automatically defaults to the current date. Some of the Interface table contain user-friendly columns that
allows the user to enter data easily in the interface table. The Bill and Routing Interface program uses the values
entered for these user-friendly columns to derive unique identifiers. To import a bill of material, a value for
ORGANIZATION_CODE or ORGANIZATION_ID can be included. If ORGANIZATION_CODE is entered, the Bill
and Routing Interface derives the value for ORGANIZATION_ID.
Optional Data – The user can assign a value or let the Bill and Routing Interface program default a value.
BOM_ INTERFACE_DELETE_GROUPS
When deleting a Bill, Component, Routing, Operation or Resource a record must be inserted in
BOM_INTERFACE_DELETE_GROUPS with the following values:
• ENTITY_NAME =
BOM_BILL_OF_MTLS_INTERFACE
BOM_INVENTORY_COMPS_INTERFACE
BOM_OP_ROUTINS_INTERFACE
BOM_OP_SEQUENCES_INTERFACE
BOM_OPRESOURCES_INTERFACE
• DELETE_GROUP_NAME New name or name of an existing delete group.
• DESCRIPTION Required if using a new delete group.
• Deleting a Component would require Delete Group information. However for deleting a Product Family Member
Delete Group Information is not needed.
If an alternate bill of material is being created, then the value must be entered in the
ALTERNATE_BOM_DESIGNATOR column.
If the bill being imported references a common bill of material then a value must be entered in the
COMMON_ORGANIZATION_ID and COMMON_ASSEMBLY_ITEM_ID columns or a value must be entered in the
COMMON_BILL_SEQUENCE_ID column.
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• BILL_SEQUENCE_ID
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Delete
• BILL_SEQUENCE_ID
Derived Data
The BOM_BILL_OF_MTLS_INTERFACE table contains user-friendly column. The Bill and Routing Interface
program uses the values entered in these columns to derive unique identifiers.
For Bill:
BOM_INVENTORY_COMPS_INTERFACE
• PROCESS_FLAG = 1
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Create
• COMPONENT_ITEM_ID
• BILL_SEQUENCE_ID
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• COMPONENT_SEQUENCE_ID
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Delete
• COMPONENT_SEQUENCE_ID
Derived Data
The following tables lists the user-friendly columns and the corresponding column that stores the derived values:
For a Component
BOM_REF_DESGS_INTERFACE
Each imported record must have a value for the following columns:
• PROCESS_FLAG = 1
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• COMPONENT_SEQUENCE_ID
• COMPONENT_REFERENCE_DESIGNATOR
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Delete
• COMPONENT_SEQUENCE_ID
• COMPONENT_REFERENCE_DESIGNATOR
Derived Data
The following table lists the user-friendly columns and the corresponding column that stores the derived values:
BOM_SUB_COMPS_INTERFACE
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Create
• COMPONENT_SEQUENCE_ID
• SUBSTITUTE_COMPONENT_ID
• SUBSTITUTE_ITEM_QUANTITY
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• COMPONENT_SEQUENCE_ID
• SUBSTITUTE_COMP_ID
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• COMPONENT_SEQUENCE_ID
• SUBSTITUTE_COMP_ID
Derived Data
The following table lists the user-friendly columns and the corresponding column that stores the derived values:
MTL_ITEM_REVISIONS_INTERFACE
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Create
• INVENTORY_ITEM_ID
• ORGANIZATION_ID
• REVISION
If a value is entered in the REVISION column of the BOM_BILL_OF_MTLS_INTERFACE table, the Bill and Routing
Interface program inserts a row into the MTL_ITEM_REVISIONS_INTERFACE table. To assign multiple item
revisions, data can be directly inserted into the MTL_ITEM_REVISIONS_INTERFACE table. If the validation is
successful, the program then imports the data into the MTL_ITEM_REVISIONS table.
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• INVENTORY_ITEM_ID
• ORGANIZATION_ID
• REVISION
The Bill and Routing Interface program does not allow the deleting of item revisions.
BOM_OP_ROUTINGS_INTERFACE
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
If an alternate routing is being created, then a value must be entered in the ALTERNATE_ROUTING_DESIGNATOR
column.
If the routing being imported references a common routing, then a value must be entered in the
COMMON_ROUTING_SEQUENCE_ID or the COMMON_ASSEMBLY_ITEM_ID column. Routings can only
reference common routings that belong to the same organization. If the routing does not reference a common routing,
the Bill and Routing Interface program defaults to the value of the ROUTING_SEQUENCE_ID for the
COMMON_ROUTING_SEQUENCE_ID.
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• ROUTING_SEQUENCE_ID
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Delete
• ROUTING_SEQUENCE_ID
Derived Data
The BOM_OP_ROUTINGS_INTERFACE table contains user-friendly columns. The Bill and Routing Interface
program uses the values entered in these columns to derive unique identifiers.
The following tables lists the user-friendly columns and the corresponding column that stores the derived value:
If a value for the ASSEMBLY_ITEM_NUMBER or COMMON_ITEM_NUMBER column is entered, the system item
flexfield separator between each segment of the item number should be entered.
BOM_OP_SEQUENCES_INTERFACE
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Insert
• ROUTING_SEQUENCE_ID
• OPERATION_SEQ_NUM
• DEPARTMENT_ID
• EFFECTIVITY_DATE
If an operation to an alternate routing is being created and a value for ROUTING_SEQUENCE_ID is not entered, then
a value must be entered in the ALTERNATE_ROUTING_DESIGNATOR column.
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• OPERATION_SEQUENCE_ID
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
Derived Data
The BOM_OP_SEQUENCES_INTERFACE table contains user-friendly columns. The Bill and Routing Interface
program uses the values entered in these columns to derive unique identifiers.
The following tables lists the user-friendly columns and the corresponding column that stores the derived values:
BOM_OP_RESOURCES_INTERFACE
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
If a resource to an alternate routing is being created and the value for ROUTING_SEQUENCE_ID or
OPERATION_SEQUENCE_ID is not entered, then the value must be entered in the
ALTERNATE_ROUTING_DESIGNATOR column.
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• OPERATION_SEQUENCE_ID
• RESOURCE_SEQ_NUM
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• TRANSACTION_TYPE = Update
• OPERATION_SEQUENCE_ID
• RESOURCE_SEQ_NUM
Derived Data
The BOM_OP_RESOURCES_INTERFACE table contains user-friendly column. The Bill and Routing Interface
program uses the values entered in these columns to derive unique identifiers.
The following tables lists the user-friendly columns and the corresponding column that stores the derived values:
MTL_RTG_ITEM_REVS_INTERFACE
Required Data
To Insert, Update and Delete data into MTL_RTG_ITEM_REVS_INTERFACE, values must be assigned to the
following columns:
• PROCESS_FLAG = 1
1 = Pending
3 = Assign/Validation failed
4 = Import Failed
7 = Import Succeeded
• PROCESS_REVISION
• ORGANIZATION_ID
• INVENTORY_ITEM_ID
Derived Data
The Bill and Routing Interface program defaults to the system date for EFFECTIVITY_DATE column if no value is
entered.
Examples
1. Deleting BOM
SELECT process_flag,
err. transaction_id,
error_message,
message_name
FROM mtl_interface_errors err,
bom_op_resources_interface bom
WHERE err.transaction_id =
bom.transaction_id