Professional Documents
Culture Documents
Bom Open Interfaces: An Oracle White Paper by Daniel Strempke
Bom Open Interfaces: An Oracle White Paper by Daniel Strempke
You cannot dynamically create locations for your subinventories using the interface tables. If you specify a
value for the COMPLETION_LOCATOR_ID column, the location must already exist in Oracle Inventory.
Since you launch and manage the Bill and Routing Interface program through the concurrent manager, you
must insure that the concurrent manage is running before you can import any bills.
After populating the interface tables, you can run the Bill and Routing Interface program. The column,
PROCESS_FLAG, indicates the current state of processing for a row in the interface table. Possible values
for the column include:
1 - Pending
2 - Assigned Succeeded
3 - Assign/Validation Failed
4 - Validation Succeeded
7 - Import Succeeded
You can use the following sql scripts to check for errors which will be located in the
MTL_INTERFACE_ERRORS table to help resolve problems.
select table_name, column_name, organization_id, message_name, error_message
from mtl_interface_errors
where request_id = xxxx; (xxxx is the concurrent request id)
or
select table_name, column_name, organization_id, message_name, error_message
from mtl_interface_errors
where transaction_id = xxxx; (xxxx is the transaction id)
At the end of this paper are numerous sql scripts that you can use to find the information required for the
import process. Also included are sample scripts to enter all of the required information into each of the
interface tables.
BOM_BILL_OF_MTLS_INTERFACE TABLE
This table temporarily stores bills of material header information. Each row in this table represents a unique
Manufacturing or Engineering bill and is identified by the BILL_SEQUENCE_ID.
If you are creating an alternate bill of material you must also enter a value in the
ALTERNATE_BOM_DESIGNATOR column.
If you enter something into REVISION, Oracle Bills of Materials will insert a record into
MTL_ITEM_REVISIONS.
If the bill you import references a common bill of material, you must enter a value in the
COMMON_ORGANIZATION_ID and COMMON_ASSEMBLY_ITEM_ID columns or you can enter a
value in the COMMON_BILL_SEQUENCE_ID column.
The Bill and Routing Interface program derives the COMMON_BILL_SEQUENCE_ID from the
COMMON_ITEM_ID, COMMON_ORGANIZATION_ID, AND ALTERNATE_BOM_DESIGNATOR.
The required fields to update a Bill using the BOM_BILL_OF_MTLS_INTERFACE table are:
PROCESS_FLAG
BILL_SEQUENCE_ID
or
ASSEMBLY_ITEM_ID or ITEM_NUMBER,
ALTERNATE_BOM_DESIGNATOR, and
ORGANIZATION_ID or ORGANIZATION_CODE
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'update'.
The required fields to delete a Bill using the BOM_BILL_OF_MTLS_INTERFACE table are:
PROCESS_FLAG
BILL_SEQUENCE_ID
or
ALTERNATE_BOM_DESIGNATOR,
ASSEMBLY_ITEM_ID or ITEM_MUMBER, and
ORGANIZATION_ID or ORGANIZATION_CODE
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'delete'.
In order to delete a Bill using the interface table, you must also insert a record into the
BOM_INTERFACE_DELETE_GROUPS table with the following values:
ENTITY_NAME (Must be BOM_BILL_OF MTLS_INTERFACE)
DELETE_GROUP_NAME (A new name or name of an existing Delete Group for bills)
DESCRIPTION (Description of the delete group)
BOM_INVENTORY_COMPS_INTERFACE
This table temporarily stores information about bill of material components and is shared by the Bills of
Material and the Engineering Change Order open interfaces. The Engineering Change Order open interface
will be available at a future date.
You cannot dynamically create locations for your subinventories using the interface tables. If you specify a
value for the LOCATION_ID column, the location must already exist in Oracle Inventory.
You must specify a value in the ALTERNATE_BOM_DESIGNATOR column if you assign components to
an alternate bill of material and have not entered a value for the BILL_SEQUENCE_ID column.
You can enter one reference designator and one substitute component for each component you enter.
Oracle Bills of Materials will insert these records into the tables, BOM_REFERENCE_DESIGNATORS and
BOM_SUBSTITUTE_COMPONENTS, respectively.
Oracle Bill of Material, enforces that only one row for a component in an operation is effective at a given
time.
The required fields for creating components using the BOM_INVENTORY_COMPS_INTERFACE are:
PROCESS_FLAG
COMPONENT_ITEM_ID
COMPONENT_SEQUENCE_ID - user should not be populating the component sequence id as it gets
generated during the import
OPERATION_SEQ_NUM
EFFECTIVITY_DATE
BILL_SEQUENCE_ID
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'create' for creating a component.
Note: the OPERATION_SEQ_NUM must be set to 1 if no routing has been defined.
The required fields for updating components using the BOM_INVENTORY_COMPS_INTERFACE are:
COMPONENT_SEQUENCE_ID
or
BILL_SEQUENCE_ID,
COMPONENT_ITEM_ID or COMPONENT_ITEM_NUMBER,
OPERATION_SEQ_NUM, and EFFECTIVITY_DATE
or
ASSEMBLY_ITEM_ID or ASSEMBLY_ITEM_NUMBER, ALTERNATE_BOM_DESIGNATOR,
ORGANIZATION_ID or ORGANIZATION_CODE,
COMPONENT_ITEM_ID or COMPONENT_ITEM_NUMBER,
OPERATION_SEQ_NUM, and EFFECTIVITY_DATE
You also need to enter:
PROCESS_FLAG
TRANSACTION_TYPE
If the component is unimplemented, you cannot update the record.
If you want to update the OPERATION_SEQ_NUM or EFFECTIVITY_DATE, then you must fill in the
NEW_OPERATION_SEQ_NUM or NEW_EFFECTIVITY_DATE column.
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'update' for updating a component.
The required fields for deleting components using the BOM_INVENTORY_COMPS_INTERFACE are:
COMPONENT_SEQUENCE_ID
or
BILL_SEQUENCE_ID,
COMPONENT_ITEM_ID or COMPONENT_ITEM_NUMBER,
OPERATION_SEQ_NUM, and EFFECTIVITY_DATE
or
ASSEMBLY_ITEM_ID or ASSEMBLY_ITEM_NUMBER, ALTERNATE_BOM_DESIGNATOR,
ORGANIZATION_ID or ORGANIZATION_CODE,
COMPONENT_ITEM_ID or COMPONENT_ITEM_NUMBER,
OPERATION_SEQ_NUM, and EFFECTIVITY_DATE
You also need to enter:
PROCESS_FLAG
TRANSACTION_TYPE
If the component is unimplemented, you cannot delete the record.
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'delete'.
In order to delete a component using the interface table, you must also insert a record into the
BOM_INTERFACE_DELETE_GROUPS table with the following values:
ENTITY_NAME (Must be BOM_INVENTORY_COMPS_INTERFACE)
DELETE_GROUP_NAME (A new name or name of an existing Delete Group for bills)
DESCRIPTION (Description of the delete group)
BOM_SUB_COMPS_INTERFACE
This table temporarily stores information about the substitute components associated with a bill of material
component. This table is shared with bills of material and engineering change order open interfaces. The
engineering change order open interface will be available at a future date.
You can only import data into the BOM_SUB_COMPS_INTERFACE table for standard components
assigned to standard, model, and option class bills of material.
The required fields for creating substitute components using the BOM_SUB_COMPS_INTERFACE are:
PROCESS_FLAG
SUBSTITUTE_COMPONENT_ID
SUBSTITUTE_ITEM_QUANTITY
COMPONENT_SEQUENCE_ID
TRANSACTION_TYPE
The required fields for updating substitute components using the BOM_SUB_COMPS_INTERFACE are:
PROCESS_FLAG
COMPONENT_SEQUENCE_ID
SUBSTITUTE_COMP_NUMBER or SUBSTITUTE_COMPONENT_ID
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'update'
The required fields for deleting substitute components using the BOM_SUB_COMPS_INTERFACE are:
PROCESS_FLAG
COMPONENT_SEQUENCE_ID
SUBSTITUTE_COMP_NUMBER or SUBSTITUTE_COMPONENT_ID
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'delete'.
You cannot delete an unimplemented record.
BOM_OP_ROUTING_INTERFACE
This table temporarily stores information about manufacturing and engineering routings.
If you are creating an alternate routing you must also enter a value in the
ALTERNATE_ROUTING_DESIGNATOR column.
If you enter PROCESS_REVISION, Oracle Bill of Material will insert a record into
MTL_RTG_ITEM_REVISIONS.
If the routing you import references a common routing you must enter a value in the
COMMON_ASSEMBLY_ITEM_ID or the COMMON_ROUTING_SEQUENCE_ID columns. Routing 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 the value of the ROUTING_SEQUENCE_ID
for the COMMON_ROUTING_SEQUENCE_ID.
The required fields for creating routings using the BOM_OP_ROUTING_INTERFACE are:
PROCESS_FLAG
ASSEMBLY_ITEM_ID
ORGANIZATION_ID
ROUTING_TYPE
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'insert'.
The ROUTING_TYPE is 1 for manufacturing and 2 for engineering.
You can specify in the ROUTING_TYPE column whether the routing is a manufacturing routing or an
engineering routing. If you do not include a value for this column, it is defaulted to a 1 for manufacturing.
The required fields for updating routings using the BOM_OP_ROUTING_INTERFACE are:
PROCESS_FLAG
ROUTING_SEQUENCE_ID
or
ASSEMBLY_ITEM_ID
ORGANIZATION_ID
ALTERNATE_ROUTING_DESIGNATOR
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'update'
The Bill and Routing Interface program does not derive or default data when updating a routing.
The required fields for deleting routings using the BOM_OP_ROUTING_INTERFACE are:
PROCESS_FLAG
ROUTING_SEQUENCE_ID
or
ASSEMBLY_ITEM_ID
ORGANIZATION_ID
ALTERNATE_ROUTING_DESIGNATOR
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'delete'
The Bill and Routing Interface program does not derive or default data when deleting a routing.
The TRANSACTION_TYPE needs to be 'delete'.
BOM_OP_SEQUENCES_INTERFACE
This table temporarily stores information about routing operations. You may define multiple operations for a
routing. You must specify the department in which every operation will occur.
You cannot have overlapping effective dates for the same operation.
You can enter three resources and three instructions for each operation sequence. Oracle Bills of Material
will insert these records into the tables, BOM_OPERATION_RESOURCES and
BOM_OPERATION_INSTRUCTIONS, respectively.
You must specify a value in the ALTERNATE_ROUTING_DESIGNATOR column if you assign operations
to an alternate routing and have not entered a value for the ROUTING_SEQUENCE_ID column.
To assign standard operations, you must have previously defined them in the Define Standard Operations
form in Oracle Bills of Material. Resources and attachments are also defaulted if you insert a value in the
STANDARD_OPERATION_ID column. Resources must also be predefined in Oracle Bills of Material.
The fields required for creating an operation using the BOM_OP_SEQUENCES_INTERFACE are:
PROCESS_FLAG
ROUTING_SEQUENCE_ID
OPERATION_SEQ_NUM
DEPARTMENT_ID
EFFECTIVITY_DATE
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'insert'.
The fields required for updating an operation using the BOM_OP_SEQUENCES_INTERFACE are:
OPERATION_SEQUENCE_ID
or
ROUTING_SEQUENCE_ID, OPERATION_SEQ_NUM, EFFECTIVITY_DATE, OPERATION_TYPE
or
ASSEMBLY_ITEM_ID or ASSEMBLY_ITEM_NUMBER,
ALTERNATE_ROUTING_DESIGNATOR,
ORGANIZATION_ID or ORGANIZATION_CODE,
OPERATION_SEQ_NUM, EFFECTIVITY_DATE, OPERATION_TYPE
The fields required for deleting an operation using the BOM_OP_SEQUENCES_INTERFACE are:
OPERATION_SEQUENCE_ID
or
ROUTING_SEQUENCE_ID, OPERATION_SEQ_NUM, EFFECTIVITY_DATE, OPERATION_TYPE
or
ASSEMBLY_ITEM_ID or ASSEMBLY_ITEM_NUMBER,
ALTERNATE_ROUTING_DESIGNATOR,
ORGANIZATION_ID or ORGANIZATION_CODE,
OPERATION_SEQ_NUM, EFFECTIVITY_DATE, OPERATION_TYPE
You also need to enter:
PROCESS_FLAG
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'delete'.
Once the operation is identified, the entire record will be placed in a delete group. There is no optional data.
BOM_OP_RESOURCES_INTERFACE
This table temporarily stores information about resources that you require to complete operations on
routings. You may assign multiple resources or assign the same resource multiple times at any operation.
You must specify a value in ALTERNATE_ROUTING_DESIGNATOR column if you assign resources to an
alternate routing and have not entered a value for the ROUTING_SEQUENCE_ID or the
OPERATION_SEQUENCE_ID column.
NOTE: The resource must be set up and assigned to a department in Oracle Bill of Materials first, before
you can import the resources.
The required fields to update a resource using the BOM_OP_RESOURCES_INTERFACE are one of the
following:
OPERATION_SEQUENCE_ID, RESOURCE_SEQ_NUM
or
ROUTING_SEQUENCE_ID, OPERATION_SEQ_NUM, EFFECTIVITY_DATE, RESOURCE_SEQ_NUM
or
ASSEMBLY_ITEM_ID or ASSEMBLY_ITEM_NUMBER,
ALTERNATE_ROUTING_DESIGNATOR,
ORGANIZATION_ID or ORGANIZATION_CODE,
OPERATION_SEQ_NUM, EFFECTIVITY_DATE, RESOURCE_SEQ_NUM
You also need to enter:
PROCESS_FLAG
TRANSACTION_TYPE
The PROCESS_FLAG needs to be 1 for pending.
The TRANSACTION_TYPE needs to be 'update'.
To update the RESOURCE_SEQ_NUM you must enter a value in the NEW_RESOURCE_SEQ_NUM
column. The RESOURCE_SEQ_NUM column is used to determine which record will be updated.
The fields required for deleting a resource using the BOM_OP_RESOURCES_INTERFACE are one of the
following:
OPERATION_SEQUENCE_ID, RESOURCE_SEQ_NUM
or
SQL SCRIPTS
The INVENTORY_ITEM_ID in the MTL_SYSTEM_ITEMS table is system generated. It is the same number
as the ASSEMBLY_ITEM_ID in the BOM_BILL_OF_MTLS_INTERFACE the COMPONENT_ITEM_ID in
the BOM_INVENTORY_COMPS_INTERFACE table and the SUBSTITUTE_COMPONENT_ID in the
BOM_SUB_COMPS_INTERFACE.
The ASSEMBLY_ITEM_ID in the BOM_BILL_OF_MTLS_INTERFACE table is the same number as the
ASSEMBLY_ITEM_ID in the BOM_INVENTORY_COMPS_INTERFACE, the
BOM_OP_RESOURCES_INTERFACE, the BOM_OP_SEQUENCES_INTERFACE, and the
BOM_OP_ROUTINGS_INTERFACE tables.
The BILL_SEQUENCE_ID in the BOM_BILL_OF_MTLS_INTERFACE table is system generated. It is the
same number as the BILL_SEQUENCE_ID in the BOM_INVENTORY_COMPS_INTERFACE table.
The COMPONENT_SEQUENCE_ID in the BOM_INVENTORY_COMPS table is system generated.
The ROUTING_SEQUENCE_ID in the BOM_OP_ROUTINGS_INTERFACE table is the same in the
BOM_OP_RESOURCES_INTERFACE and the BOM_OP_SEQUENCES_INTERFACE tables.
The OPERATION_SEQUENCE_ID in the BOM_OP_SEQUENCES_INTERFACE table is the same in the
BOM_OP_RESOURCES_INTERFACE table.
If you enter the ORGANIZATION_CODE, Oracle Bills of Materials will fill in the corresponding
ORGANIZATION_ID.
If you enter the ITEM_NUMBER, Oracle Bills of Materials will fill in the corresponding
ASSEMBLY_ITEM_ID.
If you enter the LOCATION_NAME , Oracle Bills of Materials will fill in the corresponding
SUPPLY_LOCATOR_ID
If you enter the ASSEMBLY_ITEM_NUMBER, Oracle Bills of Materials will fill in the corresponding
ASSEMBLY_ITEM_ID.
If you enter the SUBSTITUTE_COMP_NUMBER , Oracle Bills of Materials will fill in the corresponding
SUBSTITUTE_COMP_ID.
If you enter the COMPONENT_ITEM_NUMBER, Oracle Bills of Materials will fill in the corresponding
COMPONENT_ITEM_ID.
You can enter the BILL_SEQUENCE_ID, COMPONENT_ITEM_ID, OPERATION_SEQ_NUM, and
EFFECTIVITY_DATE instead of COMPONENT_SEQUENCE_ID. The open interfaces will fill in the
corresponding COMPONENT_SEQUENCE_ID.
You can enter ASSEMBLY_ITEM_ID, ORGANIZATION_ID, and ALTERNATE_BOM_DESIGNATOR
instead of BILL_SEQUENCE_ID. The open interfaces will fill in the corresponding BILL_SEQUENCE_ID.
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
TO CHECK ITEMS IN BOM COMPONENTS INTERFACE TABLE
select operation_seq_num, component_item_id, component_quantity,
bill_sequence_id, effectivity_date, process_flag
from bom_inventory_comps_interface;
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
TO FIND THE COMPONENT_ITEM_SEQUENCE_ID
select component_item_id, bill_sequence_id, component_sequence_id
from bom_inventory_components
where bill_sequence_id = &bill_sequence_id;
8888888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
TO FIND ERROR MESSAGES IN THE MTL_INTERFACE_ERRORS TABLE
select table_name, column_name, organization_id, message_name, error_message
from mtl_interface_errors
where request_id = &request_id;
or
select table_name, column_name, organization_id, message_name, error_message
from mtl_interface_errors
where transaction_id = &transaction_id;
88888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
TO FIND THE OPERATION_SEQ_NUM OF A COMPONET
select i.operation_seq_num,
b.bill_sequence_id, b.assembly_item_id
from bom_inventory_components i, bom_bills of materials b
where b.assembly_item_id = &assembly_item_id
and i.bill_sequence_id = b.bill_sequence_id;
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
TO INSERT A RECORD INTO THE BOM_BILL_OF_MTLS_INTERFACE
insert into bom_ bill_of_mtls_interface
(assembly_item_id, organization_id, assembly_type, process_flag, transaction_type)
values (aaaa, bbbb, cccc, dddd, eeee);
commit;
* aaaa = the assembly id (inventory_item_id) of the item you want to set up a BOM for.
* bbbb = the organization id you want the BOM in.
* cccc = the assembly type of the BOM; 1 = manufacturing, 2 = engineering.
* dddd = the process flag must = 1 to be picked up by the import.
* eeee = 'create' to enter a new bom
888888888888888888888888888888888888888888888888888888888888888888888888
* aaaa = the component id (inventory_item_id) of the item you want to add to a BOM.
* bbbb = the process flag must = 1 to be picked up by the import.
* cccc = the operation sequence number you want the component added to.
* dddd = the bill sequence id of the BOM you want to add the component to.
* eeee = 'create' to add a new component.
* ffff = date component is effective. You can enter sysdate.
Note: operation_seq_num must be set to 1 if no routing has been defined.
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
888888888888888888888888888888888888888888888888888888888888888888888888
attach the
NOTE: The resource must be set up and assigned to a department in Oracle Bill of Materials first, before
you can import the resources.
888888888888888888888888888888888888888888888888888888888888888888888888
Insert in bom_bill_of_mtls_interface
(assembly_item_id, organization_id, assembly_type,
process_flag, transaction_type)
values (&assembly_item_id,
&organization_id,
&assembly_type,
1,'create');
commit;
insert into bom_inventory_comps_interface
(assembly_item_id, component_item_id, process_flag,
operation_seq_nem, transaction_type, effectivity_date,
organization_id)
values (&assembly_item_id,
&component_item_id,
1,1,'create',
&effectivity_date,
&organization_id);
commit;