Wednesday, 16 January 2013

Interfaces in Oracle EBS

Interfaces in Oracle EBS

Oracle General Ledger
• Budget Upload • Importing Journals • Loading Daily Rates
Oracle Payables
• Credit Card Transaction Interface Table • Invoice Import Interface ( Payables Open Interface)
• Purchase Order Matching
Oracle Receivables

• Auto Invoice • Auto Lockbox • Customer Interface • Sales Tax Rate Interface
• Tax Vendor Extension
Oracle Assets

• ACE Interface • Budget Open Interface • Mass Additions Interface• Production Interface
• Physical Inventory
Oracle Cash Management

• Bank Statement Open Interface • Forecasting Open Interface • Reconciliation Open Interface
Oracle Purchasing

• Requisitions Open Interface • Purchasing Documents Open Interface
• Receiving Open Interface • Suppliers Open Interface
Oracle Inventory

• Customer Item Interface • Open Item Interface • Open Replenishment Interface
• Open Transaction Interface• Cycle Count Open Interface• Reservations Open Interface • Move Orders Open Interface • Kamban Application Program Interface
Oracle Projects

• Activity Management Gateway • Client Extensions • Transaction Import
BOM

• BOM Upload • BOM Extraction • Import Bills & Routings Interface

Work In Progress

• Open Move transaction Interface • Open Resource transaction Interface • Work Order Interface

Order Management

• Order Import Interface • Order Status Interface
Order Pricing

• Qualifiers Interface • Modifiers Interface
Order Shipping

• Pick Release • Ship Confirmation

Purchasing & Inventory Interfaces


The Receiving Transaction Processor processes pending or unprocessed receiving transactions. We can receive the Purchase Order either using the Expected Receipt form or by putting the record into the Receiving Open Interface (ROI). And then if we will submit the receiving transactions processor so the PO will be received.

records that needs to be inserted into rcv_transactions_interface with processing_status_code and transaction_status_code as 'PENDING' and transaction_type of 'RECEIVE'. and also inserted into rcv_shipment_headers which creates the shipment header.

Interface Tables: -
  • rcv_headers_interface
  • rcv_transactions_interface
Error Table: -
  • po_interface_errors
Base Tables:
  • rcv_shipment_headers
  • rcv_shipment_lines
  • rcv_transactions
  • mtl_lot_numbers
  • mtl_material_transactions
  • rcv_lot_transactions
R12 – draft package to Receive PO by inserting records into ROI
DECLARE
x_user_id NUMBER;
x_resp_id NUMBER;
x_appl_id NUMBER;
x_po_header_id NUMBER;
x_vendor_id NUMBER;
x_segment1 VARCHAR2 (20);
x_org_id NUMBER;
x_line_num NUMBER;
l_chr_lot_number VARCHAR2 (50);
l_chr_return_status VARCHAR2 (2000);
l_num_msg_count NUMBER;
l_chr_msg_data VARCHAR2 (50);
v_count NUMBER;

BEGIN

DBMS_OUTPUT.put_line ('RCV Sample Insert Script Starts');
DBMS_OUTPUT.put_line ('**************************************');
SELECT po_header_id, vendor_id, segment1, org_id
INTO x_po_header_id, x_vendor_id, x_segment1, x_org_id
FROM po_headers_all
WHERE segment1 =
AND org_id =
AND approved_flag = 'Y'
AND nvl(cancel_flag, 'N') = 'N';
SELECT DISTINCT
u.user_id,
to_char(a.responsibility_id) responsibility_id,
b.application_id
INTO
x_user_id, x_resp_id, x_appl_id
from
apps.fnd_user_resp_groups_direct a,
apps.fnd_responsibility_vl b,
apps.fnd_user u,
apps.fnd_application fa
where
a.user_id = u.user_id
and a.responsibility_id = b.responsibility_id
and a.responsibility_application_id = b.application_id
and sysdate between a.start_date and nvl(a.end_date,sysdate+1)
and fa.application_id (+) = b.application_id
and upper(u.user_name) = 'A42485' -- Enter the User_name
and b.responsibility_name = 'Inventory'; -- Enter The Responsibility Name

DBMS_OUTPUT.put_line ('Inserting the Record into Rcv_headers_interface');
DBMS_OUTPUT.put_line ('*********************************************');

INSERT INTO rcv_headers_interface
(header_interface_id, GROUP_ID, processing_status_code,
receipt_source_code, transaction_type, last_update_date,
last_updated_by, last_update_login, creation_date, created_by,
vendor_id,expected_receipt_date, validation_flag)
SELECT rcv_headers_interface_s.NEXTVAL, rcv_interface_groups_s.NEXTVAL,
'PENDING', 'VENDOR', 'NEW', SYSDATE, x_user_id, 0,SYSDATE, x_user_id,
x_vendor_id, SYSDATE, 'Y'
FROM DUAL;
DECLARE

CURSOR po_line
IS
SELECT
pl.org_Id, pl.po_header_id, pl.item_id, pl.po_line_id, pl.line_num, pll.quantity,
pl.unit_meas_lookup_code, mp.organization_code,
pll.line_location_id, pll.closed_code, pll.quantity_received,
pll.cancel_flag, pll.shipment_num,
pda.destination_type_code,
pda.deliver_to_person_id,
pda.deliver_to_location_id,
pda.destination_subinventory,
pda.destination_organization_id
FROM po_lines_all pl, po_line_locations_all pll,mtl_parameters mp, apps.po_distributions_all pda
WHERE pl.po_header_id = x_po_header_id
AND pl.po_line_id = pll.po_line_id
AND pll.line_location_id = pda.line_location_id
AND pll.ship_to_organization_id = mp.organization_id;
BEGIN

FOR rec_det IN po_line LOOP

IF rec_det.closed_code IN ('APPROVED', 'OPEN')
AND rec_det.quantity_received <>
THEN

DBMS_OUTPUT.put_line ('Inserting the Record into Rcv_Transactions_Interface');
DBMS_OUTPUT.put_line ('*********************************************');
INSERT INTO rcv_transactions_interface
(interface_transaction_id, GROUP_ID,
last_update_date, last_updated_by, creation_date,
created_by, last_update_login, transaction_type,
transaction_date, processing_status_code,
processing_mode_code, transaction_status_code,
po_header_id, po_line_id, item_id, quantity, unit_of_measure,
po_line_location_id, auto_transact_code,
receipt_source_code, to_organization_code,
source_document_code, document_num,
destination_type_code,deliver_to_person_id,
deliver_to_location_id,subinventory,
header_interface_id, validation_flag)
SELECT rcv_transactions_interface_s.NEXTVAL,
rcv_interface_groups_s.CURRVAL, SYSDATE, x_user_id,
SYSDATE, x_user_id, 0, 'RECEIVE', SYSDATE, 'PENDING',
'BATCH', 'PENDING', rec_det.po_header_id,rec_det.po_line_id,
rec_det.item_id, rec_det.quantity,
rec_det.unit_meas_lookup_code,
rec_det.line_location_id, 'DELIVER', 'VENDOR',
rec_det.organization_code, 'PO', x_segment1,
rec_det.destination_type_code, rec_det.deliver_to_person_id,
rec_det.deliver_to_location_id, rec_det.destination_subinventory,
rcv_headers_interface_s.CURRVAL, 'Y'
FROM DUAL;
DBMS_OUTPUT.put_line ('PO line:' rec_det.line_num ' Shipment: ' rec_det.shipment_num ' has been inserted into ROI.');
select count(*)
into v_count
from mtl_system_items
where inventory_item_id = rec_det.item_id
and lot_control_code = 2 -- 2 - full_control, 1 - no control
and organization_id = rec_det.destination_organization_id;
IF v_count > 0 then

DBMS_OUTPUT.put_line ('The Ordered Item is Lot Controlled');
DBMS_OUTPUT.put_line ('Generate the Lot Number for the Lot Controlled Item');
BEGIN
-- initialization required for R12
mo_global.set_policy_context ('S', rec_det.org_id);
mo_global.init ('INV');
-- Initialization for Organization_id
inv_globals.set_org_id (rec_det.destination_organization_id);
-- initialize environment
fnd_global.apps_initialize (user_id => x_user_id,
resp_id => x_resp_id,
resp_appl_id => x_appl_id);
DBMS_OUTPUT.put_line ('Calling inv_lot_api_pub.auto_gen_lot API to Create Lot Numbers');
DBMS_OUTPUT.put_line ('*********************************************');
l_chr_lot_number :=
inv_lot_api_pub.auto_gen_lot
(p_org_id => rec_det.destination_organization_id,
p_inventory_item_id => rec_det.item_id,
p_parent_lot_number => NULL,
p_subinventory_code => NULL,
p_locator_id => NULL,
p_api_version => 1.0,
p_init_msg_list => 'F',
p_commit => 'T',
p_validation_level => 100,
x_return_status => l_chr_return_status,
x_msg_count => l_num_msg_count,
x_msg_data => l_chr_msg_data);

IF l_chr_return_status = 'S' THEN
COMMIT;
ELSE
ROLLBACK;
END IF;
DBMS_OUTPUT.put_line ('Lot Number Created for the item is => ' l_chr_lot_number);
END;
DBMS_OUTPUT.put_line ('Inserting the Record into mtl_transaction_lots_interface ');
DBMS_OUTPUT.put_line ('*********************************************');
INSERT INTO mtl_transaction_lots_interface
( transaction_interface_id,
last_update_date,
last_updated_by,
creation_date,
created_by,
last_update_login,
lot_number,
transaction_quantity,
primary_quantity,
serial_transaction_temp_id,
product_code,
product_transaction_id)
(select
mtl_material_transactions_s.nextval,--transaction_interface_id
sysdate, --last_update_date
x_user_id, --last_updated_by
sysdate, --creation_date
x_user_id, --created_by
-1, --last_update_login
l_chr_lot_number, --lot_number
rec_det.quantity, --transaction_quantity
rec_det.quantity, --primary_quantity
NULL, --serial_transaction_temp_id
'RCV', --product_code
rcv_transactions_interface_s.currval --product_transaction_id
from dual);
ELSE
DBMS_OUTPUT.put_line ('The Ordered Item is Not Lot Controlled');
DBMS_OUTPUT.put_line ('********************************************');
END IF;
ELSE
DBMS_OUTPUT.put_line ( 'PO line ' rec_det.line_num'-' rec_det.shipment_num ' is either closed, cancelled, received.');
DBMS_OUTPUT.put_line ('*********************************************');
END IF;
END LOOP;
DBMS_OUTPUT.put_line ('RCV Sample Insert Script Ends');
DBMS_OUTPUT.put_line ('*****************************************');
END;
COMMIT;
END;
-- Cross Check the Records in the Interface Table

select * from apps.rcv_headers_interface
where created_by = <1111>
and group_id = <1111>

select *
from apps.rcv_transactions_interface
where created_by = <1111>
and group_id = <1111>
select * from apps.mtl_transaction_lots_interface
where created_by = <1111>
and lot_number = <1111>
and product_transaction_id in
(select interface_transaction_id from apps.rcv_transactions_interface
where created_by = <1111> and group_id = <1111>)

-- Check for the Error
select * from po_interface_errors
where batch_id = <1111>
SELECT pi.interface_type,
pi.column_name,
pi.error_message,
prti.po_header_id,
prti.po_line_id
FROM po.po_interface_errors pi,
po.rcv_transactions_interface prti
WHERE pi.interface_line_id = prti.interface_transaction_id
AND prti.processing_status_code = 'ERROR';
-- Reprocessing the records from the interface if the same errored out there.
UPDATE rcv_headers_interface
SET processing_request_id = NULL,
validation_flag = 'Y',
processing_status_code = 'PENDING'
WHERE GROUP_ID = <1111>

UPDATE rcv_transactions_interface
SET request_id = NULL,
processing_request_id = NULL,
validation_flag = 'Y',
processing_status_code = 'PENDING',
transaction_status_code = 'PENDING',
processing_mode_code = 'BATCH'
WHERE interface_transaction_id = <1111>
AND batch_id = <1111>


-- Verification of the base tables Once the Receiving Transactions Processor is Completed

select * from apps.rcv_shipment_headers
where created_by = 2083

select * from apps.rcv_shipment_lines
where created_by = 2083
and po_header_id = 619
select * from apps.rcv_transactions
where po_header_id = 619
and created_by = 2083

select * from apps.mtl_lot_numbers
where lot_number in <1111>
select * from apps.rcv_lot_transactions
where lot_num in <1111>
select * from apps.mtl_material_transactions
where created_by = <1111>
and rcv_transaction_id in (select transaction_id from apps.rcv_transactions
where po_header_id = <1111>
and created_by = <1111>)

SELECT (SELECT segment1
FROM po_headers_all
WHERE po_header_id = pl.po_header_id
AND org_id = pl.org_id) po_number, pl.po_header_id,
pl.item_id, pl.po_line_id, pl.line_num, pll.shipment_num,
pll.quantity, pl.unit_meas_lookup_code, mp.organization_code, pll.line_location_id,
pll.closed_code, pll.quantity_received, pll.cancel_flag,
pll.shipment_num, pda.destination_type_code, pda.deliver_to_person_id,
pda.deliver_to_location_id, pda.destination_subinventory
FROM
apps.po_lines_all pl,
apps.po_line_locations_all pll,
apps.mtl_parameters mp,
apps.po_distributions_all pda
WHERE 1 = 1
AND pl.po_header_id = <1111>
AND pl.org_id = <1111>
AND pl.po_line_id = pll.po_line_id
AND pll.line_location_id = pda.line_location_id
AND pll.ship_to_organization_id = mp.organization_id
order by 1, 5, 6
1. Pending Receiving
If there is un processed purchase order receiving, can be processed with the below method:
Insert into rcv_transactions_interface, rcv_headers_interface
Submit: Receiving Transaction Processes
2. Pending Material
It can be processed thru mtl_transactions_interface, mtl_transactions_lots_interface and then submit Process Transaction Interface (INCTCM)
3. Pending shop floor move
It can be completed thru WIP_MOVE_TXN_INTERFACE to wip_move_transactions
Process Transaction Interface (INCTCM) will submit the Inventory transaction worker (INCTCW) internally to process the MTL Interface Transactions & MTL LOTS interface.
The inventory interface manager (transaction manager - INCTCM) runs and validates the data and inserts the records into MTL_MATERIAL_TRANSACTIONS_TEMP table. When the transaction worker processes the temp data, the records are inserted into the transactions history table (MMT).

When the Cost Manager runs, it costs the transactions, and creates SLA events. Pl note in 11i, the cost manager used to create accounting as well.

When the Create Accounting (Cost Management) process runs, it creates the accounting. When the transfer to GL is run from SLA, it transfers all the accounting data to GL

Interface Tables: -
  • mtl_transactions_interface
  • mtl_transaction_lots_interface
MTL_TRANSACTIONS_INTERFACE
1. PROCESS_FLAG : Flag indicating whether transaction is ready to be processed by the Transaction Manager or Worker

'1' for ready
'2' for not ready
'3' transaction fail

if the transaction fails for some reason, the Transaction Worker sets
the value of PROCESS_FLAG to '3'
2. TRANSACTION_MODE :
Code that indicates whether the transaction is to be processed in immediate concurrent
processing mode (2) or background processing mode (3).

1: online
2. immediate processing mode
3: background processing mode
3. LOCK_FLAG :
Flag indicating whether the transaction is locked by the Transaction Manager or Workers

'1' : for locked,
'2' or NULL : for not locked);
this prevents two different Workers from processing the same transaction;
You should always specify '2'
Inventory Interface tables
• MTL_TRANSACTIONS_INTERFACE (transaction Information) • MTL_TRANSACTION_LOTS_INTERFACE (transaction lot numbers) • MTL_SERIAL_NUMBERS_INTERFACE(transaction serial numbers) • CST_COMP_SNAP_INTERFACE (Completion Cost Calculation Interface) à Process Transaction Interface (INCTCM) à It will call Transaction Worker (INCTCW) à MTL_MATERIAL_TRANSACTIONS • MTL_TRANSACTION_LOT_NUMBERS • MTL_UNIT_TRANSACTIONS • MTL_LOT_NUMBERS • MTL_SERIAL_NUMBERS • MTL_ONHAND_QUANTITIES • MTL_DEMAND • MTL_MATERIAL_TXN_ALLOCATIONS • RCV_TRANSACTIONS_INTERFACE • CST_ITEM_COSTS • CST_ITEM_COST_DETAILS
1. Transaction_interface_id will be the link for all the above three interface tables
2. Process_flag values 1=’YES’ , 2=’NO’, 3=’ERROR’

Open Items Interface

you can import items from any source into oracle inventory, when we run the item import it will create the items in master organization and we can assign it to multiple orgs. There are two interface tables for this.

1. MTL_SYSTEMS_ITEM_INTERFACE 2. MTL_INTERFACE_ERRORS 3.MTL_ITEM_REVISIONS_INTERFACE

4. MTL_ITEM_CATEGORIES_INTERFACE

PROCESS_FLAG can be 1 (pending), 2(Assign complete), 3(validation failed) 4 (validation success, import failed) 5 (import in process), 7 (import success)

è Item Import can be Insert/Update

1. MTL_SYSTEM_ITEMS_B
2. MTL_ITEM_CATEGORIES

Interface for tem on hand quantity & Lot & Serial Numbers

Interface Tables are :-
----------------------------------
mtl_transactions_interface
mtl_transaction_lots_interface
mtl_serial_numbers_interface


Submit the standard interface program:
-----------------------------------------------------
Process Transaction Interface
---------------------------------------
update mtl_transactions_interface
set process_flag = 1,
lock_flag = 2,
transaction_mode = 3,
validation_required = null,
error_code = null,
error_explanation = null
where process_flag in (1,3);

Tables affected during O2C flow

tables affected during the O2C flow

Tables affected from Order to Cash in Oracle EBS
Order Management Tables.
Entered
oe_order_headers_all 1 record created in header tableoe_order_lines_all Lines for particular records
oe_price_adjustments When discount gets applied
oe_order_price_attribs If line has price attributes then populated
oe_order_holds_all If any hold applied for order like credit check etc.
Booked
oe_order_headers_all Booked_flag=Y Order booked.wsh_delivery_details Released_status Ready to release
Pick Released
wsh_delivery_details Released status=Y (Line has been released to Inventory for processing)
wsh_picking_batches After batch is created for pick release.
mtl_reservations This is only soft reservations. No physical movement of stock
Full Transaction
mtl_material_transactions No records in mtl_material_transactionsmtl_txn_request_headers
mtl_txn_request_lines
wsh_delivery_details Released to warehouse.wsh_new_deliveries if Auto-Create is Yes then data populated.wsh_delivery_assignments deliveries get assigned
Pick Confirmed
wsh_delivery_details Released_status=Y Hard Reservations. Picked the stock. Physical movement of stock
Ship Confirmed
wsh_delivery_details Released_status=C Y To C:Shipped ;Delivery Note get printed Delivery assigned to trip stopquantity will be decreased from stagedmtl_material_transactions On the ship confirm form, check Ship all boxwsh_new_deliveries If Defer Interface is checked I.e its deferred then OM & inventory not updated. If Defer Interface is not checked.: Shipped
oe_order_lines_all Shipped_quantity get populated.wsh_delivery_legs 1 leg is called as 1 trip.1 Pickup & drop up stop for each trip.
oe_order_headers_all If all the lines get shipped then only flag N
Autoinvoice
wsh_delivery_details Released_status=I Need to run workflow background process.
ra_interface_lines_all Data will be populated after wkfw process.
ra_customer_trx_all After running Autoinvoice Master Program forra_customer_trx_lines_all specific batch transaction tables get populated
Price Detailsqp_list_headers_b To Get Item Price Details.
qp_list_lines
Items On Hand Qty
mtl_onhand_quantities TO check On Hand Qty Items.
Payment Terms
ra_terms Payment terms
AutoMatic Numbering System
ar_system_parametes_all you can chk Automactic Numbering is enabled/disabled.
Customer Information
hz_parties Get Customer information include name,contacts,Address and Phonehz_party_sites
hz_locations
hz_cust_accounts
hz_cust_account_sites_all
hz_cust_site_uses_all
ra_customers
Document Sequence
fnd_document_sequences Document Sequence Numbersfnd_doc_sequence_categories
fnd_doc_sequence_assignments
Default rules for Price List
oe_def_attr_def_rules Price List Default Rulesoe_def_attr_condns
ak_object_attributes
End User Details
csi_t_party_details To capture End user Details
Sales Credit Sales Credit Information(How much credit can get)oe_sales_credits

Attaching Documents
fnd_attached_documents Attched Documents and Text information
fnd_documents_tl
fnd_documents_short_text
Blanket Sales Order
oe_blanket_headers_all Blanket Sales Order Information.
oe_blanket_lines_all

Processing Constraints
oe_pc_assignments Sales order Shipment schedule Processing Constratins
oe_pc_exclusions
Sales Order Holds
oe_hold_definitions Order Hold and Managing Details.
oe_hold_authorizations
oe_hold_sources_all
oe_order_holds_all
Hold Relaese
oe_hold_releases_all Hold released Sales Order.
Credit Chk Details
oe_credit_check_rules To get the Credit Check Againt Customer.
Cancel Ordersoe_order_lines_all Cancel Order Details.

BOGE PRASANTH REDDY ORACLE APPLICATIONS BLOG: OM Flow and table level Information

BOGE PRASANTH REDDY ORACLE APPLICATIONS BLOG: OM Flow and table level Information: OM Flow and table level Information OM Flow and table level Information Steps in Order Cycle: 1) Order Entry 2) Booking 3) Pick relea...

BOGE PRASANTH REDDY ORACLE APPLICATIONS BLOG: BIND Vs LEXICAL

BOGE PRASANTH REDDY ORACLE APPLICATIONS BLOG: BIND Vs LEXICAL: BIND Vs LEXICAL BIND Vs LEXICAL BIND VARIABLE : -- are used to replace a single value in sql, pl/sql -- bind variable may be used to re...

BOM Interface

understanding BOM Interface

A Guide to Using the Bill of Material (BOM) Open Interface
This paper serves as a reference when using the BOM Open Interface.
It defines the tables used in importing bills and explains the mandatory,
derived and optional columns. Refer to the Oracle Manufacturing, Distribution,
Sales and Service Open Interfaces Manual (A-57332) for a complete set of
instructions.
1. TABLES.
You need to populate following interface tables with data from your legacy
system:
BOM_BILL_OF_MTLS_INTERFACE
BOM_INVENTORY_COMPS_INTERFACE
BOM_ASSY_COMMENTS_INTERFACE
BOM_REF_DESGS_INTERFACE
BOM_SUB_COMPS_INTERFACE|
MTL_ITEM_REVISIONS_INTERFACE
Once you load the data into the interface tables, you can launch the
Bill and Routing Interface program from the Import Bills and Routings
form in Oracle Bills of Material or Oracle Engineering. This program
assigns values, validates the data you include, and then imports the
new bills of material (BOMs).
You can optionally create an item revision when you import a BOM, by
inserting a value for a revision at the same time you insert your BOM data.
If you enter a value 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. In order to assign multiple item revisions,
it is better to insert data directly into the MTL_ITEM_REVISIONS_INTERFACE
table.
In order to import a BOM with components, you need to populate:
BOM_BILL_OF_MTLS_INTERFACE
BOM_INVENTORY_COMPS_INTERFACE
With these two tables, you can create BOM header information and assign
component details.
If you want to assign standard comments, reference designators, and
substitute components to your BOM, you need to populate:
BOM_ASSY_COMMENTS_INTERFACE
BOM_REF_DESGS_INTERFACE
BOM_SUB_COMPS_INTERFACE
PROCESS_FLAG
The column PROCESS_FLAG indicates the current state of processing for a row
in the interface table. All inserted rows must have the PROCESS_FLAG set to 1.
After populating the data into the interface tables, run the Bill and
Routing Interface program. The program assigns and validates all rows
with a status of 1 (Pending), and then imports them into the production
tables. If the assign or validate procedure fails for a row, the program
sets the PROCESS_FLAG to 3 (Assign/Validation Failed) for that row.
The successful rows continue through the process of importing into the
production tables. If a row fails on import, the program assigns a value of
4 (Import Failed) to the PROCESS_FLAG. Successfully imported rows have a
PROCESS_FLAG value of 7 (Import Succeeded).
2. TRANSACTION AND REQUEST ID'S.
The Bill and Routing Interface program automatically updates the
TRANSACTION_ID and REQUEST_ID columns in each of the interface tables.
The column TRANSACION_ID stores a unique id for each row in the interface
table and the REQUEST_ID column stores the concurrent request id number.
3. IMPORT CONSIDERATIONS.
Even though you can import bills and routings simultaneously, all
routing operations must exist before you can assign a component to an
operation. If a routing does not exist, you cannot assign an operation
sequence to a component on a BOM.
You can simultaneously import primary and alternate BOMs. Since the Bill and
Routing Interface program validates data the same way the Define Routing or
Define Engineering Routing form verifies data, you cannot define an alternate
bill if the primary bill does not exist. Therefore, you should import primary
BOMs before importing alternate BOMs. If the program tries to validate an
alternate bill before validating the primary bill, the record fails.
4. BOM_BILL_OF_MTLS_INTERFACE TABLE.
a. REQUIRED COLUMNS FOR BOM_BILL_OF_MTLS_INTERFACE.
You must always enter values for the following required columns
when you insert rows into the BOM_BILL_OF_MTLS_INTERFACE table:
ASSEMBLY_ITEM_ID
ORGANIZATION_ID
ASSEMBLY_TYPE
PROCESS_FLAG
If you create an alternate BOM, you must also enter a value in the
ALTERNATE_BOM_DESIGNATOR column.
If the BOM you import references a common BOM, 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. If the
bill does not reference a common bill, the Bill and Routing interface
program defaults the value of the BILL_SEQUENCE_ID for the
COMMON_BILL_SEQUENCE_ID.
You can specify in the ASSEMBLY_TYPE column whether the BOM is a
manufacturing BOM or an engineering BOM. If you do not include a value
for this column, Oracle Bills of Material defaults a value of 1
(manufacturing), and creates a manufacturing BOM. To create an
engineering bill, you must enter a value of 2 (engineering) for the
ASSEMBLY_TYPE column.
For each new row you insert into the BOM_BILL_OF_MTLS_INTERFACE table,
you should set the PROCESS_FLAG to 1 (Pending).
b. DERIVED/DEFAULTED VALUES FOR BOM_BILL_OF_MTLS_INTERFACE.
The Bill and Routing Interface program derives or defaults most of the
data required to create a manufacturing or an engineering BOM. The
Bill and Routing Interface program derives or defaults the columns
using the same logic as the Define Bill of Material form or the Define
Engineering Bill of Material form. When you populate a column in the
interface table, the program imports the row with the data you included
and does not default a value.
BOM_BILL_OF_MTLS_INTERFACE Derived or Defaulted Value
ASSEMBLY_ITEM_ID From ITEM_NUMBER
ORGANIZATION_ID From ORGANIZATION_CODE
LAST_UPDATE_DATE System Date
LAST_UPDATE_BY Userid
CREATION_DATE System Date
CREATED_BY Userid
COMMON_ASSEMBLY_ITEM_ID From COMMON_ITEM_NUMBER
ASSEMBLY_TYPE 1
COMMON_BILL_SEQUENCE_ID Sequence BOM_INVENTORY_COMPONENTS_S
COMMON_ORGANIZATION_ID From COMMON_ORG_CODE
REQUEST_ID From FND_CONCURRENT_REQUESTS
5. BOM_INVENTORY_COMPS_INTERFACE TABLE.
a. REQUIRED COLUMNS FOR BOM_INVENTORY_COMPS_INTERFACE TABLE.
Each imported record must have a value for the following columns:
PROCESS_FLAG
COMPONENT_ITEM_ID
COMPONENT_SEQUENCE_ID
OPERATION_SEQ_NUM
EFFECTIVITY_DATE
BILL_SEQUENCE_ID
You must also specify a value in the ALTERNATE_BOM_DESIGNATOR column
if you assign components to an alternate BOM and have not entered a
value for the BILL_SEQUENCE_ID column.
When you insert rows into BOM_INVENTORY_COMPS_INTERFACE, you must set
the PROCESS_FLAG to 1 (Pending) for the Bill and Routing Interface
program to process the record.
b. DERIVED/DEFAULTED COLUMN VALUES FOR BOM_INVENTORY_COMPS_INTERFACE
The Bill and Routing Interface program derives or defaults most of the
data required to assign components to a BOM. You can optionally include
a value for derived or defaulted columns, as well as data for any of the
other columns in the interface. The interface program uses the same
logic to derive or default column values in the
BOM_INVENTORY_COMPS_INTERFACE table as it does in the
BOM_BILL_OF_MTLS_INTERFACE table. When you populate a column in the
interface table, the program imports the row with the data you included
and does not default a value. However, if you do not enter data in a
derived or defaulted column, the program automatically imports the row
with the derived or defaulted value.
BOM_BILLS_OF_MTLS_INTERFACE Derived or Defaulted Value
COMPONENT_ITEM_ID From COMPONENT_ITEM_NUMBER
LAST_UPDATE_DATE System Date
LAST_UPDATE_BY Userid
CREATION_DATE System Date
CREATED_BY Userid
ITEM_NUM 1
COMPONENT_QUANTITY 1
COMPONENT_YIELD_FACTOR 1
PLANNING_FACTOR 100
QUANTITY_RELATED 2
SO_BASIS 2
OPTIONAL 2
MUTUALLY_EXCLUSIVE_OPTIONS 2
INCLUDE_IN_COST_ROLLUP 1
CHECK_ATP 2
REQUIRED_TO_SHIP 2
REQUIRED_FOR_REVENUE 2
INCLUDE_ON_SHIP_DOC 2
COMPONENT_SEQUENCE_ID Sequence, BOM_INVENTORY_COMPONENTS_S
BILL_SEQUENCE_ID From BOM_BILL_OF_MTLS_INTERFACE or
BOM_BILL_OF_MATERIALS
WIP_SUPPLY_TYPE 1
SUPPLY_LOCATOR_ID From LOCATION_NAME
ASSEMBLY_ITEM_ID From ASSEMBLY_ITEM_NUMBER
ORGANIZATION_ID From ORGANIZATION_CODE
SUBSTITUTE_COMP_ID From SUBSTITUTE_COMP_NUMBER
REQUEST_ID From FND_CONCURRENT_REQUEST
6. IMPORTING ADDITIONAL BILL INFORMATION
When you create BOMs and assign components using the Bill and Routing Interface
program, you can also import additional BOM information using three different
interface tables. You can import standard comments for each BOM using the
BOM_ASSY_COMMENTS_INTERFACE table. You can assign component reference
designators using the BOM_REF_DESGS_INTERFACE table and substitute components
using the BOM_SUB_COMPS_INTERFACE table.
You can assign standard comments to any bill of material type. However, only
standard components assigned to standard, model, and option class BOMs can have
reference designators and substitute components.
If you insert data in the BOM_REF_DESGS_INTERFACE or BOM_SUB_COMPS_INTERFACE
tables for a planning bill, the Bill and Routing Interface program fails to
import the record and sets the PROCESS_FLAG to 3 (Assign/Validation Failed).
7. BOM_ASSY_COMMENTS_INTERFACE TABLE.
a. REQUIRED COLUMNS FOR THE BOM_ASSY_COMMENTS_INTERFACE TABLE.
To import data into the BOM_ASSY_COMMENTS_INTERFACE table, you must
assign a value to the following columns:
STANDARD_REMARKS_DESIGNATOR
BILL_SEQUENCE_ID
PROCESS_FLAG
b. DERIVED/DEFAULTED COLUMN VALUES FOR BOM_ASSY_COMMENTS_INTERFACE.
After inserting data into the BOM_ASSY_COMMENTS_INTERFACE table, the
Bill and Routing Interface program derives the value for the
BILL_SEQUENCE_ID column if you assign values to the columns:
ASSEMBLY_ITEM_ID
ORGANIZATION_ID
ALTERNATE_BOM_DESIGNATOR
8. BOM_REF_DESGS_INTERFACE AND BOM_SUBS_COMPS_INTERFACE TABLES.
a. REQUIRED COLUMNS FOR BOM_REF_DESGS_INTERFACE TABLE.
You can only import data into the BOM_REF_DESGS_INTERFACE table for
standard components assigned to standard, model and option class BOMs.
You must assign values to the following columns:
COMPONENT_REFERENCE_DESIGNATOR
COMPONENT_SEQUENCE_ID
PROCESS_FLAG
b. REQUIRED COLUMNS FOR BOM_SUBS_COMPS_INTERFACE TABLE.
You can only import data into the BOM_SUBS_COMPS_INTERFACE table for
standard components assigned to standard, model and option class BOMs.
You must assign values to the following columns:
SUBSTITUTE_COMPONENT_ID
SUBSTITUTE_ITEM_QUANTITY
COMPONENT_SEQUENCE_ID
PROCESS_FLAG
c. DERIVED/DEFAULT VALUES FOR BOM_REF_DESGS_INTERFACE AND
BOM_SUB_COMPS_INTERFACE.
After inserting data into the BOM_REF_DESGS_INTERFACE or
BOM_SUB_COMPS_INTERFACE tables, the Bill and Routing Interface program
derives the value for the BILL_SEQUENCE_ID column if you assign values
to the following columns:
ASSEMBLY_ITEM_ID
ORGANIZATION_ID
ALTERNATE_BOM_DESIGNATOR
The program also assigns a value for the COMPONENT_SEQUENCE_ID column
if you enter values into the following columns:
BILL_SEQUENCE_ID
COMPONENT_ITEM_ID
OPERATION_SEQ_NUM
EFFECTIIVITY_DATE
9. VALIDATING INTERFACE TABLE ROWS.
After you load the BOM and component data, the Bill and Routing Interface
program validates the required data for the six interface tables. BOM
validation insures that each row has an included or defaulted value for all the
required columns and verifies the same way as the Define Bill of Material form
and the Define Engineering Bill of Material form validate manually entered
bills. For example, you cannot import a standard bill and assign model, option
class or planning items as components.
If the Bill and Routing Interface program cannot assign a value to a row or
validate that row, the program sets the PROCESS_FLAG to 3 (Assign/Validation
Failed) and inserts a row in the MTL_INTERFACE_ERRORS table.
To identify the error message for a failed row, the program automatically
populates the UNIQUE_ID column in the error interface table with the same
value as the TRANSACTION_ID value. Each error has a value for the
MESSAGE_NAME and REQUEST_ID columns in the error interface table. The
MESSAGE_NAME column corresponds to messages stored in the Oracle Application
Message Dictionary. The 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 you import a BOM with multiple components and one of the components fails
validation, then the bill will be created without the failed component. If,
however, the row in the BOM_BILL_OF_MTLS_INTERFACE table fails, the BOM and
and all of its details are not imported.
10. CORRECTING FAILED ROWS.
You can review and report rows in the interface tables using SQL*Plus
or any custom report you develop. Since all rows in the interface
table have a value for PROCESS_FLAG, you can easily identify records
that are successfully imported into Oracle Bill of Material and Oracle
Engineering, or records that failed validation or import. You can also
identify individual records by the unique value for the TRANSACTION_ID
column.
You can update any row from the interface tables using SQL*Plus. If you
update a row to resolve invalid data, you must set the PROCESS_FLAG to 1
(Pending) for that row.
If you delete a failed row and insert a replacement row, you should set
the PROCESS_FLAG to 1 (Pending) for the new row. When you resubmit the Bill
and Routing Interface program, all rows pending validation are processed.
Following are Interface and there respective tables Used in Oracle BOM and WIP
Oracle Bill of Material
Open Bills of Material Interface
1. BOM_BILL_OF_MTLS_INTERFACE 2. BOM_INVENTORY_COMPS_INTERFACE
3. BOM_REF_DESGS_INTERFACE 4. BOM_SUB_COMPS_INTERFACE
5. MTL_ITEM_REVISIONS_INTERFACE
Open Bills of Material Tables
1. bom_bill_of_materials 2. bom_inventory_components 3. bom_reference_designators
4. bom_substitute_components 5. mtl_item_revisions
Oracle Routing
Open Routing Interface
1. BOM_OP_ROUTINGS_INTERFACE 2. BOM_OP_SEQUENCES_INTERFACE
3. BOM_OP_RESOURCES_INTERFACE 4. MTL_RTG_ITEM_REVS_INTERFACE
Open Routing Tables
1. bom_operational_routings 2. bom_operation_sequences 3. bom_operation_resources