Distributed WMS Integrations Technical Brief
Distributed WMS Integrations Technical Brief
System
(Integration)
An Oracle Technical
Brief April 2009
TABLE OF CONTENTS
1 Data Integration..........................................................................................................3
1.1 SETUP ODI TOPOLOGY ...................................................................................................... 3
1.1.1 Topology .................................................................................................................... 8
1.1.2 Importing Topology ................................................................................................... 9
1.2 SETUP WORK REPOSITORIES ........................................................................................... 11
1.2.1 Importing Work Repository/Models......................................................................... 14
1.2.2 Creating ODI Interface............................................................................................ 15
1.2.3 Creating Packages and Scenarios ........................................................................... 18
1.2.4 Journalizing ............................................................................................................. 19
2 Business Models ......................................................................................................25
2.1 INBOUND – PURCHASE ORDER ........................................................................................ 26
2.1.1 Interfaces ................................................................................................................. 26
2.1.2 Packages .................................................................................................................. 32
2.2 INBOUND – RECEIPT SYNCHRONIZATION ........................................................................ 33
2.2.1 Interfaces ................................................................................................................. 33
2.2.2 Procedures............................................................................................................... 39
2.2.3 Packages .................................................................................................................. 40
2.3 ADJUSTMENT – TRANSACTIONS SYNCHRONIZATION ...................................................... 42
2.3.1 Interfaces ................................................................................................................. 42
2.3.2 Procedures............................................................................................................... 47
2.3.3 Packages .................................................................................................................. 48
2.4 OUTBOUND – SHIPMENT REQUEST .................................................................................. 49
2.4.1 Interfaces ................................................................................................................. 49
2.4.2 Packages .................................................................................................................. 57
2.5 OUTBOUND – SHIPMENT CONFIRMATION........................................................................ 57
2.5.1 Interfaces ................................................................................................................. 58
2.5.2 Procedures............................................................................................................... 60
2.5.3 Packages .................................................................................................................. 62
2.6 INBOUND – RETURN/CORRECT SYNCHRONIZATION ........................................................ 64
2.6.1 Interfaces ................................................................................................................. 64
2.6.2 Procedures............................................................................................................... 69
2.6.3 Packages .................................................................................................................. 70
1 Data Integration
In order to make the distributed instance aware of transactions to be executed and for the
same transactions to be played back on the ERP instance, an integration layer is required to
provide logic for
1. Synchronizing inbound documents like Purchase Order, RMA from ERP to the
distributed instance
2. Synchronizing inbound transactions like Receipts, Inspections, Put away, Corrections,
Returns, Transfers from the distributed instance to ERP
3. Synchronizing adjustment transactions like Miscellaneous/Account Issues/Receipts,
Subinventory Transfers, Cycle & Physical Counts from the distributed instance to
ERP
4. Synchronizing the shipment advice from ERP to the distributed instance
5. Synchronizing the outbound transactions like shipping etc. from the distributed
instance to ERP instance
Oracle Data Integrator (ODI) can be used for this purpose as:
• ODI is designed for migrating and transforming data across database instances
• ODI has the ability to migrate data across different database technologies. This
means that the distributed instance and ERP do not need to be of identical
Applications version or RDBMS release.
• ODI has the ability to directly invoke web services if the customer wants to bypass the
open interface and perform the transactions in real time.
ODI has a Journalizing capability that discovers which transaction records are new. This
needs to be used to facilitate incremental synchronization.
3. If you have any exported zip files for the topology see section 1.1.2. In Physical
Architecture add data servers. This involves providing a JDBC connection string to
the instance of interest. We will create Data Servers for ERP and the Distributed
instance.
4. Next define the physical schemas in this data server that needs to be accessed (read
from or write to). E.g., the APPS schema or a specific product schema like INV or
WSH. If you want to use the Reverse Engineering method in ODI to automatically
discover table columns then it is suggested to go down to the product schema.
5. Next define a logical schema name for each physical schema. The logical schema
needs to be used in the Designer to create data flows.
1.1.1 Topology
Create 2 data servers with Topology Manager. One points to the distributed instance and
another one points to ERP instance. For each data server, add the physical schemas as
mentioned in the table below.
In ODI, CDC common infrastructure for the data server is installed in the Work Schema
for the physical schema that is flagged as Default for this data server. Therefore, if user
needs to have CDC infrastructure on different physical schemas, please create different
data server for each physical schema.
APPLSYS SAL_FND
APPS SAL_APPS
PO SAL_PO
OE SAL_OE
INV SAL_INV
WSH SAL_WSH
5. In the left-hand panel, expand Technologies > Oracle, should see 2 data servers
6. Change the JDBC connection of the ERP, ERP_PO, SAL to coresponding ERP and SAL
instance
1. Run Designer and give connection information to the master repository (as done
previously). Pick a meaningful repository name.
2. If you have any exported zip files for the models and/or interfaces see section 1.1.4. In
models, insert an ODI model. This involves providing a logical schema name defined in
the topology manager to make a connection to the instance of interest.
5. After reverse engineering the tables, you will see the data stores being created under
Models tab.
5. In the left-hand panel, under Models tab, you will see something like this:
1. In the ODI Designer, select the Project tab. If there is no project, create a new one.
Right click Interface to select New Interface. Enter a name:
2. Click on Diagram and add source and target tables. Define mapping for the target
columns.
3. Go back to Project tab, in order to execute the above we have to associate some
knowledge modules. Right click and import the included knowledge modules: LKM SQL
to SQL and IKM SQL Incremental Update, then dragged them to the new project.
4. Then go back to the Flow tab of the Interface diagram and click the red cross for both
source and target to select these default knowledge modules:
5. After executing, open the session window by clicking on the operator icon above the
navigator.
6. Check the target database to confirm that new inserts/updates have been performed as
expected.
Right click Packages in the project and select Insert Package. In the diagram tab, you can drag
and drop an interface to create an interface task or use the Toolbox icon to add miscellaneous
built-in commands like InvokeWebService or OSCommand.
1.2.4 Journalizing
Journalizing is the capability to ask ODI to extract new data incrementally with minimal set up
and changes to your interfaces. Follow the basics steps for setting up a source table for
journalizing.
First check to see if you have Journalization Knowledge Module set up. By default there is none.
There are several Journalization knowledge modules to choose from. The simple KM places
simple database trigger on the source table to keep track of the keys of newly added records.
The more complex KMs use Oracle CDC (Change Data Capture) to find out which records are
new. Import ‘JKM Oracle Simple’ KM into the project.
1. In the Model move to the Journalizing tab and choose the Journalizing Mode.
• Double-click Model - Journalizing tab - Journalizing Mode, click radio button there
for Simple or Consistent Set
5. After journalization and key is set, drill down in the Models panel to the Datastores of the
journalized Model.
6. Add the Datastore(s) to CDC.
• Right click on the Model, click on Changed Data Capture and then on the Add to
CDC.
7. For Consistent Set Journalization, the order of those Datastores must be set in the Model
on the Journalized Tables tab.
8. Add the subscriber(s) to CDC.
• Right click on the Model - Changed Data Capture - Subscriber - Subscribe...
• Add subscriber to the text box on upper right and click on arrow button to add to
list click OK.
• The Execution pop up window shows and click OK button to execute subscriber
addition.
• The Execution pop up window shows and click OK button to execute the journal
startup.
2 Business Models
There are various key business objects that need to be mapped using the ODI technology and
synchronized between the Host system and the Distributed system or vice-versa.
• Source Entities
• Target Entities
• Joins
• Filters
• Mappings
• Additional Information
The involved tables from the ERP instance are PO_HEADERS_ALL and PO_LINES_ALL that
stores information about the purchase order and lines. The objective is to use ODI to migrate this
information to the distributed instance. The way to do is to populate the corresponding interface
tables on the distributed instance and subsequently run the concurrent program to import the
purchase orders in the SAL. The following section talks about the ODI interfaces and mappings
created to load the PO_HEADERS_INTERFACE, PO_LINES_INTERFACE and
PO_DISTRIBUTIONS_INTERFACE on the SAL instance.
2.1.1 Interfaces
Set up the following interfaces:
• Load PO Headers Interface
• Load PO Lines Interface
• Load PO distribuitions Interface
PO_HEADERS_ALL as PO_HEADERS_ALL
PO_VENDOR_SITES_ALL as PO_VENDOR_SITES_ALL
PO_VENDORS as PO_VENDORS
HR_ALL_LOCATIONS as HR_SHIP_TO_LOCATIONS_ERP
HR_ALL_LOCATIONS as HR_BILL_TO_LOCATIONS_ERP
PO_BUYERS_VAL_V as PO_BUYERS_VAL_V
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
HR_ALL_LOCATIONS on SAL as HR_SHIP_TO_LOCATIONS_SAL
HR_ALL_LOCATIONS on SAL as HR_BILL_TO_LOCATIONS_SAL
MTL_PARAMETERS_SAL as MTL_PARAMETERS_SAL
• Target Tables
PO_HEADERS_INTERFACE
• Joins
PO_HEADERS_ALL.VENDOR_SITE_ID=PO_VENDOR_SITES_ALL.VENDOR_SITE_I
D
Join between PO_HEADERS_ALL and PO_VENDORS
PO_HEADERS_ALL.VENDOR_ID=PO_VENDORS.VENDOR_ID
Join between PO_HEADERS_ALL and HR_SHIP_TO_LOCATIONS_ERP
PO_HEADERS_ALL.SHIP_TO_LOCATION_ID=HR_SHIP_TO_LOCATIONS_ERP.LOC
ATION_ID
Join between PO_HEADERS_ALL and HR_BILL_TO_LOCATIONS_ERP
PO_HEADERS_ALL.BILL_TO_LOCATION_ID=HR_BILL_TO_LOCATIONS_ERP.LOCA
TION_ID
Join between PO_HEADERS_ALL and MTL_PARAMETERS_ERP
PO_HEADERS_ALL.ORG_ID=MTL_PARAMETERS_ERP.ORGANIZATION_ID
Join between HR_SHIP_TO_LOCATIONS_ERP and
HR_SHIP_TO_LOCATIONS_SAL
HR_SHIP_TO_LOCATIONS_ERP.LOCATION_CODE=HR_SHIP_TO_LOCATIONS_SA
L.LOCATION_CODE
Join between HR_BILL_TO_LOCATIONS_ERP and
HR_BILL_TO_LOCATIONS_SAL
HR_BILL_TO_LOCATIONS_ERP.LOCATION_CODE=HR_BILL_TO_LOCATIONS_SAL
.LOCATION_CODE
Join between MTL_PARAMETERS_ERP and MTL_PARAMETERS_SAL
MTL_PARAMETERS_ERP.ORGANIZATION_CODE=MTL_PARAMETERS_SAL.ORGA
NIZATION_CODE
• Filters
PO_HEADERS_ALL.AUTHORIZATION_STATUS='APPROVED' AND
PO_HEADERS_ALL.APPROVED_FLAG='Y'
• Variables
p_po_number
Note: Before executing the package to import the PO from the host ERP instance to the
SAL instance, set this variable to the PO number that needs to be imported
• Mappings
INTERFACE_HEADER_ID PO_HEADERS_TEMP.INTERFACE_HEADER_ID
BATCH_ID PO_HEADERS_TEMP.INTERFACE_HEADER_ID
PROCESS_CODE 'PENDING'
ACTION 'ORIGINAL'
ORG_ID MTL_PARAMETERS_SAL.ORGANIZATION_ID
DOCUMENT_TYPE_CODE 'STANDARD'
CURRENCY_CODE PO_HEADERS_ALL.CURRENCY_CODE
VENDOR_DOC_NUM PO_HEADERS_ALL.SEGMENT1
ATTRIBUTE1 PO_HEADERS_ALL.ATTRIBUTE1
ATTRIBUTE15 PO_HEADERS_ALL.ATTRIBUTE15
CREATION_DATE SYSDATE
LAST_UPDATE_DATE SYSDATE
APPROVAL_STATUS 'APPROVED'
VENDOR_SITE_CODE PO_VENDOR_SITES_ALL.VENDOR_SITE_CODE
DOCUMENT_NUM PO_HEADERS_ALL.SEGMENT1
AGENT_NAME PO_BUYERS_VAL_V.FULL_NAME
VENDOR_NAME PO_VENDORS.VENDOR_NAME
SHIP_TO_LOCATION_ID HR_SHIP_TO_LOCATIONS_SAL.LOCATION_ID
BILL_TO_LOCATION_ID HR_BILL_TO_LOCATIONS_SAL.LOCATION_ID
APPROVED_DATE PO_HEADERS_ALL.APPROVED_DATE
NOTE_TO_RECEIVER PO_HEADERS_ALL.NOTE_TO_RECEIVER
COMMENTS PO_HEADERS_ALL.COMMENTS
ATTRIBUTE_CATEGORY PO_HEADERS_ALL.ATTRIBUTE_CATEGORY
ATTRIBUTE2 PO_HEADERS_ALL.ATTRIBUTE2
ATTRIBUTE3 PO_HEADERS_ALL.ATTRIBUTE3
ATTRIBUTE4 PO_HEADERS_ALL.ATTRIBUTE4
ATTRIBUTE5 PO_HEADERS_ALL.ATTRIBUTE5
ATTRIBUTE6 PO_HEADERS_ALL.ATTRIBUTE6
ATTRIBUTE7 PO_HEADERS_ALL.ATTRIBUTE7
ATTRIBUTE8 PO_HEADERS_ALL.ATTRIBUTE8
ATTRIBUTE9 PO_HEADERS_ALL.ATTRIBUTE9
ATTRIBUTE10 PO_HEADERS_ALL.ATTRIBUTE10
ATTRIBUTE11 PO_HEADERS_ALL.ATTRIBUTE11
ATTRIBUTE12 PO_HEADERS_ALL.ATTRIBUTE12
ATTRIBUTE13 PO_HEADERS_ALL.ATTRIBUTE13
ATTRIBUTE14 PO_HEADERS_ALL.ATTRIBUTE14
REFERENCE_NUM PO_HEADERS_ALL.SEGMENT1
RATE_TYPE PO_HEADERS_ALL.RATE_TYPE
RATE_DATE PO_HEADERS_ALL.RATE_DATE
RATE PO_HEADERS_ALL.RATE
NOTE_TO_VENDOR PO_HEADERS_ALL.NOTE_TO_VENDOR
• Additional Information
N/A
PO_HEADERS_ALL as PO_HEADERS_ALL
PO_LINES_ALL as PO_LINES_ALL
PO_LINE_TYPES_TL as PO_LINE_TYPES_TL
HR_ALL_LOCATIONS on ERP as HR_SHIP_TO_LOCATIONS_ERP
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
HR_ALL_LOCATIONS on SAL as HR_SHIP_TO_LOCATIONS_SAL
MTL_PARAMETERS on SAL as MTL_PARAMETERS_SAL
MTL_SYSTEM_ITEMS_B_KFV as MTL_SYSTEM_ITEMS_B_KFV
PO_HEADERS_ALL as PO_HEADERS_ALL
PO_LINES_ALL as PO_LINES_ALL
• Target Tables
PO_LINES_INTERFACE
• Joins
PO_HEADERS_ALL.VENDOR_SITE_ID=PO_VENDOR_SITES_ALL.VENDOR_SITE_I
D
Join between PO_HEADERS_ALL and PO_VENDORS
PO_HEADERS_ALL.VENDOR_ID=PO_VENDORS.VENDOR_ID
Join between PO_HEADERS_ALL and HR_SHIP_TO_LOCATIONS_ERP
PO_HEADERS_ALL.SHIP_TO_LOCATION_ID=HR_SHIP_TO_LOCATIONS_ERP.LOC
ATION_ID
Join between PO_HEADERS_ALL and HR_BILL_TO_LOCATIONS_ERP
PO_HEADERS_ALL.BILL_TO_LOCATION_ID=HR_BILL_TO_LOCATIONS_ERP.LOCA
TION_ID
Join between PO_HEADERS_ALL and MTL_PARAMETERS_ERP
PO_HEADERS_ALL.ORG_ID=MTL_PARAMETERS_ERP.ORGANIZATION_ID
Join between HR_SHIP_TO_LOCATIONS_ERP and
HR_SHIP_TO_LOCATIONS_SAL
HR_SHIP_TO_LOCATIONS_ERP.LOCATION_CODE=HR_SHIP_TO_LOCATIONS_SA
L.LOCATION_CODE
Join between HR_BILL_TO_LOCATIONS_ERP and
HR_BILL_TO_LOCATIONS_SAL
HR_BILL_TO_LOCATIONS_ERP.LOCATION_CODE=HR_BILL_TO_LOCATIONS_SAL
.LOCATION_CODE
Join between MTL_PARAMETERS_ERP and MTL_PARAMETERS_SAL
MTL_PARAMETERS_ERP.ORGANIZATION_CODE=MTL_PARAMETERS_SAL.ORGA
NIZATION_CODE
• Filters
PO_LINE_TYPES_TL.LANGUAGE='US'
• Variables
p_po_number
Note: Before executing the package to import the PO from the host ERP instance to the
SAL instance, set this variable to the PO number that needs to be imported
• Mappings
INTERFACE_LINE_ID <%=snpRef.getObjectName("L","PO_LINES_INTE
RFACE_S","SAL_PO","W")%>.nextval
INTERFACE_HEADER_ID PO_HEADERS_TEMP.INTERFACE_HEADER_ID
QUANTITY PO_LINES_ALL.QUANTITY
UNIT_PRICE PO_LINES_ALL.UNIT_PRICE
SHIP_TO_ORGANIZATION_ID MTL_PARAMETERS_SAL.ORGANIZATION_ID
SHIP_TO_LOCATION_ID HR_SHIP_TO_LOCATIONS_SAL.LOCATION_ID
NEED_BY_DATE SYSDATE
LINE_ATTRIBUTE1 PO_LINES_ALL.ATTRIBUTE1
ORGANIZATION_ID MTL_PARAMETERS_SAL.ORGANIZATION_ID
CREATION_DATE SYSDATE
LINE_NUM PO_LINES_ALL.LINE_NUM
DOCUMENT_NUM PO_HEADERS_ALL.SEGMENT1
RECEIVING_ROUTING_ID 1
LINE_ATTRIBUTE_CATEGOR PO_LINES_ALL.ATTRIBUTE_CATEGORY
Y_LINES
LINE_ATTRIBUTE2 PO_LINES_ALL.ATTRIBUTE2
LINE_ATTRIBUTE3 PO_LINES_ALL.ATTRIBUTE3
LINE_ATTRIBUTE4 PO_LINES_ALL.ATTRIBUTE4
LINE_ATTRIBUTE5 PO_LINES_ALL.ATTRIBUTE5
LINE_ATTRIBUTE6 PO_LINES_ALL.ATTRIBUTE6
LINE_ATTRIBUTE7 PO_LINES_ALL.ATTRIBUTE7
LINE_ATTRIBUTE8 PO_LINES_ALL.ATTRIBUTE8
LINE_ATTRIBUTE9 PO_LINES_ALL.ATTRIBUTE9
LINE_ATTRIBUTE10 PO_LINES_ALL.ATTRIBUTE10
LINE_ATTRIBUTE11 PO_LINES_ALL.ATTRIBUTE11
LINE_ATTRIBUTE12 PO_LINES_ALL.ATTRIBUTE12
LINE_ATTRIBUTE13 PO_LINES_ALL.ATTRIBUTE13
LINE_ATTRIBUTE14 PO_LINES_ALL.ATTRIBUTE14
LINE_ATTRIBUTE15 PO_LINES_ALL.ATTRIBUTE15
LINE_REFERENCE_NUM PO_LINES_ALL.LINE_REFERENCE_NUM
LINE_TYPE PO_LINE_TYPES_TL.LINE_TYPE
ITEM MTL_SYSTEM_ITEMS_B_KFV.CONCATENATED
_SEGMENTS
ITEM_DESCRIPTION MTL_SYSTEM_ITEMS_B_KFV.DESCRIPTION
UNIT_OF_MEASURE PO_LINES_ALL.UNIT_MEAS_LOOKUP_CODE
LIST_PRICE_PER_UNIT PO_LINES_ALL.LIST_PRICE_PER_UNIT
MARKET_PRICE PO_LINES_ALL.MARKET_PRICE
NOT_TO_EXCEED_PRICE PO_LINES_ALL.NOT_TO_EXCEED_PRICE
NEGOTIATED_BY_PREPARE PO_LINES_ALL.NEGOTIATED_BY_PREPARER_
R_FLAG FLAG
NOTE_TO_VENDOR PO_LINES_ALL.NOTE_TO_VENDOR
• Additional Information
N/A
• Target Tables
PO_DISTRIBUTIONS_INTERFACE
• Joins
N/A
• Filters
N/A
• Variables
N/A
• Mappings
INTERFACE_HEADER_ID PO_LINES_INTERFACE.INTERFACE_HEADER_ID
INTERFACE_LINE_ID PO_LINES_INTERFACE.INTERFACE_LINE_ID
INTERFACE_DISTRIBUTION <%=snpRef.getObjectName("L","PO_DISTRIBUTIO
_ID NS_INTERFACE_S","SAL_PO","W")%>.nextval
ORG_ID PO_LINES_INTERFACE.ORGANIZATION_ID
QUANTITY_ORDERED PO_LINES_INTERFACE.QUANTITY
CHARGE_ACCOUNT '01.1000'
CREATION_DATE SYSDATE
• Additional Information
N/A
2.1.2 Packages
Create a package with the following flow:
1. Load PO Headers Interface
2. Load PO Lines Interface
3. Load PO Distributions Interface
The view that fetches all the receipt/deliver transactions from the distributed instance(s) is
RCV_RECEIPT_CONFIRMATION_V, which acts as the main source for this data migration. The
rows from this view, which are not yet migrated, will be used to populate the receiving interface
tables (ROI) on the ERP instance. Once these interface tables are loaded, Receiving
Transaction Processor (RTP) can be run to complete the receipt/deliver transactions on the ERP
instance. The following section talks about the ODI interfaces and mappings created to load the
RCV_HEADERS_INTERFACE (RHI), RCV_TRANSACTIONS_INTERFACE (RTI),
MTL_TRANSACTION_LOTS_INTERFACE (MTLI), MTL_SERIAL_NUMBERS_INTERFACE
(MSNI) on the ERP instance.
2.2.1 Interfaces
Set up the following interfaces:
• Load Receiving Headers Interface (RHI)
• Load Receiving Lines Interface (RTI)
• Load Lots Interface (MTLI)
• Load Serials Interface (MSNI)
• Target Tables
RCV_HEADERS_INTERFACE (RHI)
• Joins
N/A
• Filters
RRCV.receipt = p_receipt_num
Note: This condition can be changed to fetch the records as desired by the user.
For ex, if the user wants to synchronize the receipt/deliver transactions between a
given date-range then this filter can be changed to:
However, please note that the synchronization should happen per receipt_num;
hence if a different extraction condition is used then the retrieved records need to
be looped through for all the distinct receipt_num and data should be transferred
for one receipt_num at a time.
FNU.user_name = p_user_name
This is the user with which you want to perform the transactions on the ERP
instance.
• Variables
p_receipt_num
p_user_name
Note: Before executing the package to import the transactions from the SAL instance to
the host ERP instance, set these variables to the receipt number (that needs to be
imported) and the user name (with which you want to perform the transactions).
• Mappings
HEADER_INTERFACE_ID RCV_HEADERS_INTERFACE_S.NEXTVAL
GROUP_ID RCV_INTERFACE_GROUPS_S.NEXTVAL
PROCESSING_STATUS_CODE 'PENDING'
RECEIPT_SOURCE_CODE 'VENDOR'
ASN_TYPE RRCV.SHIPMENT_TYPE
TRANSACTION_TYPE 'NEW'
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
SHIPMENT_NUM RRCV.SHIPMENT
RECEIPT_NUM RRCV.RECEIPT
VENDOR_NAME RRCV.VENDOR_NAME
SHIP_TO_ORGANIZATION_CODE RRCV.WAREHOUSE
SHIPPED_DATE RRCV.SHIPPED_DATE
EXPECTED_RECEIPT_DATE RRCV.TRANSACTION_DATE
Note: It is assumed that the following entities are same in both the distributed and the
ERP instance:
Organization Name
User Name
• Additional Information
N/A
• Target Tables
RCV_TRANSACTIONS_INTERFACE (RTI)
• Joins
RRCV.RECEIPT = RHI.RECEIPT_NUM
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and MTL_PARAMETERS
(MP)
RRCV.WAREHOUSE = MP.ORGANIZATION_CODE
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_SYSTEM_ITEMS_B_KFV (MSI)
RRCV.ITEM = MSI.CONCATENATED_SEGMENTS
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_ITEM_LOCATIONS_KFV (MIL)
RRCV.LOCATOR = MIL.CONCATENATED_SEGMENTS
Join between MTL_ITEM_LOCATIONS_KFV (MIL) and MTL_PARAMETERS (MP)
MIL.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV (MSI) and MTL_PARAMETERS (MP)
MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID
• Filters
RRCV.receipt = p_receipt_num
FNU.user_name = p_user_name
RHI.processing_status_code = 'PENDING'
• Variables
p_receipt_num
p_user_name
• Mappings
INTERFACE_TRANSACTION_ID RCV_TRANSACTIONS_INTERFACE_S.NEXTVAL
GROUP_ID RHI.GROUP_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
TRANSACTION_TYPE 'RECEIVE'
TRANSACTION_DATE RRCV.TRANSACTION_DATE
PROCESSING_STATUS_CODE 'PENDING'
PROCESSING_MODE_CODE 'BATCH'
TRANSACTION_STATUS_CODE 'PENDING'
QUANTITY RRCV.TRANSACTION_QUANTITY
UNIT_OF_MEASURE RRCV.TRANSACTION_UOM
INTERFACE_SOURCE_CODE 'RCV'
ITEM_ID MSI.INVENTORY_ITEM_ID
ITEM_DESCRIPTION MSI.DESCRIPTION
ITEM_REVISION RRCV.REVISION
AUTO_TRANSACT_CODE 'DELIVER'
PRIMARY_QUANTITY RRCV.PRIMARY_QUANTITY
PRIMARY_UNIT_OF_MEASURE RRCV.PRIMARY_UOM
RECEIPT_SOURCE_CODE 'VENDOR'
VENDOR_NAME RRCV.VENDOR_NAME
VENDOR_SITE_CODE RRCV.VENDOR_SITE_CODE
SOURCE_DOCUMENT_CODE 'PO'
SUBINVENTORY RRCV.SUBINVENTORY
LOCATOR_ID MIL.INVENTORY_LOCATION_ID
SHIPMENT_NUM RRCV.SHIPMENT
ATTRIBUTE10 RRCV.TRANSACTION_ID
HEADER_INTERFACE_ID RHI. HEADER_INTERFACE_ID
DOCUMENT_NUM RRCV.DOCUMENT_NUMBER
DOCUMENT_LINE_NUM RRCV.DOCUMENT_LINE_NUMBER
TO_ORGANIZATION_CODE RRCV.TRANSFER_WAREHOUSE
Organization Name
User Name
Item Name
Subinventory Name
Locator Name
• Additional Information
N/A
• Target Tables
MTL_TRANSACTION_LOTS_INTERFACE (MTLI)
• Joins
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_HEADERS_INTERFACE (RHI)
RRCV.RECEIPT = RHI.RECEIPT_NUM
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_TRANSACTIONS_INTERFACE (RTI)
(RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM) AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM
Join between RCV_HEADERS_INTERFACE (RHI) and
RCV_TRANSACTIONS_INTERFACE (RTI)
(RTI.GROUP_ID=RHI.GROUP_ID) AND
RTI.HEADER_INTERFACE_ID=RHI.HEADER_INTERFACE_ID
• Filters
RRCV.LOT IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name
• Variables
p_receipt_num
p_user_name
• Mappings
TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
LOT_NUMBER RRCV.LOT
TRANSACTION_QUANTITY RRCV.LOT_QUANTITY
PRIMARY_QUANTITY RRCV.LOT_QUANTITY
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID
• Additional Information
N/A
• Target Tables
MTL_SERIAL_NUMBERS_INTERFACE (MSNI)
• Joins
RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM AND
RRCV.TRANSACTION_TYPE = RTI.TRANSACTION_TYPE
• Filters
RRCV.SERIAL IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name
• Variables
p_receipt_num
p_user_name
• Mappings
TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
FM_SERIAL_NUMBER RRCV.SERIAL
TO_SERIAL_NUMBER RRCV.SERIAL
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID
• Additional Information
N/A
2.2.2 Procedures
Create the following procedure in ODI to update the receipt_extracted flag for the particular
receipt number, which has been successfully migrated from the Distributed Instance to the Host
Instance:
Update_RC
• Command on Source
Add the following pl/sql block:
x_return_status VARCHAR2(100);
x_msg_data VARCHAR2(500);
x_msg_count NUMBER;
l_ret_stauts VARCHAR2(100);
Begin
L_ret_status := INV_STANDALONE_SYNC_PUB.Update_RC_Extracted
(1.0,
, FND_API.G_FALSE
, FND_API.G_FALSE
, x_return_status
, x_msg_count
, x_msg_data
, to_char(trunc(sysdate), ‘DD-MON-YYYY’)
, to_char(trunc(sysdate+1), ‘DD-MON-YYYY’)
, NULL
, RRCV.warehouse
, NULL
, p_receipt_num
, NULL
, p_rc_extracted
, NULL
);
End;
• Variables
p_rc_extracted
2.2.3 Packages
Create a package with the following flow:
1. Load RCV Headers Interface
2. Load RCV Lines Interface
3. Load Lots Interface
4. Load Serials Interface
5. Update RC-Extracted Flag
The view that fetches all the adjustment transactions from the distributed instance(s) is
MTL_ADJUSTMENT_TXN_SYNC_V, which acts as the main source for this data migration. The
rows from this view, which are not yet migrated, will be used to populate the inventory interface
tables (TOI) on the ERP instance. Once these interface tables are loaded, Inventory Transaction
Worker can be run to complete the corresponding transactions on the ERP instance. The
following section talks about the ODI interfaces and mappings created to load the
MTL_TRANSACTIONS_INTERFACE (MTI), MTL_TRANSACTION_LOTS_INTERFACE (MTLI),
and MTL_SERIAL_NUMBERS_INTERFACE (MSNI) on the ERP instance.
2.3.1 Interfaces
Set up the following interfaces:
• Load Inventory Transactions Interface (MTI)
• Load Lots Interface (MTLI)
• Load Serials Interface (MSNI)
Please note that SUB.txt is a text file, which stores the transformation between the subinv
names in the source instance (the distributed instance) to the corresponding subinv
names in the target instance (host instance).
• Target Tables
MTL_TRANSACTIONS_INTERFACE (MTI)
• Joins
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_PARAMETERS (MP)
MATSV.WAREHOUSE = MP.ORGANIZATION_CODE
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_SYSTEM_ITEMS_B_KFV (MSI)
MATSV.ITEM = MSI.CONCATENATED_SEGMENTS
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_ITEM_LOCATIONS_KFV (MIL)
MATSV.LOCATOR = MIL.CONCATENATED_SEGMENTS
Join between MTL_ITEM_LOCATIONS_KFV (MIL) and MTL_PARAMETERS (MP)
MIL.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV (MSI) and MTL_PARAMETERS (MP)
MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and SINV (SUB.txt)
MATSV.SUBINVENTORY = SUB.SOURCE_SUB
• Filters
MATSV.TRANSACTION_NUMBER = p_txn_num
Note: This condition can be changed to fetch the records as desired by the user.
For ex, if the user wants to synchronize the adjustment transactions between a
given date-range then this filter can be changed to:
FNU.USER_NAME = p_user_name
This is the user with which you want to perform the transactions on the ERP
instance.
• Variables
p_txn_num
p_user_name
p_dist_id
Note: Before executing the package to import the transactions from the SAL instance to
the host ERP instance, set these variables to the transaction number (that needs to be
imported), the user name (with which you want to perform the transactions) and the
distribution id (against which the transaction will be posted in the ERP instance).
• Mappings
TRANSACTION_HEADER_ID MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL
TRANSACTION_INTERFACE_ID MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL
SOURCE_CODE 'AdjTxnSync'
SOURCE_LINE_ID 1
SOURCE_HEADER_ID 1
PROCESS_FLAG 1
TRANSACTION_MODE 3
CREATED_BY FNU.USER_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
ORGANIZATION_ID MP.ORGANIZATION_ID
INVENTORY_ITEM_ID MSI.INVENTORY_ITEM_ID
REVISION MATSV.REVISION
SUBINVENTORY_CODE SINV.TARGET_SUB
LOCATOR_ID MIL.INVENTORY_LOCATION_ID
TRANSACTION_QUANTITY MATSV.TRANSACTION_QUANTITY
TRANSACTION_UOM MSI. PRIMARY_UOM_CODE
TRANSACTION_DATE MATSV.TRANSACTION_DATE
TRANSACTION_TYPE_ID decode (sign (MATSV.
TRANSACTION_QUANTITY, -1, 32, 1, 42)
TRANSACTION_SOURCE_TYPE_ID 13
DISTRIBUTION_ACCOUNT_ID p_dist_id
TRANSACTION_SOURCE_NAME MATSV.TRANSACTION_SOURCE
TRANSACTION_REFERENCE MATSV.TRANSACTION_NUMBER
TRANSACTION_ACTION_ID decode (sign (MATSV.
TRANSACTION_QUANTITY, -1, 1, 1, 27)
CREATION_DATE SYSDATE
Note: It is assumed that the following entities are same in both the distributed and the
ERP instance:
Organization Name
User Name
Item Name
Subinventory Name
Locator Name
• Additional Information
N/A
• Target Tables
MTL_TRANSACTION_LOTS_INTERFACE (MTLI)
• Joins
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_TRANSACTIONS_INTERFACE (MTI)
• Filters
MATSV.LOT IS NOT NULL
MATSV.TRANSACTION_NUMBER = p_txn_num
FNU.USER_NAME = p_user_name
• Variables
p_txn_num
p_user_name
• Mappings
TRANSACTION_INTERFACE_ID MTI.TRANSACTION_INTERFACE_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LOT_NUMBER RRCV.LOT
TRANSACTION_QUANTITY RRCV.LOT_QUANTITY
PROCESS_FLAG 1
SOURCE_CODE MTI.SOURCE_CODE
SOURCE_LINE_ID MTI.SOURCE_LINE_ID
SERIAL_TRANSACTION_TEMP_ID
Decode (MATSV.SERIAL_NUMBER, NULL,
MTI.TRANSACTION_INTERFACE_ID,
MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL)
• Additional Information
N/A
• Target Tables
MTL_SERIAL_NUMBERS_INTERFACE (MSNI)
• Joins
Join between MTL_ADJUSTMENT_TXN_SYNC _V (MATSV) and
MTL_TRANSACTIONS_INTERFACE (MTI)
• Filters
MATSV.SERIAL IS NOT NULL
MATSV.TRANSACTION_NUMBER = p_txn_num
FNU.USER_NAME = p_user_name
• Variables
p_receipt_num
p_user_name
• Mappings
• Additional Information
N/A
2.3.2 Procedures
Create the following procedure in ODI to update the transaction_extracted flag for the particular
transaction number, which has been successfully migrated from the Distributed Instance to the
Host Instance:
Update_Txn_Extracted
• Command on Source
Declare
x_return_status VARCHAR2(100);
x_msg_data VARCHAR2(500);
x_msg_count NUMBER;
l_ret_stauts VARCHAR2(100);
Begin
L_ret_status := INV_STANDALONE_SYNC_PUB.sync_adjustment_transactions
(1.0,
, FND_API.G_FALSE
, FND_API.G_FALSE
, x_return_status
, x_msg_count
, x_msg_data
, to_char(trunc(sysdate), ‘DD-MON-YYYY’)
, to_char(trunc(sysdate+1), ‘DD-MON-YYYY’)
, MATSV.warehouse
, MATSV.category
, NULL
, NULL
, NULL
, p_txn_num
, p_rc_extracted
);
End;
• Variables
p_txn_extracted
2.3.3 Packages
Create a package with the following flow:
1. Load Inventory Transactions Interface
2. Load Lots Interface
3. Load Serials Interface
6. Update Txn-Extracted Flag
2.4.1 Interfaces
Set up the following interfaces:
• Load WSH new delivery Interface
• Load WSH delivery details Interface
• Load WSH delivery assignment Interface
• Load WSH transactions history
OE_ORDER_HEADERS_ALL as OE_ORDER_HEADERS_ALL
OE_ORDER_LINES_ALL as OE_ORDER_LINES_ALL
WSH_DELIVERY_DETAILS as WSH_DELIVERY_DETAILS
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
WSH_CUSTOMER_LOCATIONS_V on ERP as WSH_SHIP_TO_CUSTOMER_LOC
WSH_CUSTOMER_LOCATIONS_V on ERP as WSH_DELIVER_TO_CUSTOMER_LOC
FND_USER on ERP as FND_CREATED_BY_ERP
FND_USER on SAL as FND_CREATED_BY_SAL
FND_USER on ERP as FND_LAST_UPDATED_BY_ERP
FND_USER on SAL as FND_LAST_UPDATED_BY_SAL
• Target Tables
WSH_NEW_DEL_INTERFACE
• Joins
(OE_ORDER_HEADERS_ALL.ORG_ID=OE_ORDER_LINES_ALL.ORG_ID) AND
OE_ORDER_HEADERS_ALL.HEADER_ID=OE_ORDER_LINES_ALL.HEADER_ID and
rownum=1
Join between WSH_DELIVERY_DETAILS and OE_ORDER_LINES_ALL
(WSH_DELIVERY_DETAILS.SOURCE_LINE_ID=OE_ORDER_LINES_ALL.LINE_ID)
AND
WSH_DELIVERY_DETAILS.INVENTORY_ITEM_ID=OE_ORDER_LINES_ALL.INVENTO
RY_ITEM_ID and rownum=1
Join between WSH_DELIVERY_DETAILS and OE_ORDER_HEADERS_ALL
(WSH_DELIVERY_DETAILS.SOURCE_HEADER_ID=OE_ORDER_HEADERS_ALL.HEA
DER_ID) AND
WSH_DELIVERY_DETAILS.SOURCE_HEADER_TYPE_ID=OE_ORDER_HEADERS_AL
L.ORDER_TYPE_ID
Join between WSH_DELIVERY_DETAILS and WSH_DELIVER_TO_CUSTOMER_LOC
(WSH_DELIVERY_DETAILS.DELIVER_TO_LOCATION_ID=WSH_DELIVER_TO_CUST
OMER_LOC.WSH_LOCATION_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=WSH_DELIVER_TO_CUSTOMER_LOC.ORG_ID
Join between WSH_DELIVERY_DETAILS and WSH_SHIP_TO_CUSTOMER_LOC
(WSH_DELIVERY_DETAILS.SHIP_TO_LOCATION_ID=WSH_SHIP_TO_CUSTOMER_L
OC.WSH_LOCATION_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=WSH_SHIP_TO_CUSTOMER_LOC.ORG_ID
Join between MTL_PARAMETERS_ERP and WSH_DELIVERY_DETAILS
WSH_DELIVERY_DETAILS.ORGANIZATION_ID=MTL_PARAMETERS_ERP.ORGANIZ
ATION_ID
Join between FND_CREATED_BY_ERP and FND_CREATED_BY_SAL
FND_CREATED_BY_ERP.USER_NAME=FND_CREATED_BY_SAL.USER_NAME
Join between FND_LAST_UPDATED_BY_SAL and FND_LAST_UPDATED_BY_ERP
FND_LAST_UPDATED_BY_ERP.USER_NAME=FND_LAST_UPDATED_BY_SAL.USER
_NAME
Join between FND_CREATED_BY_ERP and OE_ORDER_HEADERS_ALL
OE_ORDER_HEADERS_ALL.CREATED_BY=FND_CREATED_BY_ERP.USER_ID
Join between FND_LAST_UPDATED_BY_BY_ERP and OE_ORDER_HEADERS_ALL
OE_ORDER_HEADERS_ALL.CREATED_BY=FND_LAST_UPDATED_BY_ERP.USER_I
D
• Filters
OE_ORDER_HEADERS_ALL.ORDER_NUMBER=#order_number
Note: #order_number is an ODI variable. We set this to the sales order number that we
want to import from the ERP instance to the distributed instance(s).
• Variables
#order_number
order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).
#p_delivery_interface_id
Generate delivery interface id upfront and store it in this ODI variable.
E.g. select wsh_new_del_interface_s.nextval from dual
• Mappings
DELIVERY_INTERFACE_ID #p_delivery_interface_id
CREATION_DATE SYSDATE
CREATED_BY FND_CREATED_BY_SAL.USER_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FND_LAST_UPDATED_BY_SAL.USER_ID
CURRENCY_CODE WSH_DELIVERY_DETAILS.CURRENCY_CODE
ORGANIZATION_CODE MTL_PARAMETERS_ERP.ORGANIZATION_CODE
EARLIEST_PICKUP_DATE WSH_DELIVERY_DETAILS.EARLIEST_PICKUP_D
ATE
LATEST_PICKUP_DATE WSH_DELIVERY_DETAILS.LATEST_PICKUP_DA
TE
EARLIEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.EARLIEST_DROPOFF
_DATE
LATEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.LATEST_DROPOFF_D
ATE
PLANNED_FLAG 'N'
STATUS_CODE 'OP'
INTERFACE_ACTION_CODE '94X_STANDALONE'
DELIVERY_TYPE 'I'
SHIP_TO_ADDRESS1 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS1
SHIP_TO_ADDRESS2 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS2
SHIP_TO_ADDRESS3 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS3
SHIP_TO_ADDRESS4 WSH_SHIP_TO_CUSTOMER_LOC.ADDRESS4
SHIP_TO_CITY WSH_SHIP_TO_CUSTOMER_LOC.CITY
SHIP_TO_STATE WSH_SHIP_TO_CUSTOMER_LOC.STATE
SHIP_TO_COUNTRY WSH_SHIP_TO_CUSTOMER_LOC.COUNTRY
INVOICE_TO_ADDRESS1 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
1
INVOICE_TO_ADDRESS2 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
2
INVOICE_TO_ADDRESS3 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
3
INVOICE_TO_ADDRESS4 WSH_DELIVER_TO_CUSTOMER_LOC.ADDRESS
4
INVOICE_TO_CITY WSH_DELIVER_TO_CUSTOMER_LOC.CITY
INVOICE_TO_STATE WSH_DELIVER_TO_CUSTOMER_LOC.STATE
INVOICE_TO_COUNTRY WSH_DELIVER_TO_CUSTOMER_LOC.COUNTRY
SHIP_TO_POSTAL_CODE WSH_SHIP_TO_CUSTOMER_LOC.POSTAL_COD
E
INVOICE_TO_POSTAL_COD WSH_DELIVER_TO_CUSTOMER_LOC.POSTAL_
E CODE
SHIP_TO_CUSTOMER_NAM WSH_SHIP_TO_CUSTOMER_LOC.CUSTOMER_N
E AME
INVOICE_TO_CUSTOMER_ WSH_DELIVER_TO_CUSTOMER_LOC.CUSTOME
NAME R_NAME
• Additional Information
N/A
MTL_SYSTEM_ITEMS_B_KFV as MTL_SYSTEM_ITEMS_B_KFV
OE_ORDER_HEADERS_ALL as OE_ORDER_HEADERS_ALL
OE_ORDER_LINES_ALL as OE_ORDER_LINES_ALL
WSH_DELIVERY_DETAILS as WSH_DELIVERY_DETAILS
MTL_PARAMETERS as MTL_PARAMETERS
FND_USER on ERP as FND_CREATED_BY_ERP
FND_USER on SAL as FND_CREATED_BY_SAL
FND_USER on ERP as FND_LAST_UPDATED_BY_ERP
FND_USER on SAL as FND_LAST_UPDATED_BY_SAL
• Target Tables
WSH_DEL_DETAILS_INTERFACE
• Joins
(OE_ORDER_HEADERS_ALL.ORG_ID=OE_ORDER_LINES_ALL.ORG_ID) AND
OE_ORDER_HEADERS_ALL.HEADER_ID=OE_ORDER_LINES_ALL.HEADER_ID
Join between WSH_DELIVERY_DETAILS and OE_ORDER_LINES_ALL
(WSH_DELIVERY_DETAILS.SOURCE_LINE_ID=OE_ORDER_LINES_ALL.LINE_ID)
AND
WSH_DELIVERY_DETAILS.SOURCE_HEADER_ID=OE_ORDER_LINES_ALL.HEADER
_ID
Join between MTL_SYSTEM_ITEMS_B_KFV and WSH_DELIVERY_DETAILS
(WSH_DELIVERY_DETAILS.INVENTORY_ITEM_ID=MTL_SYSTEM_ITEMS_B_KFV.INV
ENTORY_ITEM_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=MTL_SYSTEM_ITEMS_B_KFV.ORGANIZATION_I
D
Join between MTL_PARAMETERS and WSH_DELIVERY_DETAILS
WSH_DELIVERY_DETAILS.ORGANIZATION_ID=MTL_PARAMETERS.ORGANIZATION
_ID
Join between FND_CREATED_BY_ERP and FND_CREATED_BY_SAL
FND_CREATED_BY_ERP.USER_NAME=FND_CREATED_BY_SAL.USER_NAME
Join between FND_LAST_UPDATED_BY_SAL and FND_LAST_UPDATED_BY_ERP
FND_LAST_UPDATED_BY_ERP.USER_NAME=FND_LAST_UPDATED_BY_SAL.USER
_NAME
Join between FND_CREATED_BY_ERP and OE_ORDER_HEADERS_ALL
OE_ORDER_HEADERS_ALL.CREATED_BY=FND_CREATED_BY_ERP.USER_ID
Join between FND_LAST_UPDATED_BY_BY_ERP and OE_ORDER_HEADERS_ALL
OE_ORDER_HEADERS_ALL.CREATED_BY=FND_LAST_UPDATED_BY_ERP.USER_I
D
• Filters
OE_ORDER_HEADERS_ALL.ORDER_NUMBER=#order_number
WSH_DELIVERY_DETAILS.SOURCE_CODE = 'OE'
Note: #order_number is an ODI variable. We set this to the sales order number that we
want to import from the ERP instance to the distributed instance(s).
• Variables
#order_number
order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).
• Mappings
DELIVERY_DETAIL_INTERF <%=snpRef.getObjectName("L","WSH_DEL_DETAI
ACE_ID LS_INTERFACE_S","SAL_WSH","W")%>.nextval
SOURCE_CODE 'OE'
SOURCE_LINE_ID -1
ITEM_DESCRIPTION MTL_SYSTEM_ITEMS_B_KFV.DESCRIPTION
SHIP_TOLERANCE_ABOVE WSH_DELIVERY_DETAILS.SHIP_TOLERANCE_A
BOVE
SHIP_TOLERANCE_BELOW WSH_DELIVERY_DETAILS.SHIP_TOLERANCE_B
ELOW
REQUESTED_QUANTITY WSH_DELIVERY_DETAILS.REQUESTED_QUANTI
TY
REQUESTED_QUANTITY_U Upper(WSH_DELIVERY_DETAILS.REQUESTED_
OM QUANTITY_UOM)
DATE_REQUESTED WSH_DELIVERY_DETAILS.DATE_REQUESTED
DATE_SCHEDULED WSH_DELIVERY_DETAILS.DATE_SCHEDULED
CREATION_DATE SYSDATE
CREATED_BY FND_CREATED_BY_SAL.USER_ID
LAST_UPDATE_DATE SYSDATE
INTERFACE_ACTION_CODE '94X_STANDALONE'
SOURCE_HEADER_NUMBE WSH_DELIVERY_DETAILS.SOURCE_HEADER_N
R UMBER
SRC_REQUESTED_QUANTI WSH_DELIVERY_DETAILS.SRC_REQUESTED_Q
TY UANTITY
SRC_REQUESTED_QUANTI Upper(WSH_DELIVERY_DETAILS.SRC_REQUEST
TY_UOM ED_QUANTITY_UOM)
LAST_UPDATED_BY FND_LAST_UPDATED_BY_SAL.USER_ID
CONTAINER_FLAG 'N'
CURRENCY_CODE WSH_DELIVERY_DETAILS.CURRENCY_CODE
PACKING_INSTRUCTIONS WSH_DELIVERY_DETAILS.PACKING_INSTRUCTI
ONS
SHIPPING_INSTRUCTIONS WSH_DELIVERY_DETAILS.SHIPPING_INSTRUCT
IONS
SOURCE_LINE_NUMBER WSH_DELIVERY_DETAILS.SOURCE_LINE_NUMB
ER
ITEM_NUMBER MTL_SYSTEM_ITEMS_B_KFV.CONCATENATED_
SEGMENTS
EARLIEST_PICKUP_DATE WSH_DELIVERY_DETAILS.EARLIEST_PICKUP_D
ATE
LATEST_PICKUP_DATE WSH_DELIVERY_DETAILS.LATEST_PICKUP_DA
TE
EARLIEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.EARLIEST_DROPOFF
_DATE
LATEST_DROPOFF_DATE WSH_DELIVERY_DETAILS.LATEST_DROPOFF_D
ATE
LINE_DIRECTION '0'
LINE_NUMBER OE_ORDER_LINES_ALL.LINE_NUMBER
ORGANIZATION_CODE MTL_PARAMETERS.ORGANIZATION_CODE
UNIT_PRICE WSH_DELIVERY_DETAILS.UNIT_PRICE
UNIT_SELLING_PRICE WSH_DELIVERY_DETAILS.UNIT_PRICE
• Additional Information
N/A
WSH_DEL_DETAILS_INTERFACE as WSH_DEL_DETAILS_INTERFACE
• Target Tables
WSH_DEL_ASSGN_INTERFACE
• Joins
N/A
• Filters
WSH_DEL_DETAILS_INTERFACE.SOURCE_HEADER_NUMBER=#order_number and
WSH_DEL_DETAILS_INTERFACE.SOURCE_CODE='OE'
Note: #order_number is an ODI variable. We set this to the sales order number that we
want to import from the ERP instance to the distributed instance(s).
• Variables
#order_number
order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).
• Mappings
DEL_ASSGN_INTERFACE_I <%=snpRef.getObjectName("L","WSH_DEL_ASSG
D N_INTERFACE_S","SAL_WSH","W")%>.nextval
CREATION_DATE SYSDATE
CREATED_BY WSH_DEL_DETAILS_INTERFACE.CREATED_BY
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY WSH_DEL_DETAILS_INTERFACE.LAST_UPDATE
D_BY
LAST_UPDATE_LOGIN WSH_DEL_DETAILS_INTERFACE.LAST_UPDATE
_LOGIN
PROGRAM_APPLICATION_I WSH_DEL_DETAILS_INTERFACE.PROGRAM_AP
D PLICATION_ID
PROGRAM_ID WSH_DEL_DETAILS_INTERFACE.PROGRAM_ID
REQUEST_ID WSH_DEL_DETAILS_INTERFACE.REQUEST_ID
INTERFACE_ACTION_CODE WSH_DEL_DETAILS_INTERFACE.INTERFACE_A
CTION_CODE
PROGRAM_UPDATE_DATE SYSDATE
DELIVERY_DETAIL_INTERF WSH_DEL_DETAILS_INTERFACE.DELIVERY_DE
ACE_ID TAIL_INTERFACE_ID
DELIVERY_INTERFACE_ID #p_delivery_interface_id
• Additional Information
N/A
WSH_NEW_DEL_INTERFACE as WSH_NEW_DEL_INTERFACE
• Target Tables
WSH_TRANSACTIONS_HISTORY
• Joins
N/A
• Filters
WSH_NEW_DEL_INTERFACE.DELIVERY_INTERFACE_ID=#p_delivery_interface_id
Note: #p_delivery_interface_id is an ODI variable. We set this to the sales order number
that we want to import from the ERP instance to the distributed instance(s).
• Variables
#p_delivery_interface_id
Generate delivery interface id upfront and store it in this ODI variable.
E.g. select wsh_new_del_interface_s.nextval from dual
#order_number is an ODI variable. Set this to the sales order number that we want to
import from the ERP instance to the distributed instance(s).
• Mappings
TRANSACTION_ID #p_wsh_txn_hist_txn_id
DOCUMENT_TYPE 'SR'
DOCUMENT_NUMBER '99'||#order_number
DOCUMENT_DIRECTION 'I'
TRANSACTION_STATUS 'AP'
ACTION_TYPE 'A'
ENTITY_NUMBER WSH_NEW_DEL_INTERFACE.DELIVERY_INTERF
ACE_ID
ENTITY_TYPE 'DLVY_INT'
TRADING_PARTNER_ID -1
CREATION_DATE SYSDATE
CREATED_BY WSH_NEW_DEL_INTERFACE.CREATED_BY
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY WSH_NEW_DEL_INTERFACE.LAST_UPDATED_B
Y
DOCUMENT_REVISION 1
• Additional Information
N/A
2.4.2 Packages
Create a package with the following flow:
1. Load WSH new delivery Interface
2. Load WSH delivery details Interface
3. Load WSH delivery assignment Interface
4. Load WSH transactions history
instance. Further, the ODI procedure createDeliveryShipDelivery will run on the host
intance to create and ship the delivery.
2.5.1 Interfaces
Set up the following interfaces:
• Update WSH delivery details
WSH_DELIVERY_ASSIGNMENTS as WSH_DELIVERY_ASSIGNMENTS
WSH_NEW_DELIVERIES as WSH_NEW_DELIVERIES
WSH_DELIVERY_DETAILS as WSH_DELIVERY_DETAILS
MTL_PARAMETERS on ERP as MTL_PARAMETERS_ERP
WSH_DELIVERY_DETAILS on ERP as WSH_DELIVERY_DETAILS_ERP
MTL_PARAMETERS on SAL as MTL_PARAMETERS
FND_USER on ERP as FND_ERP_CREATED
FND_USER on SAL as FND_SAL_CREATED
FND_USER on ERP as FND_ERP_CREATED
FND_USER on SAL as FND_SAL_CREATED
MTL_SYSTEM_ITEMS_B_KFV on SAL as MTL_SYSTEM_ITEMS_B_KFV_SAL
MTL_SYSTEM_ITEMS_B_KFV on ERP as MTL_SYSTEM_ITEMS_B_KFV_ERP
• Target Tables
WSH_NEW_DEL_INTERFACE
• Joins
WSH_DELIVERY_ASSIGNMENTS.DELIVERY_ID=WSH_NEW_DELIVERIES.DELIVERY
_ID
Join between WSH_DELIVERY_DETAILS and WSH_DELIVERY_DETAILS_ERP
(WSH_DELIVERY_DETAILS.REFERENCE_NUMBER=WSH_DELIVERY_DETAILS_ERP
.SOURCE_HEADER_NUMBER) AND WSH_DELIVERY_DETAILS.SHIPPED_QUANTITY
<= WSH_DELIVERY_DETAILS_ERP.REQUESTED_QUANTITY
Join between WSH_DELIVERY_ASSIGNMENTS and WSH_DELIVERY_DETAILS
WSH_DELIVERY_ASSIGNMENTS.DELIVERY_DETAIL_ID=WSH_DELIVERY_DETAILS.
DELIVERY_DETAIL_ID
Join between WSH_DELIVERY_DETAILS and WSH_DELIVER_TO_CUSTOMER_LOC
(WSH_DELIVERY_DETAILS.DELIVER_TO_LOCATION_ID=WSH_DELIVER_TO_CUST
OMER_LOC.WSH_LOCATION_ID) AND
WSH_DELIVERY_DETAILS.ORG_ID=WSH_DELIVER_TO_CUSTOMER_LOC.ORG_ID
Join between WSH_DELIVERY_DETAILS and FND_SAL_CREATED
WSH_DELIVERY_DETAILS.CREATED_BY=FND_SAL_CREATED.USER_ID
Join between FND_SAL_UPDATED and WSH_DELIVERY_DETAILS
WSH_DELIVERY_DETAILS.LAST_UPDATED_BY=FND_SAL_UPDATED.USER_ID
Join between MTL_SYSTEM_ITEMS_B_KFV_ERP and
WSH_DELIVERY_DETAILS_ERP
((MTL_SYSTEM_ITEMS_B_KFV_ERP.INVENTORY_ITEM_ID=WSH_DELIVERY_DETAI
LS_ERP.INVENTORY_ITEM_ID)) AND
MTL_SYSTEM_ITEMS_B_KFV_ERP.ORGANIZATION_ID=WSH_DELIVERY_DETAILS_
ERP.ORGANIZATION_ID
Join between WSH_DELIVERY_DETAILS and MTL_SYSTEM_ITEMS_B_KFV_SAL
(WSH_DELIVERY_DETAILS.ORGANIZATION_ID=MTL_SYSTEM_ITEMS_B_KFV_SAL.
ORGANIZATION_ID) AND
WSH_DELIVERY_DETAILS.INVENTORY_ITEM_ID=MTL_SYSTEM_ITEMS_B_KFV_SA
L.INVENTORY_ITEM_ID
Join between MTL_SYSTEM_ITEMS_B_KFV_SAL and MTL_PARAMETERS
MTL_SYSTEM_ITEMS_B_KFV_SAL.ORGANIZATION_ID=MTL_PARAMETERS.ORGAN
IZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV_SAL and
MTL_SYSTEM_ITEMS_B_KFV_ERP
MTL_SYSTEM_ITEMS_B_KFV_SAL.CONCATENATED_SEGMENTS=MTL_SYSTEM_IT
EMS_B_KFV_ERP.CONCATENATED_SEGMENTS
Join between MTL_SYSTEM_ITEMS_B_KFV_ERP and MTL_PARAMETERS_ERP
MTL_SYSTEM_ITEMS_B_KFV_ERP.ORGANIZATION_ID=MTL_PARAMETERS_ERP.O
RGANIZATION_ID
Join between FND_SAL_UPDATED and FND_ERP_UPDATED
FND_SAL_UPDATED.USER_NAME=FND_ERP_UPDATED.USER_NAME
Join between FND_ERP_CREATED and FND_SAL_CREATED
FND_SAL_CREATED.USER_NAME=FND_ERP_CREATED.USER_NAME
Join between MTL_PARAMETERS and MTL_PARAMETERS_ERP
MTL_PARAMETERS.ORGANIZATION_CODE=MTL_PARAMETERS_ERP.ORGANIZATI
ON_CODE
• Filters
WSH_NEW_DELIVERIES.NAME=#p_delivery_name and
WSH_NEW_DELIVERIES.STATUS_CODE in ('OP','IT','CL')
WSH_DELIVERY_DETAILS.SOURCE_CODE='OE'
WSH_DELIVERY_DETAILS_ERP.SOURCE_CODE='OE' and
WSH_DELIVERY_DETAILS_ERP.RELEASED_STATUS in ('R','B')
Note: #p_delivery_name is an ODI variable. We set this to the devlivery name with which
the delivery gets created in the distributed instance.
• Variables
#p_delivery_name
p_delivery_name is an ODI variable. We set this to the devlivery name with which the
delivery gets created in the distributed instance.
• Mappings
DELIVERY_DETAIL_ID WSH_DELIVERY_DETAILS_ERP.DELIVERY_DET
AIL_ID
LAST_UPDATE_DATE SYSDATE
LOT_NUMBER WSH_DELIVERY_DETAILS.LOT_NUMBER
RELEASED_STATUS 'Y'
REVISION WSH_DELIVERY_DETAILS.REVISION
SHIPPED_QUANTITY WSH_DELIVERY_DETAILS.SHIPPED_QUANTITY
SHIPPED_QUANTITY2 WSH_DELIVERY_DETAILS.SHIPPED_QUANTITY2
SUBINVENTORY 'EACH'
• Additional Information
N/A
2.5.2 Procedures
Create the following procedure in ODI to create the delivery and then ship the delivery. This
needs to be executed on the host instance.
• Command on Source
declare
cursor c1 is
select wdd.delivery_detail_id, wdd.requested_quantity, wdd.shipped_quantity from
wsh_delivery_details wdd, wsh_delivery_assignments wda
where wdd.source_header_number = '#order_number'
line_rows WSH_UTIL_CORE.id_tab_type;
del_rows WSH_UTIL_CORE.id_tab_type;
ret_status varchar2(1);
msg_count number;
msg_data varchar2(4000);
l_msg_details varchar2(4000);
l_msg_summary varchar2(4000);
l_trip_id number;
l_trip_name varchar2(30);
i number;
l_split_dd_id number;
l_split_qty number;
l_split_qty2 number;
begin
wsh_delivery_details_pub.Autocreate_Deliveries(
p_api_version_number => 1.0
, p_init_msg_list => FND_API.G_TRUE
, p_commit => FND_API.G_FALSE
, x_return_status => ret_status
, x_msg_count => msg_count
, x_msg_data => msg_data
WSH_DELIVERIES_PUB.Delivery_Action
( p_api_version_number => 1.0,
p_init_msg_list => FND_API.G_TRUE,
x_return_status => ret_status,
x_msg_count => msg_count,
x_msg_data => msg_data,
p_action_code => 'CONFIRM',
p_delivery_id => del_rows(i),
p_sc_close_trip_flag => 'Y',
p_sc_create_bol_flag => 'N',
p_sc_trip_ship_method => NULL,
p_sc_actual_dep_date => sysdate,
p_sc_report_set_id => NULL,
p_sc_defer_interface_flag => 'N',
x_trip_id => l_trip_id,
x_trip_name => l_trip_name);
end loop;
end if;
end;
• Variables
#order_number
2.5.3 Packages
Create a package with the following flow:
1. Update WSH delivery details (ODI Interface)
2. createDeliveryShipDelivery (ODI Procedure)
The view that fetches all the return/correct transactions from the distributed instance(s) is
RCV_RECEIPT_CONFIRMATION_V, which acts as the main source for this data migration. The
rows from this view, which are not yet migrated, will be used to populate the receiving interface
tables (ROI) on the ERP instance. Once these interface tables are loaded, Receiving
Transaction Processor (RTP) can be run to complete the receipt/deliver transactions on the ERP
instance. The following section talks about the ODI interfaces and mappings created to load the
RCV_TRANSACTIONS_INTERFACE (RTI), MTL_TRANSACTION_LOTS_INTERFACE (MTLI),
and MTL_SERIAL_NUMBERS_INTERFACE (MSNI) on the ERP instance.
2.6.1 Interfaces
Set up the following interfaces:
• Load Receiving Lines Interface (RTI)
• Load Lots Interface (MTLI)
• Load Serials Interface (MSNI)
• Target Tables
RCV_TRANSACTIONS_INTERFACE (RTI)
• Joins
RRCV.RECEIPT = RSH.RECEIPT_NUM
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and MTL_PARAMETERS
(MP)
RRCV.WAREHOUSE = MP.ORGANIZATION_CODE
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_SYSTEM_ITEMS_B_KFV (MSI)
RRCV.ITEM = MSI.CONCATENATED_SEGMENTS
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
MTL_ITEM_LOCATIONS_KFV (MIL)
RRCV.LOCATOR = MIL.CONCATENATED_SEGMENTS
Join between MTL_ITEM_LOCATIONS_KFV (MIL) and MTL_PARAMETERS (MP)
MIL.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between MTL_SYSTEM_ITEMS_B_KFV (MSI) and MTL_PARAMETERS (MP)
MSI.ORGANIZATION_ID = MP.ORGANIZATION_ID
Join between RCV_SHIPMENT_HEADERS (RSH) and RCV_SHIPMENT_LINES
(RSL)
RSL.SHIPMENT_HEADER_ID = RSH.SHIPMENT_HEADER_ID
Join between RCV_TRANSACTIONS (RT) and RCV_SHIPMENT_LINES (RSL)
RT.SHIPMENT_LINE_ID = RSH.SHIPMENT_LINE_ID
Join between RCV_TRANSACTIONS (RT) and MTL_SYSTEM_ITEMS_B_KFV (MSI)
RT.ITEM_ID = MSI.INVENTORY_ITEM_ID
• Filters
RRCV.receipt = p_receipt_num
Note: This condition can be changed to fetch the records as desired by the user.
For ex, if the user wants to synchronize the receipt/deliver transactions between a
given date-range then this filter can be changed to:
However, please note that the synchronization should happen per receipt_num;
hence if a different extraction condition is used then the retrieved records need to
be looped through for all the distinct receipt_num and data should be transferred
for one receipt_num at a time.
FNU.user_name = p_user_name
This is the user with which you want to perform the transactions on the ERP
instance.
• Variables
p_receipt_num
p_user_name
Note: Before executing the package to import the transactions from the SAL instance to
the host ERP instance, set these variables to the receipt number (that needs to be
imported) and the user name (with which you want to perform the transactions).
• Mappings
INTERFACE_TRANSACTION_ID RCV_TRANSACTIONS_INTERFACE_S.NEXTVAL
GROUP_ID RCV_INTERFACE_GROUPS_S.NEXTVAL
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
TRANSACTION_TYPE RRCV.TRANSACTION_TYPE
TRANSACTION_DATE RRCV.TRANSACTION_DATE
PROCESSING_STATUS_CODE 'PENDING'
PROCESSING_MODE_CODE 'BATCH'
TRANSACTION_STATUS_CODE 'PENDING'
QUANTITY RRCV.TRANSACTION_QUANTITY
UNIT_OF_MEASURE RRCV.TRANSACTION_UOM
ITEM_ID MSI.INVENTORY_ITEM_ID
SHIPMENT_HEADER_ID RT.SHIPMENT_HEADER_ID
SHIPMENT_LINE_ID RT.SHIPMENT_LINE_ID
RECEIPT_SOURCE_CODE ‘VENDOR’
VENDOR_ID RT.VENDOR_ID
FROM_ORGANIZATION_ID RSH.SHIP_TO_ORG_ID
FROM_SUBINVENTORY RT.SUBINVENTORY
FROM_LOCATOR_ID RT.LOCATOR_ID
SOURCE_DOCUMENT_CODE 'PO'
PARENT_TRANSACTION_ID RT.TRANSACTION_ID
PO_HEADER_ID RT.PO_HEADER_ID
PO_LINE_ID RT.PO_LINE_ID
PO_LINE_LOCATION_ID RT.PO_LINE_LOCATION_ID
PO_DISTRIBUTION_ID RT.PO_DISTRIBUTION_ID
DESTINATION_TYPE_CODE 'INVENTORY’
DELIVER_TO_PERSON_ID RT.DELIVER_TO_PERSON_ID
LOCATION_ID RT.LOCATION_ID
DELIVER_TO_LOCATION_ID RT.DELIVER_TO_LOCATION_ID
VALIDATION_FLAG ‘Y’
Note: It is assumed that the following entities are same in both the distributed and the
ERP instance:
Organization Name
User Name
Item Name
Subinventory Name
Locator Name
• Additional Information
N/A
• Target Tables
MTL_TRANSACTION_LOTS_INTERFACE (MTLI)
• Joins
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_TRANSACTIONS_INTERFACE (RTI)
RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM AND
RRCV.TRANSACTION_TYPE = RTI.TRANSACTION_TYPE
• Filters
RRCV.LOT IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name
• Variables
p_receipt_num
p_user_name
• Mappings
TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
LOT_NUMBER RRCV.LOT
TRANSACTION_QUANTITY RRCV.LOT_QUANTITY
PRIMARY_QUANTITY RRCV.LOT_QUANTITY
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID
• Additional Information
N/A
• Target Tables
MTL_SERIAL_NUMBERS_INTERFACE (MTLI)
• Joins
Join between RCV_RECEIPT_CONFIRMATION_V (RRCV) and
RCV_TRANSACTIONS_INTERFACE (RTI)
RRCV.DOCUMENT_NUMBER=RTI.DOCUMENT_NUM AND
RRCV.DOCUMENT_LINE_NUMBER=RTI.DOCUMENT_LINE_NUM AND
RRCV.TRANSACTION_TYPE = RTI.TRANSACTION_TYPE
• Filters
RRCV.SERIAL IS NOT NULL
RRCV.RECEIPT = p_receipt_num
FNU.USER_NAME = p_user_name
• Variables
p_receipt_num
p_user_name
• Mappings
TRANSACTION_INTERFACE_ID RTI.INTERFACE_TRANSACTION_ID
LAST_UPDATE_DATE SYSDATE
LAST_UPDATED_BY FNU.USER_ID
CREATION_DATE SYSDATE
CREATED_BY FNU.USER_ID
LAST_UPDATE_LOGIN FNU.USER_ID
FM_SERIAL_NUMBER RRCV.SERIAL
TO_SERIAL_NUMBER RRCV.SERIAL
PRODUCT_CODE ‘RCV’
PRODUCT_TRANSACTION_ID RTI.INTERFACE_TRANSACTION_ID
• Additional Information
N/A
2.6.2 Procedures
Create the following procedure in ODI to update the receipt_extracted flag for the particular
receipt number, which has been successfully migrated from Distributed Instance to the Host
Instance:
Update_RC
• Command on Source
Add the following pl/sql block:
x_return_status VARCHAR2(100);
x_msg_data VARCHAR2(500);
x_msg_count NUMBER;
l_ret_stauts VARCHAR2(100);
Begin
L_ret_status := INV_STANDALONE_SYNC_PUB.Update_RC_Extracted
(1.0,
, FND_API.G_FALSE
, FND_API.G_FALSE
, x_return_status
, x_msg_count
, x_msg_data
, to_char(trunc(sysdate), ‘DD-MON-YYYY’)
, to_char(trunc(sysdate+1), ‘DD-MON-YYYY’)
, NULL
, RRCV.warehouse
, NULL
, p_receipt_num
, NULL
, p_rc_extracted
, NULL
);
End;
• Variables
p_rc_extracted
2.6.3 Packages
Create a package with the following flow:
1. Load RCV Lines Interface
2. Load Lots Interface
3. Load Serials Interface
4. Update RC-Extracted Flag
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065
U.S.A.
Worldwide Inquiries:
Phone: +1.650.506.7000
Fax: +1.650.506.7200
www.oracle.com