Item Interface in Oracle
Overview:
Oracle provides
flexible tools in the form of Interface programs to import the master and
transactional data like Customers, Invoices, and Sales Orders etc from external
systems into Oracle Applications.
Conversion/Interface
Strategy:
- Data Mapping
During the data mapping process, list of all the data sets and data
elements that will need to be moved into the Oracle tables as part of
conversion are identified. Data mapping tables are prepared as part of this
activity that show what are the data elements that are needed by the target
system to meet the business requirements and from where they will be extracted
in the old system.
- Download Programs
After the conversion data mapping is complete, download programs are
developed that are used to extract the identified conversion data elements from
the current systems in the form of an ASCII flat file. The structure of the
flat file must match the structure of the Oracle standard interface tables.
These flat files generated may be in text form or a comma or space delimited,
variable or fixed format data file.
- Upload Program
Once the data has been extracted to a flat file, it is then moved to the
target file system and the data from the file is loaded into user defined
staging tables in the target database using SQL Loader or UTL_FILE utilities.
Then programs are written and run which validate the data in the staging tables
and insert the same into the Oracle provided standard Interface tables.
- Interface Program
Once the interface tables are populated, the
respective interface program (each data element interface has a specific
interface program to run) is submitted. The interface programs validate the
data, derive and assign the default values and ultimately populate the
production base tables.
The Item import
Interface(IOI) reads data from following tables for importing items and item
details. The MTL_SYSTEMS_ITEM_INTERFACE table is used for new item numbers
and all item attributes. This is the main item interface table, and can be
the only table used to import items.
MTL_ITEM_REVISIONS_INTERFACE is used if Item revisions history is also loaded with items. Item categories can be imported using MTL_ITEM_CATEGORIES_INTERFACE.
and all item attributes. This is the main item interface table, and can be
the only table used to import items.
MTL_ITEM_REVISIONS_INTERFACE is used if Item revisions history is also loaded with items. Item categories can be imported using MTL_ITEM_CATEGORIES_INTERFACE.
The import error can
be tracked using MTL_INTERFACE_ERRORS table. The transaction_id and request_id
populated by the import program can be used to link interface table and error
table.
Required Data:
ITEM_NUMBER or SEGMENT
Columns
Every row in the item interface table must identify the item and organization. To identify the item when importing it, you may specify either the ITEM_NUMBER or SEGMENTn columns—the Item Interface generates the INVENTORY_ITEM_ID for you.
ORGANIZATION_ID or ORGANIZATION_CODE
You need to specify either the ORGANIZATION_ID or ORGANIZATION_CODE that identifies the organization.
DESCRIPTION
When you import a new item, you are also required to specify the DESCRIPTION.
TRANSACTION_TYPE &
PROCESS_FLAG
There are two other columns the Item Interface uses
to manage processing. They are TRANSACTION_TYPE, which tells the Item Interface
how to handle the row, and PROCESS_FLAG, which indicates the current status of
the row.
Always set the TRANSACTION_TYPE column to CREATE, to create an item record (true when both importing a new item and assigning an already existing item to another organization). This is the only value currently supported by the Item Interface. The Item Interface uses the PROCESS_FLAG to indicate whether processing of the row succeeded or failed. When a row is ready to be processed, give the PROCESS_FLAG a value of 1 (Pending), so that the Item Interface can pick up the row and process it into the production tables.
Always set the TRANSACTION_TYPE column to CREATE, to create an item record (true when both importing a new item and assigning an already existing item to another organization). This is the only value currently supported by the Item Interface. The Item Interface uses the PROCESS_FLAG to indicate whether processing of the row succeeded or failed. When a row is ready to be processed, give the PROCESS_FLAG a value of 1 (Pending), so that the Item Interface can pick up the row and process it into the production tables.
Meaning of
PROCESS_FLAG Values:
Code
|
Code Meaning
|
1
|
Pending
|
2
|
Assign complete
|
3
|
Assign/validation failed
|
4
|
Validation succeeded; import
failed
|
5
|
Import in process
|
7
|
Import succeeded
|
Note:
When more than one of
these columns has been entered and they conflict, ITEM_NUMBER overrides
SEGMENTn and ORGANIZATION_ID overrides ORGANIZATION_CODE. It is strongly
recommended that you use SEGMENT column instead of ITEM_NUMBER.
For performance
purpose, it is advised to batch set of records using set_process_id column and
then run import program for that set_process_id. The item import (IOI) program
can be run in parallel if separate set_process_ids are passed while submitting.
Derived Data:
Many columns have
defaults that the Item Interface uses when you leave that column null in the
item interface table
Validations:
1] Validation for
organization code (standard table:
ORG_ORGANIZATION_DEFINITIONS)
2] Validation for
Item_number (standard table: mtl_system_items_b)
3] Validation for
Description
4] Validation for
Primary Unit of Measure (standard table:
MTL_UNITS_OF_MEASURE)
5] Validation for
Template Name (standard table: mtl_item_templates)
6] Validation for Item
Type (standard table: FND_COMMON_LOOKUPS)
7] Validation for
ENCUMBRANCE_ACCOUNT (standard table:
gl_code_combinations)
8] Validation for
EXPENSE_ACCOUNT (standard table: gl_code_combinations)
Note: You can add more
validation as per your business requirement.
Record Insertion:
Through your custom
program you can insert the below columns in the interface table. Again the list
is a sample one; you can add additional columns as your business requirement.
Columns inserted:
- ORGANIZATION_ID
–>Taken from ORG_ORGANIZATION_DEFINITIONS table
- ORGANIZATION_CODE
–>Taken
from Staging table
- LAST_UPDATE_DATE
–>sysdate
- LAST_UPDATED_BY
–>fnd_global.user_id
- CREATION_DATE
–>sysdate
- CREATED_BY
–>fnd_global.user_id
- LAST_UPDATE_LOGIN
–>fnd_global.login_id
- DESCRIPTION
–>Taken from Staging
table
- SEGMENT1
–>Taken from Staging table
- PRIMARY_UOM_CODE
–>Taken from Staging table
- PRIMARY_UNIT_OF_MEASURE
–>Taken from MTL_UNITS_OF_MEASURE
- ITEM_TYPE
–>NULL
- TEMPLATE_NAME
–>Taken from Staging table
- TEMPLATE_ID
–>Taken from
mtl_item_templates
- MIN_MINMAX_QUANTITY
–>Taken from Staging
table
- MAX_MINMAX_QUANTITY
–>Taken from Staging table
- LIST_PRICE_PER_UNIT
–>Taken from Staging table
- ITEM_CATALOG_GROUP_ID
–>Taken from Staging table
- SET_PROCESS_ID
–>1
- PROCESS_FLAG
–>1
- TRANSACTION_TYPE
–>‘CREATE’
Standard Concurrent
Program:
After you insert valid
data into Interface table, you can go to Items > Import > Import
Items and run the standard concurrent program. Here is the parameter
form.
1] All Organizations:
- Yes: Run the interface for all organization codes in the item
interface table.
- No: Run the interface only for the organization you are currently
in. Item interface rows for organizations other than your current
organization are ignored.
2] Validate Items:
- Yes: Validate all items and their data residing in the interface table
that have not yet been validated. If items are not validated, they will
not be processed into Oracle Inventory.
- No: Do not validate items in the interface table.
3] Process Items:
- Yes: All qualifying items in the interface table are inserted into
Oracle Inventory.
- No: Do not insert items into Oracle Inventory.
4] Delete Processed
Rows:
- Yes: Delete successfully processed items from the item interface
tables.
- No: Leave all rows in the item interface tables.
5] Process Set:
Enter a number for the
set id for the set of rows you want to process. The program picks up the rows
marked with that id in the SET_PROCESS_ID column. If you leave this field
blank, all rows are picked up for processing regardless of the SET_PROCESS_ID
column value.
Working with failed
interface rows:
If a row fails
validation, the Item Interface sets the PROCESS_FLAG to 3 (Assign/validation
failed) and inserts a row in the interface errors table,MTL_INTERFACE_ERRORS.
To identify the error message for the failed row, the program automatically
populates the TRANSACTION_ID column in this table with the TRANSACTION_ID value
from the corresponding item interface table.
The UNIQUE_ID column
in MTL_INTERFACE_ERRORS is populated from the sequence
MTL_SYSTEM_ITEMS_INTERFACE_S. Thus, for a given row, the sequence of errors can
be determined by examining UNIQUE_ID for a given TRANSACTION_ID.
You should resolve
errors in the sequence that they were found by the interface, that is, in
increasing order of UNIQUE_ID for any TRANSACTION_ID.
Resubmitting an
Errored Row:
During Item Interface
processing, rows can error out either due to validation (indicated by
PROCESS_FLAG = 3 in MTL_SYSTEM_ITEMS_INTERFACE and the corresponding error in
MTL_INTERFACE_ERRORS) or due to an Oracle Error.
When an Oracle Error
is encountered, the processing is stopped and everything is rolled back to the
previous save point. This could be at PROCESS_FLAG = 1, 2, 3, or 4.
When you encounter
rows errored out due to validations, you must first fix the row
corresponding to the error with the appropriate value. Then reset PROCESS_FLAG
= 1, INVENTORY_ITEM_ID = null, and TRANSACTION_ID = null. Then resubmit the row
for reprocessing.
Useful Query:
01
|
Select
|
|
02
|
SEGMENT1,
|
03
|
DESCRIPTION,
|
|
04
|
PROCESS_FLAG,
|
05
|
SET_PROCESS_ID,
|
|
06
|
INVENTORY_ITEM_ID,
|
07
|
ORGANIZATION_ID,
|
|
08
|
ORGANIZATION_CODE,
|
09
|
CREATION_DATE,
|
|
10
|
ITEM_TYPE,
|
11
|
UNIT_OF_ISSUE,
|
|
12
|
TEMPLATE_ID,
|
13
|
TEMPLATE_NAME,
|
|
14
|
EXPENSE_ACCOUNT,
|
15
|
ENCUMBRANCE_ACCOUNT,
|
|
16
|
PRIMARY_UOM_CODE,
|
17
|
PRIMARY_UNIT_OF_MEASURE,
|
|
18
|
MIN_MINMAX_QUANTITY,
|
19
|
MAX_MINMAX_QUANTITY,
|
|
20
|
TAX_CODE,
|
21
|
REQUEST_ID
|
|
22
|
from
|
23
|
MTL_SYSTEM_ITEMS_INTERFACE
|
|
24
|
order by CREATION_DATE;
|
25
|
----------------------------
|
|
26
|
Select
|
27
|
ORGANIZATION_ID,
|
|
28
|
UNIQUE_ID,
|
29
|
REQUEST_ID
,
|
30
|
TABLE_NAME
,
|
31
|
COLUMN_NAME,
|
|
32
|
ERROR_MESSAGE
|
33
|
CREATION_DATE,
|
|
34
|
MESSAGE_TYPE
|
35
|
from
|
|
36
|
MTL_INTERFACE_ERRORS
|
37
|
order by CREATION_DATE;
|
Base tables that would
be affected by MTL_SYSTEM_ITEMS_INTERFACE
MTL_SYSTEM_ITEMS_B
MTL_ITEM_REVISIONS_B
MTL_CATEGORIES_B
MTL_CATEGORY_SETS_B
MTL_ITEM_STATUS
MTL_ITEM_TEMPLATES
MTL_ITEM_REVISIONS_B
MTL_CATEGORIES_B
MTL_CATEGORY_SETS_B
MTL_ITEM_STATUS
MTL_ITEM_TEMPLATES
Required columns
in MTL_ITEM_REVISIONS_INTERFACE table.
The table is only used
if Item revision is to be loaded in the same run with IOI. If this table is not
used then items are created with the default revision setup for an
organization.
PROCESS_FLAG = 1
TRANSACTION_TYPE = 'CREATE'
SET_PROCESS_ID = any numeric value(Should be same for the item in MTL_SYSTEM_ITEMS_INTERFACE table)
ORGANIZATION_ID/ORGANIZATION_CODE = Master/Child Org.
REVISION
EFFECTIVITY_DATE
IMPLEMENTATION_DATE
ITEM_NUMBER = Same as item_number in mtl_system_items_interface table.
Each row in the mtl_item_revisions_interface table must have the REVISION and
EFFECTIVITY_DATE in alphabetical (ASCII sort) and chronological order.
Required columns
for MTL_ITEM_CATEGORIES_INTERFACE table
TRANSACTION_TYPE =
'CREATE'
SET_PROCESS_ID = any numeric value(Should be same for the item in
MTL_SYSTEM_ITEMS_INTERFACE
table)
ORGANIZATION_ID/ORGANIZATION_CODE = Master/Child Org
ITEM_NUMBER/INVENTORY_ITEM_ID or both
CATEGORY_SET_NAME or CATEGORY_SET_NAME or both
CATEGORY_ID or CATEGORY_NAME or both
For performance purpose, it is advised to batch set of records using set_process_id column and then run import program for that set_process_id. The item import(IOI) program can be run in parallel if seperate set_process_ids are passed while submitting. The IOI automatically separates Master records from Child, and processes Master records first. However, as one IOI process is not aware of other IOI processes running in parallel, do not split a given item's separate Organization records into two different SET_PROCESS_IDs that are being run in parallel.
Item import program can be run in 2 modes INSERT & UPDATE.
The method to update Item attribute columns to NULL is to use the following values:
· for Numeric fields: insert -999999
· for Character fields: insert '!'
Useful Metalink Note:
- FAQ
for Item Import [ID 109628.1
- Error
in Validating MTL_SYSTEM_ITEMS_INTERFACE [ID 1057175.6]
- A
Guideline to IOI Error Messages and Solutions [ID 52746.1]
- How
to Import Item Costs Using the Item Open Interface (IOI) [ID 191376.1]
- Item
Import Performance Tips [ID 66496.1]
- INCOIN:
Basic Steps for Researching Failed Item Imports [ID 552683.1]
- Troubleshooting
Guide for INV_IOI_MASTER_CHILD Errors in Item Import [ID 429924.1]
- How
To Prepare to Run Parallel Runs of the Item Import Interface INCOIN [ID
842767.1]
- Item
Import Gives Error: “The Default Primary Unit of Measure Is Invalid” [ID
789927.1]
- Understanding
Item Import and Debugging Problems with Item Import [ID 268968.1]
- How
to create a Category Set and Assign Items to Categories [ID 423551.1]
- Item
API Or Concurrent Manager, Which One Is Best For Item Creation? [ID
760498.1]
Excellent article. Very helpful for me as new one to interfaces.
ReplyDelete