Search This Blog

Loading...

Monday, April 8, 2013

MTL_TRANSACTIONS_INTERFACE, MTL_TRANSACTIONS_LOTS_INTERFACE , MTL_SERIAL_NUMBERS_INTERFACE


Oracle Warehouse Management - Version: 11.5.8 to 11.5.10.2 - Release: 11.5 to 11.5.10
Oracle Inventory Management - Version: 11.5.10.0 and later    [Release: 11.5.10 and later]
Information in this document applies to any platform.
This document includes all versions of Oracle EBS 11i and R12
MTL_TRANSACTIONS_INTERFACE - Transaction open interface
MTL_TRANSACTIONS_LOTS_INTERFACE - Lot transaction open interface
MTL_SERIAL_NUMBERS_INTERFACE - Serial number interface
Goal
The purpose of this note is to provide common transaction open interface examples showing how to correctly submit different transactions through the transaction open interface. Some debugging tips are also provided. The following scenarios are addressed:
How can the transaction open interface be used in the following scenarios?
Scenario: 1 Account alias receipt for an item that is neither Lot or Serial control.
Scenario: 2 Account alias issue for an item that is neither Lot or Serial control.
Scenario: 3 Account alias receipt for an item that is Lot controlled.
Scenario: 4 Account alias receipt for an item that is Serial controlled
Scenario: 5 Subinventory transfer for a lot controlled item.
Scenario: 6 Miscellaneous receipt using LPN for an item under serial control
Scenario: 7 Miscellaneous issue using LPN for an item under serial control
Scenario: 8 Container pack item that is not Lot/Serial Control Into LPN
Scenario: 9 Container Un pack from LPN
Scenario: 10: Direct Org Transfer
Scenario: 11: Intransit Org Transfer
Scenario: 12: Sales Order Issue
Scenario: 13: Account Issue
Scenario 14: Account Receipt
Scenario: 15: WIP Assembly Return
Scenario: 16: WIP Component Return
Scenario: 17: WIP Assembly Completion
Scenario: 18: WIP Component Issue
Solution
The transaction open interface process can be used to interface different transactions to do onhand conversions from legacy systems,and other transactions like subinventory transfer , account alias issue / receipts etc.. The transactions could involve Lot and /or serial controlled items and LPN related transactions if the items are packed in LPN’s (ie. if the customer is using Warehouse Management System [WMS]).
In this note we will give examples of some basic transactions that can be performed through the transaction open interface. The 3 main tables that we will concentrate on are:
MTL_TRANSACTIONS_INTERFACE, MTL_TRANSACTION_LOTS_INTERFACE and MTL_SERIAL_NUMBERS_INTERFACE.
Once you have set up the Inventory Concurrent Manager you can launch the Inventory Transactions Manager (INCTCM) through the Interface Managers Window which reads records from the MTL_TRANSACTIONS_INTERFACE table, validates them and moves the successful transactions onto  the MTL_MATERIAL_TRANSACTIONS_TEMP table, and submits the Transaction workers (sub-processes - INCTCW) which then processes these records through inventory. This process consists of data derivation, validation, and transfer of records from the MTL_TRANSCTIONS_INTERFACE,
MTL_TRANSACTIONS_LOTS_INTERFACE and MTL_SERIAL_NUMBERS_INTERFACE tables
into their respective TEMP (temporary) tables from where the transactions processor processes them.
The MTL_TRANSACTIONS_INTERFACE table is the key table through which transactions can be submitted.
The 3 main columns that needs to be set for the transaction processor to process the records are:
LOCK_FLAG = 2
PROCESS_FLAG = 1
TRANSACTION_MODE = 3
The TRANSACTION_INTERFACE_ID column is required for transactions of items under lot or serial control.  The value in the column in this table is used to identify the child rows in the lot or serial
interface tables MTL_TRANSACTION_LOTS_INTERFACE and MTL_SERIAL_NUMBERS_INTERFACE. If the transacted item is under lot control and/or serial control this column maps to MTL_TRANSACTION_LOTS_INTERFACE.TRANSACTION_INTERFACE_ID and MTL_SERIAL_NUMBERS_INTERFACE.TRANSACTION_INTERFACE_ID.
For more information on the tables please refer to Oracle Manufacturing API's and Open Interfaces Manual
Scenario: 1: Account Alias Receipt (NO Lot/Serial)
Testing the transaction open interface with minimum columns populated.
Account alias receipt for an item that is neither Lot or Serial control.
We have defined an item, bmw, and we have assigned the item to W1 Cherry hill organization.
We are going to receive 10 quantity into subinventory FGI and locator '1.1.1'.
Below is a SQL statement to check the organization id for organization W1:

select organization_code,organization_id from org_organization_definitions
where organization_code = 'W1';

ORG ORGANIZATION_ID
--- ---------------
W1 1884

Below is a SQL statement to check the inventory_item_id for out item bmw:

select inventory_item_id , segment , organization_id from mtl_system_items_b
where segment = 'bmw'
and organization_id = 1884;


INVENTORY_ITEM_ID SEGMENT1 ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
10531 bmw 1884
Below is a SQL statement to find out the transaction_type_id for transaction type Account alias receipt:

select transaction_type_id,transaction_type_name,description
from mtl_transaction_types
where transaction_type_name = 'Account alias receipt';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME
------------------- ------------------------------
DESCRIPTION
----------------------------------------------------------------------------------------------------
41 Account alias receipt
Receive material against account alias

Below is the script to get the alias account name and the account id it is linked to.
Segment is the account alias name.

select disposition_id, description,segment , distribution_account
from mtl_generic_dispositions
where organization_id = 1884;

DISPOSITION_ID DESCRIPTION
-------------- --------------------------------------------------
SEGMENT DISTRIBUTION_ACCOUNT
---------------------------------------- --------------------
147 Default Account
DEFAULT 17021

Below is a SQL statement to get the locator id for locator ‘1.1.1’ associated with subinventory ‘FGI’.
select inventory_location_id,segment1, segment2, segment3,subinventory_code from mtl_item_locations
    where organization_id = 1884
    and subinventory_code = 'FGI'
    and segment1 = '1'
    and segment2 = '1'
    and segment3 = '1';


INVENTORY_LOCATION_ID SEGMENT1
--------------------- ----------------------------------------
SEGMENT2                                 SEGMENT3                                 SUBINVENTO
---------------------------------------- ---------------------------------------- ----------
  &nbsbsp;            1291 1
1                       &nbnbsp;              1                                        FGI

Below is a script to find the segments (account c) for the distribution acc021. to account
alias screen in Inventory and verify the account for the alias that is defined:
select code_combination_id, segment1 , segment2, segment3 , segment4 , segment5
from gl_code_combinations
where code_combination_id = 17021 ;

CODE_COMBINATION_ID SEGMENT SEGMENT2 SEGMENT3
------------------- ------------------------- ------------------------- -------------------------
SEGMENT4 SEGMENT5
------------------------- -------------------------
17021 01 520 5250
0000 000

Finally here is the complete SQL statement to interface an account alias receipt. The values populated are based on the values obtained :rom the above SQL sttatements.

Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_source_name,
transaction_source_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
dst_segment1,
dst_segment2,
dst_segment3,
dst_segment4,
dst_segment5)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Alias Receipt', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
SYSDATE , --last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
10531 , --inventory item id
'FGI', --From subinventory code
1884, --organization id
' DEFAULT ', --transaction source
147, --transaction source id
10, --transaction quantity
10, --Primary quantity
41, --transaction type id
'10 ', --segment account combination
'520', --segment2 account combination
'5250', --segment3 account combination
'0000', --segment4 account combination
'000' --segment5 account combination
);

commit;


Scenario: 2: Account Alias (No Lot/Serial)
Account alias issue for an item that is neither Lot or Serial control.
We are issuing out 10 qty that we had received earlier. The subinventory is FGI and the locator is '1.1.1'. We are using the same account alias ' DEFAULT '.
Below is a SQL statement to find out the transaction_type_id for the transaction type Account alias issue:

select transaction_type_id,transaction_type_name,description
from mtl_transaction_types
where transaction_type_name = 'Account alias issue';

TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME
------------------- ------------------------------
DESCRIPTION
----------------------------------------------------------------------------------------------------
31 Account alias issue
Issue material against account alias

Below is the complete SQL statement to interface the account alias issue.
Note that the transaction type id is 3 for account alias issue and as we are issuing 10 quantity out, the transaction quantity is - 10.
Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_source_name,
transaction_source_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
dst_segment1,
dst_segment2,
dst_segment3,
dst_segment4,
dst_segment5)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Alias Issue', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
SYSDATE , --last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
10531 , --inventory item id
'FGI', --From subinventory code
1884, --organization id
' DEFAULT ', --transaction source
147, --transaction source id
-10, --transaction quantity
10, --Primary quantity
31 , --transaction type id
'01', --segment1 account combination
'520', --segment2 account combination
'5250', --segment3 account combination
'0000', --segment4 account combination
'000' --segment5 account combination
);

commit;

Scenario: 3: Account Alias Receipt (Lot Controled)
Account alias receipt for an item that is Lot controlled.
We have defined an item bmwlot and we have assigned the item to W1 Cherry hill organization. We are going to receive 10 quantity into subinventory FGI and locator '1.1.1'. The lot number we are going to assign is LT0001.

select inventory_item_id , segment , organization_id,
auto_lot_alpha_prefi , start_auto_lot_number
from mtl_system_items_b
where segment = 'bmwlot'
and organization_id = 1884;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
AUTO_LOT_ALPHA_PREFIX START_AUTO_LOT_NUMBER
------------------------------ ------------------------------
10532 bmwlot 1884
LT 0001
Below is the complete SQL statement to interface the account alias receipt. The values populated are based on the values obtained from the above SQL statements:
Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_source_name,
transaction_source_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
dst_segment1,
dst_segment2,
dst_segment3,
dst_segment4,
dst_segment5,
transaction_interface_id)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Alias Receipt', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
SYSDATE , --last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
10532, --inventory item id
'FGI', --From subinventory code
1884, --organization id
' DEFAULT ', --transaction source
147, --transaction source id
10, --transaction quantity
10, --Primary quantity
41 , --transaction type id
'01', --segment1 account combination
'520', --segment2 account combination
'5250', --segment3 account combination
'0000', --segment4 account combination
'000', --segment5 account combination
999--transaction interface id
);


Insert into mtl_transaction_lots_interface
( transaction_interface_id,
lot_number,
Lot_expiration_date,
transaction_quantity,
last_update_date ,
last_updated_by ,
creation_date ,
created_by )
VALUES (999 ,
'LT00001',
sysdate+100,
10,
sysdate ,
0 ,
sysdate ,
0 );
commit;

Scenario: 4: Account Alias Receipt (Serial Controlled)
Account alias receipt for an item that is Serial controlled.
We have defined an item bmwserial and we have assigned the item to W1 Cherry hill organization. We are going to receive 10 quantity into subinventory FGI and locator '1.1.1'. The serial numbers we are going to assign are from SR0001 to SR001:.

Select inventory_item_id , segment1 , organization_id,
auto_serial_alpha_prefix, start_auto_serial_number
from mtl_system_items_b
where segment1 = 'bmwserial'
and organization_id = 1884;

INVENTORY_ITEM_ID SEGMENT1 ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
AUTO_SERIAL_ALPHA_PREFIX START_AUTO_SERIAL_NUMBER
------------------------------ ------------------------------
10534 bmwserial 1884
SR 0001


Below is the complete SQL statement to interface the account alias receipt. The values populated are based on the values obtained from the above SQL statements:
Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_source_name,
transaction_source_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
dst_segment1,
dst_segment2,
dst_segment3,
dst_segment4,
dst_segment5,
transaction_interface_id)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Alias Receipt', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
SYSDATE , --last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
10534, --inventory item id
'FGI', --From subinventory code
1884, --organization id
' DEFAULT ', --transaction source
147, --transaction source id
10, --transaction quantity
10, --Primary quantity
41 , --transaction type id
'01', --segment1 account combination
'520', --segment2 account combination
'5250', --segment3 account combination
'0000', --segment4 account combination
'000', --segment5 account combination
999--transaction interface id
);

Insert into mtl_serial_numbers_interface
(transaction_interface_id,
fm_serial_number,
to_serial_number,
last_update_date,
last_updated_by,
creation_date,
created_by)
values
(999, --transaction interface_id
'SR0001', --from serial number
'SR0010' , --to serial number
sysdate, --last update date
0, --last updated by
sysdate, --creation date
0 --created by
);

commit;

Scenario: 5: Subinventory Transfer
Subinventory transfer for a lot controlled item.
We have defined an item bmwlot and we have assigned the item to W1 Cherry hill organization. We have already received 10 quantity into subinventory FGI and locator '1.1.1'. We are planning to move a quantity of 2 from subinventory FGI locator '1.1.1' to subinventory 'TC-LOOSE' and locator 'TCLO.1.1.'
Below is the SQL statement to find the locator id for locator 'TCLO.1.1'

select inventory_location_id,segment1, segment2, segment3,subinventory_code from mtl_item_locations
where organization_id = 1884
and subinventory_code = 'TC-LOOSE';

INVENTORY_LOCATION_ID SEGMENT1
--------------------- ----------------------------------------
SEGMENT2    SEGMENT3    SUBINVENTO
---------------------------------------- ---------------------------------------- ----------
1482 TCLO
1     1      TC-LOOSE

Below is the SQL statement to find the transaction type id for transaction type 'Subinventory Transfer'

select transaction_type_id,transaction_type_name,description
from mtl_transaction_types
where transaction_type_name ='Subinventory Transfer';

TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME
------------------- ------------------------------
DESCRIPTION
----------------------------------------------------------------------------------------------------
2 Subinventory Transfer
Transfer material between subinventories

INSERT INTO MTL_TRANSACTIONS_INTERFACE
(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
transfer_subinventory,
transfer_locator,
transaction_interface_id)
VALUES (
'Ea', --transaction uom
sysdate, --transaction date
'Subinventory Transfer', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
sysdate, --last update date
0 , --last updated by
sysdate, --created date
0 , --created by
10532 , --inventory item id
'FGI', --subinventory code
1884, --organization id
2 , --transaction quantity
2 , --primary quantity
2, --transaction type id
'TC-LOOSE', -- from subinventory
1482, -- from locator id
999); --transaction interface id

INSERT INTO MTL_TRANSACTION_LOTS_INTERFACE
( transaction_interface_id,
lot_number,
Lot_expiration_date,
transaction_quantity,
last_update_date ,
last_updated_by ,
creation_date ,
created_by)
VALUES (999, --transaction interface id
'LT00001', --Lot number
sysdate+100, --Lot expiration date
2, --transaction quantity
sysdate, --last update date
0, --last updated by
sysdate, --creation date
0); --created by

commit;

Scenario: 6:  Misc. Receipt (with LPN and serial)
Miscellaneous receipt using LPN for an item under serial control
Overview of License Plate Numbers (LPN):
LPN's are used in the Oracle Warehouse Management System (WMS). Oracle WMS provides full visibility to inventory items that are stored in LPNs. An LPN in Oracle WMS is any object that
exists in a location and holds items. Although LPNs are associated with containers, they do not need to represent a physical identity, such as a box. Thus, a LPN might be defined as just a label or a collection of items. Oracle WMS enables you to track, transact and nest LPNs and their contents.
Using License Plate Numbers:
The Oracle WMS LPN features enable you to do the following:
a. Receive, store, and pick material by LPN
b. View on-hand balances by LPN
c. View contents of LPN, including item number, serial number, quantity, and so on
d. Move many items in a transaction using the LPN
e. Print labels and reports for referencing container contents
f. Track nested LPNs (for example, cartons on a pallet)
G. Pack, unpack, consolidate, split, and update LPNs
h. Reuse empty LPNs
Points to remember when using LPN s (License Plate Numbers):

LPN_ID : the LPN from which an Unpack operation is to be done
TRANSFER_LPN_ID : the LPN to which a Pack operation is to be done
CONTENT_LPN_ID: field is populated for Issue transactions and the TRANSFER_LPN_ID for Receipt transactions (LPN_ID field in MTI should NOT be used for these transactions)
We cannot issue individual serials from an LPN through an Issue transaction. If a Miscellaneous Issue is performed for an LPN the ENTIRE LPN and ALL ITS CONTENTS are issued out. If you want to issue out a single serial from an LPN, then you must first unpack the serial from the LPN by posting an unpack transaction and then issue the individual serial.
In our scenario we will receive item bmwlpnserial into LPN A using a miscellaneous receipt. We are going to receive 10 quantity of the item into subinventory FGI and locator'1.1.1'. We have generated the LPN using Generate LPN program through Warehouse Manger responsibility and the concurrent program is under Other> Requests > Run. You can check the LPN number in the log file of the Generate LPN program.
Below is the SQL statement to check the LPN information then Generate LPN program.

select lpn_id,license_plate_number,lpn_content
from wms_license_plate_numbers
where license_plate_number = 'LPN1A';

LPN_ID LICENSE_PLATE_NUMBER LPN_CONTEXT
--------- ------------------------------ -----------
128 LPN1A 5

Below is the SQL statement to find out the meaning for the LPN content:

select lookup_code,:meaning
from mfg_lookups
where lookup_type ='WMS_LPN_CONTEXT'
order by lookup_code;

LOOKUP_CODE MEANING
----------- --------------------------------------------------------------------------------
1  Resides in Inventory
2  Resides in WIP
3  Resides in Receiving
4  Issued out of Stores
5  Defined but not used
6  Resides in Intransit
7  Resides in Vendor
8  Packing content
9  Loaded to Dock
10 Prepack for WIP
11 Picked

We are going to use LPN A which has a content code of  5 - Defined but not used .

select transaction_type_id,transaction_type_name,description
from mtl_transaction_types
where transaction_type_name = 'Miscellaneous receipt';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME
------------------- ------------------------------
DESCRIPTION
----------------------------------------------------------------------------------------------------
42 Miscellaneous receipt
Perform miscellaneous receipt of material

select inventory_item_id , segment , organization_id
from mtl_system_items_b
where segment1 = 'bmwlpnserial'
and organization_id = 1884;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
11821 bmwlpnserial 1884
Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
dst_segment1,
dst_segment2,
dst_segment3,
dst_segment4,
dst_segment5,
transaction_interface_id,
transfer_lpn_id
)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Miscellaneous Receipt', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
SYSDATE , --last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
11821 , --inventory item id
'FGI',--From subinventory code
1884, --organization id
10, --transaction quantity
10, --Primary quantity
42, --transaction type id
'01', --segment1 account combination
'520', --segment2 account combination
'5250', --segment3 account combination
'0000', --segment4 account combination
'000', --segment5 account combination
999, --transaction interface id
128); --transfer lpn id

Insert into mtl_serial_numbers_interface
(transaction_interface_id,
fm_serial_number,
to_serial_number,
last_update_date,
last_updated_by,
creation_date,
created_by)
values
(999, --transaction interface_id
'SR00001' , --from serial number
'SR00010', --to serial number
sysdate, --last update date
0, --last updated by
sysdate, --creation date
0 --created by
);

commit;

After the import when you check the content of  LPN1A you will see that the content has changed to Resides in Inventory .

select lpn_id,license_plate_number,lpn_content
from wms_license_plate_numbers
where license_plate_number = 'LPN1A';

LPN_ID LICENSE_PLATE_NUMBER LPN_CONTEXT
--------- ------------------------------ -----------
28 LPN1A


Scenario: 7: Misc. Issue (with LPN and serial)
Miscellaneous issue using LPN for an item under serial control
We are going to perform a miscellaneous issue of the LPN, LPN A and its entire contents that we had received in scenario 6.

Select transaction_type_id,transaction_type_name,description from mtl_transaction_types
where transaction_type_name = 'Miscellaneous issue';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME
------------------- ------------------------------
DESCRIPTION
----------------------------------------------------------------------------------------------------
32 Miscellaneous issue
Perform miscellaneous issue of material
Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
dst_segment1,
dst_segment2,
dst_segment3,
dst_segment4,
dst_segment5,
transaction_interface_id,
content_lpn_id)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Miscellaneous Issue', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
2 , --locator id
SYSDATE , --last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
11821, --inventory item id
'FGI', --From subinventory code
1884, --organization id
-10,--transaction quantity
10, --Primary quantity
32, --transaction type id
'01', --segment1 account combination
'520', --segment2 account combination
'5250', --segment3 account combination
'0000', --segment4 account combination
'000', --segment5 account combination
999, --transaction interface id
128); --transfer lpn id



Insert into mtl_serial_numbers_interface
(transaction_interface_id,
fm_serial_number,
to_serial_number,
last_update_date,
last_updated_by,
creation_date,
created_by)
values
(999, --transaction interface_id
'SR00001' , --from serial number
'SR00010' , --to serial number
sysdate, --last update date
0, --last updated by
sysdate, --creation date
0 ; --created by
);

commit;


select lpn_id,license_plate_number,lpn_content
from wms_license_plate_numbers
where license_plate_number = 'LPN1A';

LPN_ID LICENSE_PLATE_NUMBER LPN_CONTEXT
--------- ------------------------------ -----------
128 LPN1A 4

After the issue transaction when you check the content of LPN LPN1A you will see that the content has changed to 4 Issued out of Stores

Scenario: 8: Container Pack (No Lot/Serial)
Container pack item that is not Lot/Serial Control Into LPN
Generated an LPN using Generate LPN program. Now we are going to pack item bmwp which we have defined and has received loose qty (10) in subinventory FGI and locator'1.1.1' into LPN 'LPN21A' .

select lpn_id,license_plate_number,lpn_content
from wms_license_plate_numbers
where license_plate_number = 'LPN21A';


LPN_ID LICENSE_PLATE_NUMBER LPN_CONTEXT
--------- ------------------------------ -----------
135 LPN21A 5
We are going to use LPN21A which has a content 5 Defined but not used

select inventory_item_id , segment , organization_id from mtl_system_items_b
where segment = 'bmwp'
and organization_id = 1884;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
11822 bmwp 1884

select transaction_type_id,transaction_type_name,description from mtl_transaction_types
where transaction_type_name = 'Container Pack';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME
------------------- --------------------------------------------------------------------------------
DESCRIPTION
----------------------------------------------------------------------------------------------------
87 Container Pack
Container Pack
The transaction type id for Container Pack is 87
Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
transfer_lpn_id
)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Container Pack', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
SYSDATE,--last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
11822, --inventory item id
'FGI', --From subinventory code
1884, --organization id
10, --transaction quantity
10, --Primary quantity
87, --transaction type id
135); --transfer lpn id
commit;


select license_plate_number,lpn_content,subinventory_code,
locator_id, sealed_status
from wms_license_plate_numbers
where license_plate_number = 'LPN21A';


LICENSE_PLATE_NUMBER LPN_CONTEXT SUBINVENTO LOCATOR_ID SEALED_STATUS
------------------------------ ----------- ---------- ---------- -------------
LPN21A 1  FGI 1291  2
LPN content is 1 which means Resides in Inventory .

Scenario: 9: Container Unpack from LPN
Container Unpack from LPN
We are going to unpack LPN LPN21A which we had packed in scenario 8.

select transaction_type_id,transaction_type_name,description from mtl_transaction_types
where transaction_type_name = 'Container Unpack';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME
------------------- ------------------------------------------------------------------------
DESCRIPTION
------------------------------------------------------------------------------------
88 Container Unpack
Container Unpack

The transaction type id for Container UnPack is 88
Note that we are using column LPN_ID and NOT TRANSFER_LPN_ID as we are doing an unpack transaction.
Insert into mtl_transactions_interface(
transaction_uom,
transaction_date,
source_code,
source_line_id,
source_header_id,
process_flag ,
transaction_mode ,
lock_flag ,
locator_id ,
last_update_date ,
last_updated_by ,
creation_date ,
created_by ,
inventory_item_id ,
subinventory_code,
organization_id,
transaction_quantity ,
primary_quantity ,
transaction_type_id ,
lpn_id
)
VALUES (
'Ea', --transaction uom
SYSDATE, --transaction date
'Container UnPack', --source code
99, --source line id
99, --source header id
1, --process flag
3 , --transaction mode
2 , --lock flag
1291 , --locator id
SYSDATE , --last update date
0, --last updated by
SYSDATE , --creation date
0, --created by
11822, --inventory item id
'FGI', --From subinventory code
1884, --organization id
10, --transaction quantity
10, --Primary quantity
88, --transaction type id
135); --lpn id

commit;


select license_plate_number,lpn_content,subinventory_code,
locator_id, sealed_status
from wms_license_plate_numbers
where license_plate_number = 'LPN21A';


LICENSE_PLATE_NUMBER LPN_CONTEXT SUBINVENTO LOCATOR_ID SEALED_STATUS
------------------------------ ----------- ---------- ---------- -------------
LPN21A 5 2

You can see that LPN21A content is 5 Defined but not used and the subinventory and locator id is null in wms_license_plate_numbers table.

Scenario: 10: Direct Org Transfer (No Lot/Serial)
Direct-org transfer transaction open interface with minimum columns populated.

We have defined an item PISTON7 and we have assigned the item to M1 Seattle Manufacturing organization.
Below is the SQL statement to check organization id for organization M1 .

1)
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the SQL statement to check the inventory_item_id for out item PISTON7 . 
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'PISTON7'
and organization_id = 207;

INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
264814 PISTON7 207


3) Below is the SQL statement to find out the transaction_type_id for transaction type Account receipt. 
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'Direct Org Transfer';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
3 Direct Org Transfer Direct transfer between two orgs 3

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom, transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5, transfer_organization,
transfer_subinventory)
values (
'KM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
264814,
5,
'Ea',
SYSDATE,
3,
3,
13,
17347,
116,
'FGI',
'01',
'580',
'7740',
'0000',
'000',
'209',
'FGI');

COMMIT;


Scenario: 11: Intransit Org Transfer (No Lot/Serial)
Intransit transaction open interface for an item that is neither lot or serial controlled.

We have defined an item PISTON7 and we have assigned the item to M1 Seattle Manufacturing organization.
Below is the SQL statement to get the organization id for organization M1 .

1)
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the SQL statement to check the inventory_item_id for our item PISTON7 . 
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'PISTON7'
and organization_id = 207;

INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
264814 PISTON7 207


3) Below is the SQL statement to find out the transaction_type_id for transaction type Account receipt. 
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'Intransit Shipment';

TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
21 Intransit Shipment Ship to intransit sourced from Invnetory 21

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5,
transfer_organization,
transfer_subinventory)
values (
'KM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
264814,
-5,
'Ea',
SYSDATE,
21,
21,
13,
17347,
120,
'FGI',
'01',
'580',
'7740',
'0000',
'000',
'209',
'FGI');

COMMIT;


Scenario: 12: Sales Order Issue (No Lot/Serial)
Sales order transaction open interface for an item that is neither lot or serial controlled.

We have defined an assembly WAKEBOARD and we have assigned the item to the M1 Seattle Manufacturing organization. The assembly has components L BOOT and R BOOT.

The setup for this process is as follows:
1. Create Sales Order
2. Release Sales Order
3. Transact the Move Order


1) Below is the SQL statement to get the organization id for organization M1.
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the SQL statement to check the inventory_item_id for out item PISTON7 . 
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'WAKEBOARD'
and organization_id = 207;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
1022349 WAKEBOARD 207


3) Below is the SQL statement to find out the transaction_type_id for transaction type Account receipt. 
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'Sales order issue';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
33 Sales order issue Ship confirm external sales order 1

4) Below is the SQL statement to find out the transaction_source_id from the mtl_sales_orders table where the transaction_source_id is the sales order id:
select sales_order_id from mtl_sales_orders
where segment1 = '62034';


SALES_ORDER_ID
------------------
900350


6) Below is the SQL statement to find the source_header_id and transaction_reference:
select header_id from oe_order_headers_all
where order_number = '62034';

HEADER_ID
------------------
120601

7)  Below is the SQL statement to find the source_line_id and trx_source_line_id:
select line_id from oe_order_lines_all
where header_id = 120601;

LINE_ID
----------------------------
218694

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5,
transaction_source_id,
trx_source_line_id,
acct_period_id,
transaction_reference)
values (
'ORDER ENTRY',
120601,
218694,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
1022349,
-5,
'Ea',
SYSDATE,
33,
1,
2,
17347,
147,
'FGI',
'01',
'580',
'7740',
'0000',
'000',
900350,
218694,
246356,
120601);

COMMIT;


Scenario: 13: Account Issue (No Lot/Serial)
Account issue transaction for an item that is neither Lot or Serial controlled.

We have defined an item PISTON3 and we have assigned the item to M1 Seattle Manufacturing organization.
Below is the SQL statement to get the organization id for organization M1 .
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207

Below is the SQL statement to check the inventory_item_id for out item PISTON:
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'PISTON3'
and organization_id = 207;


INVENTORY_ITEM_ID segment1 ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
262810 PISTON3 207

Below is the SQL statement to find out the transaction_type_id for transaction type Account issue:
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'Account issue';

TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRX_ACTION_ID
------------------- --------------------- ------------------------------- -------------
1 Account issue Issue material against accounts 1

SELECT C.DISTRIBUTION_ACCOUNT_ID, C.* FROM MTL_MATERIAL_TRANSACTIONS C
WHERE INVENTORY_ITEM_ID = 262810;




Below is the complete SQL statement to do the account issue. The values populated are based on the values obtained from the above SQL statements:
insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5)
values (
'KM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
262810,
-15,
'Ea',
SYSDATE,
1,
1,
3,
17347,
116,
'FGI',
'01',
'580',
'7740',
'0000',
'000');

COMMIT;


Scenario: 14: Account Receipt (No Lot/Serial)
Account receipt transaction open interface for an item that is neither Lot or Serial controlled.

We have defined an item PISTON and have assigned the item to M1 Seattle Manufacturing organization.

1) Below is the SQL statement to get the organization id for organization M1 .
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the sql to check the inventory_item_id for out item PISTON . 
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'PISTON3'
and organization_id = 207;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
262810 PISTON3 207


3) Below is the SQL statement to find the transaction_type_id for transaction type Account receipt:
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'Account receipt';

TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
40 Account receipt Receive material against account 27

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5)
values
(
'KM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
262810,
15,
'Ea',
SYSDATE,
40,
27,
3,
17347,
116,
'FGI',
'01',
'580',
'7740',
'0000',
'000');

COMMIT;


Scenario: 15: WIP Assembly Return (No Lot/Serial)
WIP assembly return transaction open interface for an item that is neither Lot or Serial controlled.

We have defined an assembly WAKEBOARD and we have assigned the item to M1 Seattle Manufacturing organization. The assembly has components L BOOT and R BOOT.
1) Below is the SQL statement to check organization id for organization M1 .
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the SQL statement to check the inventory_item_id for out item PISTON7 .
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'WAKEBOARD'
and organization_id = 207;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
264815 WAKEBOARD 207


3) Below is the SQL statement to find out the transaction_type_id for transaction type Account receipt. 
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'WIP Completion Return';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
17 WIP Completion Return WIP Completion Return 32

4) Below is the SQL statement to find out the transaction_source_id. For a WIP Issue the transaction_source_id is the wip_entity value. Choose the highest value (most current WIP job):
select wip_entity_id from wip_entities
where primary_item_id like '264815';


wip_entity
---------------
730992

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5 ,
transaction_source_id,
wip_entity_type,
operation_seq_num)
values (
'CM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
264816,
5,
'Ea',
SYSDATE,
43,
27,
5,
17347,
134,
'FGI',
'01',
'580',
'7740',
'0000',
'000',
730992,
1,
10 );

COMMIT;


Scenario: 16: WIP Component Return (No Lot/Serial)
WIP component return transaction open interface for an item that is neither Lot or Serial controlled.

We have defined an assembly WAKEBOARD and we have assigned the item to M1 Seattle Manufacturing organization. The assembly has components L BOOT and R BOOT.
1) Below is the SQL statement to get the organization id for organization M1:
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the SQL statement to check the inventory_item_id for out item PISTON7:
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'L BOOT'
and organization_id = 207;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
264816 L BOOT 207


3) Below is the SQL statement to find out the transaction_type_id for transaction type Account receipt:
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'WIP Issue';

TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
43 WIP Return WIP Return 27

4) Below is the SQL statement to find out the transaction_source_id. For a WIP Issue the transaction_source_id is the wip_entity value. Choose the highest value (most current WIP job).
select wip_entity_id from wip_entities
where primary_item_id like '264816';


wip_entity
---------------
730988

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5 ,
transaction_source_id,
wip_entity_type,
operation_seq_num)
values (
'CM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
264816,
5,
'Ea',
SYSDATE,
43,
27,
5,
17347,
134,
'FGI',
'01',
'580',
'7740',
'0000',
'000',
730988,
1 ,
10 );

COMMIT;


Scenario: 17: WIP Assembly Completion (No Lot/Serial)
WIP assembly completion transaction open interface for an item that is neither Lot or Serial controlled.

We have defined an assembly WAKEBOARD and we have assigned the item to M1 Seattle Manufacturing organization. The assembly has components L BOOT and R BOOT.
1) Below is the sql to check organization id for organization M1:
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the SQL statement to check the inventory_item_id for out item PISTON7 . 
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'WAKEBOARD'
and organization_id = 207;

INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
264815 WAKEBOARD 207


3) Below is the SQL statement to find out the transaction_type_id for transaction type Account receipt:
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'WIP Completion';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
44 WIP Completion WIP Completion 31

4) Below is the SQL statement to find out the transaction_source_id. For a WIP Issue the transaction_source_id is the wip_entity value. Choose the highest value (most current WIP job).
select wip_entity_id from wip_entities
where primary_item_id like '264816';

wip_entity
---------------
730991

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5 ,
transaction_source_id,
wip_entity_type,
operation_seq_num,
final_completion_flag)
values (
'CM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
264815,
5,
'Ea',
SYSDATE,
44,
31,
5,
17347,
134,
'FGI',
'01',
'580',
'7740',
'0000',
'000',
730991,
1 ,
10,
'N' );

COMMIT;


Scenario: 18: WIP Component Issue
WIP component issue transaction open interface for an item that is neither Lot or Serial controlled.

We have defined an assembly WAKEBOARD and we have assigned the item to M1 Seattle Manufacturing organization. The assembly has components L BOOT and R BOOT.
1) Below is the sql to check organization id for organization M1:
select organization_code,organization_id from org_organization_definitions
where organization_code = 'M1';

ORG ORGANIZATION_ID
--- ---------------
M1 207


2) Below is the SQL statement  to check the inventory_item_id for out item PISTON7: 
select inventory_item_id , segment1 , organization_id from mtl_system_items_b
where segment1 = 'L BOOT'
and organization_id = 207;


INVENTORY_ITEM_ID SEGMENT ORGANIZATION_ID
----------------- ---------------------------------------- ---------------
264816 L BOOT 207


3) Below is the SQL statement to find out the transaction_type_id for transaction type Account receipt:
select transaction_type_id,transaction_type_name,description, transaction_action_id
from mtl_transaction_types
where transaction_type_name = 'WIP Issue';


TRANSACTION_TYPE_ID TRANSACTION_TYPE_NAME DESCRIPTION TRANSACTION_ACTION_ID
-------------------- ---------------------- -------------- ---------------------
35 WIP Issue WIP Issue 1

4) Below is the SQL statement to find out the transaction_source_id. For a WIP Issue the transaction_source_id is the wip_entity value.
select wip_entity_id from wip_entities
where primary_item_id like '264816';

wip_entity
730986

insert into mtl_transactions_interface
(source_code,
source_header_id,
source_line_id,
process_flag,
lock_flag,
transaction_mode,
last_update_date,
last_updated_by,
creation_date,
created_by,
organization_id,
inventory_item_id,
transaction_quantity,
transaction_uom,
transaction_date,
transaction_type_id,
transaction_action_id,
transaction_source_type_id,
distribution_account_id,
transaction_interface_id,
subinventory_code,
dsp_segment1,
dsp_segment2,
dsp_segment3,
dsp_segment4,
dsp_segment5 ,
transaction_source_id,
wip_entity_type,
operation_seq_num)
values (
'CM',
1,
1,
1,
2,
3,
SYSDATE,
999,
SYSDATE,
999,
207,
264816,
-5,
'Ea',
SYSDATE,
35,
1,
5,
17347,
133,
'FGI',
'01',
'580',
'7740',
'0000',
'000',
730986,
1 ,
10 );

COMMIT;

  
Frequently Asked Questions (FAQ):
a. How do I know what error has occurred?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ans .  The process_flag in mtl_transactions_interface will be 3. The Error_Code and Error Explanation
columns will usually explain why the error has occurred.
The process flag indicates whether the row has been processed by the concurrent manager.
          The process flag status codes are:
               1 = Pending
               2 = Running
               3 = Error

b. What things should I check if I am getting errors?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Ans. First check if you are populating the correct values in all the fields then check if there are any mandatory  columns. Often people forget to populate the mandatory values and the transaction import fails.
Check if the item is transactable or not by going to theorganization items screen.
Also check for invalid objects
Select object_name,object_type from all_objects where status = 'INVALID';

If any invalid objects exist recompile them and retest the transactions import.

If you are using serial numbers check the following:
The MTL_TRANSACTIONS_INTERFACE.TRANSACTION_QUANTITY will either match
the sum of the records in the
MTL_SERIAL_NUMBERS_INTERFACE.TRANSACTION_INTERFACE_ID for a specific
MTL_TRANSACTIONS_INTERFACE.TRANSACTION_INTERFACE_ID, or the 
FM_SERIAL_NUMBER and TO_SERIAL_NUMBER will have the number range to match the MTL_TRANSACTIONS_INTERFACE.TRANSACTION_QUANTITY for a particular record.
If you are using Lot numbers check the following:
Check to ensure that for a specific
MTL_TRANSACTIONS_INTERFACE.TRANSACTION_INTERFACE_ID there is a corresponding record in the MTL_TRANSACTION_LOTS_INTERFACE table with a matching MTL_TRANSACTION_LOTS_INTERFACE.TRANSACTION_INTERFACE_ID.
c. How do I resubmit the errored transactions?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Resubmission through the Application

Navigation Inventory:Transactions >Transaction Open Interface
Click in the check box under the "Submit" column then Save
2. Resubmission through SQL*Plus:

Update MTL_TRANSACTIONS_INTERFACE
    Set     PROCESS_FLAG = 1,
            LOCK_FLAG = 2,
            TRANSACTION_MODE = 3,
            VALIDATION_REQUIRED = 1,
            ERROR_CODE = NULL,
            ERROR_EXPLANATION = NULL
    Where   PROCESS_FLAG IN (1,3);



d. How to dig into errors more (Debug)?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Below are some documents that support requires when a customer creates a service request for MTI
related issues.
A.Getting log files that give more details to where the error is happening.
1.Please enable inventory debug as per Note.148651.1. The details follow for your convenience:
  To generate a log file, set profile values for the user performing the transaction.
  a) These directories must be write enabled by the DBA;
  SELECT value
  FROM v$PARAMETER
  WHERE name = 'utl_file_dir';

  b) Set the following profile values
  INV: Debug Trace = YES
  INV: Debug File = [directory value from above query]/logfilename.log  (make sure that you have write permission for this file and directory)
  INV: Debug Level = 11


2. Go to System administration > Concurrent > Program > define.
   Query on short name 'INCTCM' or program name 'Process transaction interface'.
   Check enable trace and save.

3. Go to System administration > Concurrent > Program > define.
   Query on short name 'INCTCW' or program name 'Inventory transaction worker'.
   Check enable trace and save.
4. Run the inventory worker.
5. Provide the resulting worker log and inventory debug IF ONE IS CREATED.
B. Collecting organization information.
See Note:190893.1 Oracle Inventory Support Service Request Instrumentation for Organization Setup - for inventory (INVCt115h.sql)
C. Collecting Item information.
See Note: 223702.1 Oracle Inventory Item Setup Data Collection Tool - for the related item
(INVItemCt115h.sql )
D. See Note: 209928.1 (INVMTI115h.sql). This assists in diagnosing and resolving pending transactions in Release 11i from the MTL_TRANSACTIONS_INTERFACE table which could prevent further processing of Inventory records. Identifies records that are in error or have failed validation and provides some solutions.
E. See Note: 204577.1 (INVMMTT115h.sql). This assists in diagnosing and resolving pending transactions in Release 11i from the MTL_MATERIAL_TRANSACTIONS_TEMP
F. Provide file versions for the following files
All errors will require the transaction manager file versions. 
To get these versions, please run the following query:
IN SQL:
set serveroutput on;
execute
fnd_aolj_util.getClassVersionfromDB('oracle.apps.inv.transaction.server.BaseTransaction');
execute
fnd_aolj_util.getClassVersionfromDB('oracle.apps.inv.transaction.server.QtyManager');
execute
fnd_aolj_util.getClassVersionfromDB('oracle.apps.inv.transaction.server.LotTrxManager');
execute
fnd_aolj_util.getClassVersionfromDB('oracle.apps.inv.transaction.server.SerTrxManager');
execute
fnd_aolj_util.getclassversionfromdb('oracle.apps.inv.keyentities.SerialNumber');

IN UNIX:
$ strings -a $AU_TOP/resource/INVSLENT.pll |grep '$Header'
$ strings -a $INV_TOP/bin/INVLIBR |grep inltis.ppc
$ strings -a $INV_TOP/bin/INVLIBR |grep inlmsn.ppc
$ strings -a $INV_TOP/lib/libinv.a |grep inumer.ppc
$ strings -a $INV_TOP/lib/libinv.a |grep inutsu.ppc

INVTXMGB.pls
INVTXGGB.pls
TrxProcessor.java
BaseTransaction.java
inltev.ppc
inctcm.ppc
INVTXMGB.pls
INVTXMGS.pls
SerialNumber.java
SerTrxManager.java
$AU_TOP/resource/INVSLENT.pll
inltis.ppc inumer.ppc inutsu.ppc inlmsn.ppc