Professional Documents
Culture Documents
html
IRISO cycle –
ABC. Corp creates requisition in oracle with the intention to send the inventory at its third party logistics (PQR here). The
requisition then becomes the ISO (Internal Sales order) and is shipped form ABC Corp. Scheduled EDI943 program picks
eligible orders (Internal shipped orders) and sends electronic receipt advise to warehouse PQR.
PQR in return after receiving good physically sends EDI944 information to ABC Corp. The scheduled EDI944 program at ABC
Corp. then processes the file and receives the goods as an receiving transaction to its oracle PQR warehouse.
EDI explanation
Customer EDIs
EDI850- Order import EDI, Customer places the order and is then get imported in oracle.
EDI860- Order changes from Customer. Customer places order changes like quantity change, line cancellation, ship date
changes etc.
EDI855- Order Acknowledgement to Customer EDI, customer is informed for order is booked.
EDI856- Shipment advise to Customer EDI, Customer is informed for order is shipped.
EDI810- Invoice to Customer EDI. Invoice information is sent Via EDI810
Prerequisites -
For setting up the EDIs one must think of below prerequisites,
1. EDI processing Engine- Can be a professional organization or an in-house capability. The processing engine will deal with
customer/third party warehouse about how to get connected (various ways available like VAN, AS2 or FTP).
2. FTP capabilities- This can be provided by EDI processing engine if not then custom UNIX based concurrent programs can be
used to achieve to and from FTP requirements.
3. FTP server/Shared Directories – You can have FTP server associated across oracle ERP system or you can have shared
directories (between middle tier or DB tier) by which Oracle extraction/load programs can read and write data as an when
needed.
4. EDI jobs- As a seeded program oracle does provides a list of handful ready to use EDI programs which can be used to perform
particular EDI. The only issue with the seeded programs is customization and debugging the exceptions. Alternate and more
controlled approach can be having a custom program which can use the APIs/interfaces available to load/extract the data.
5. Trading partner setup- EDI entities (customer or warehouse) will provide a unique ID (translator code) by which you can have
the trading partner setup done in oracle E-Commerce responsibility by which you can then define which transactions wanted
to do with EDI entities (customer or warehouse).
6. EDI exception mechanism- You can have a common exception mechanism which can report all exceptions based on the
particular EDIs/operating unit selected.
7. EDI exception email mechanism- You can have a email utility developed which can be used to email with EDI exception report
as an attachment to a designated user community.
Setups with E-Commerce responsibility-
Define the trading partners
E-Commerce Responsibility- Navigation: Setup/ Trading Partners
Customer EDIs Trading partner setup
For example
Map at warehouse level
EDI855- mapped as EDI940, EDI947 out
EDI856 IN - mapped as EDI945, EDI947 IN
For example see below defining for M1 as M1 is whs so we don’t need to assign customer below
But define the above transaction in details tab.
EDI943/944
Map at customer level (In IRISO we created ISO against the customer where we want to send the inventory as receipt, so the
customer is internal customer by warehouse for example M1 Seattle customer if you are shipping from V1 whs)
EDI856 OUT- mapped as EDI943
EDI856 IN- mapped as EDI944
EDI 850 – is an incoming EDI where we need to import the sales order in oracle.
We can use oe_order_pub.process_order APIs to get the order imported in oracle.
EDI 945 –
EDI945 can do pick release and ship confirm of the order, below are some APIs by which entire process can be accomplished.
1. Create reservation
inv_quantity_tree_pvt.clear_quantity_cache;
inv_reservation_pub.create_reservation (p_api_version_number => 1.0
,p_init_msg_lst => fnd_api.g_true
,x_return_status => l_api_return_status
,x_msg_count => l_msg_count
,x_msg_data => l_msg_data
,p_rsv_rec => p_created_res
,p_serial_number => l_serial_no
,x_serial_number => l_actual_sn
,p_partial_reservation_flag => fnd_api.g_false
,p_force_reservation_flag => fnd_api.g_false
,p_validation_flag => fnd_api.g_true
,p_over_reservation_flag => l_over_reservation_flag
,x_quantity_reserved => l_quantity_reserved
,x_reservation_id => x_reservation_id
,p_partial_rsv_exists => l_partial_rsv_exists
,p_substitute_flag => l_substitute_flag
);
2. Delivery creation
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 => xout_return_status
,x_msg_count => xout_msg_count
,x_msg_data => xout_msg_data
,p_line_rows => l_line_rows
,x_del_rows => l_del_rows
);
3. Pick release Delivery
wsh_deliveries_pub.delivery_action (p_api_version_number => 1.0
,p_init_msg_list => fnd_api.g_true
,x_return_status => xout_return_status
,x_msg_count => xout_msg_count
,x_msg_data => xout_msg_data
,p_action_code => 'PICK-RELEASE'
,p_delivery_id => l_delivery_id
,x_trip_id => l_trip_id
,x_trip_name => l_trip_name
);
4. Ship Confirm Delivery
wsh_deliveries_pub.delivery_action (p_api_version_number => 1.0
,p_init_msg_list => fnd_api.g_true
,x_return_status => xout_return_status
,x_msg_count => xout_msg_count
,x_msg_data => xout_msg_data
,p_action_code => 'CONFIRM'
,p_delivery_id => r_order.delivery_id
,p_sc_action_flag => 'S'
,p_sc_intransit_flag => 'Y'
,p_sc_close_trip_flag => 'Y'
,p_sc_actual_dep_date => NVL (TRUNC (r_order.date_shipped), TRUNC (SYSDATE))
,x_trip_id => l_trip_id
,x_trip_name => l_trip_name
);
5. Close the Delivery
wsh_ship_confirm_actions.interface_all (errbuf => l_errbuf
,retcode => l_retcode
,p_mode => 'ALL'
,p_stop_id => NULL
,p_delivery_id => l_delivery_id
,p_log_level => 1
);
EDI 944 –
EDI944 can do the receipts in oracle. Using this program you can validate the receiving data and then insert into standard
receiving interface tables
INSERT INTO po.rcv_headers_interface
INSERT INTO po.rcv_transactions_interface
INSERT INTO inv.mtl_transaction_lots_interface
If WMS being used then INSERT INTO wms_lpn_interface
Finally run the RCVTP
v_child_request :=
fnd_request.submit_request (‘PO’, ‘RCVTP’, NULL, NULL, FALSE, 'BATCH',
o rcv_group_id, CHR (0));
RCVTP can be run as – immediate, batch or online.
EDI 947 IN-
Is an inventory adjustment EDI where warehouse can send adjustments like cycle count, damages, writeoffs etc.
Validate the data and then insert into
INSERT INTO mtl_transactions_interface
INSERT INTO mtl_transaction_lots_interface
Finally run the standard inventory transaction worker which can take care of posting the transactions
fnd_request.submit_request ('INV' -- Appl short name
,'INCTCW' -- Inventory transaction worker
,NULL -- Description
,NULL -- Date and Time
,FALSE -- Sub-request
,l_transaction_header_id
,3
,NULL
,NULL
);
Custom Export Programs –
Outgoing extract programs can be constructed as a request set where the first stage will extract the data and stage 2 will then
FTP the extracted file to the EDI processing engine.
The FTP utility can be constructed as a single concurrent unix shell program which can be shared across all outgoing jobs.
EDI 855 –
This program will send order acknowledgement to customer. Typical extraction SQL can be.
SELECT DISTINCT *
FROM apps.oe_order_headers_all h
,apps.oe_transaction_types_tl ot
,apps.ra_salesreps_all rsa
,apps.oe_order_lines_all l
,hz_cust_site_uses_all ship_hcsu
,hz_cust_acct_sites_all ship_hcas
,hz_cust_accounts_all ship_hca
,hz_parties ship_hp
,hz_party_sites ship_hps
,hz_locations ship_hc
,apps.hz_cust_acct_sites_all bill_to
,apps.hz_cust_site_uses_all bill_use
,hz_party_sites bill_hps
,hz_locations bill_hc
,apps.ece_tp_headers eth
,apps.ece_tp_details etd
,ra_terms_tl rtl
,qp_list_headers_tl qlht
,hr_organization_units_v houv
WHERE 1 = 1
AND h.org_id = p_org_id
AND h.open_flag = 'Y'
AND h.booked_flag = 'Y'
AND NVL (h.cancelled_flag, 'N') != 'Y'
AND h.order_type_id = ot.transaction_type_id
AND h.salesrep_id = rsa.salesrep_id
AND h.header_id = l.header_id
AND l.flow_status_code NOT IN ('CANCELLED', 'AWAITING_RETURN', 'RETURNED', 'CLOSED')
AND h.ship_to_org_id = ship_hcsu.site_use_id
AND ship_hcsu.cust_acct_site_id = ship_hcas.cust_acct_site_id
AND ship_hcas.cust_account_id = ship_hca.cust_account_id
AND ship_hcsu.org_id = ship_hcas.org_id
AND ship_hca.party_id = ship_hp.party_id
AND ship_hcas.party_site_id = ship_hps.party_site_id
AND ship_hps.location_id = ship_hc.location_id
AND bill_to.party_site_id = bill_hps.party_site_id
AND bill_hps.location_id = bill_hc.location_id
AND h.invoice_to_org_id = bill_use.site_use_id
AND bill_to.cust_acct_site_id = bill_use.cust_acct_site_id
AND bill_to.org_id = bill_use.org_id
AND bill_to.cust_account_id = ship_hca.cust_account_id
AND ship_hcas.tp_header_id = eth.tp_header_id
AND etd.tp_header_id = eth.tp_header_id
AND etd.document_id = 'POAO'
AND etd.document_type = 'POAO'
AND etd.edi_flag = 'Y'
AND h.payment_term_id = rtl.term_id
AND qlht.list_header_id = h.price_list_id
AND l.ship_from_org_id = houv.organization_id
AND (p_order_number_list IS NULL OR (',' || p_order_number_list || ',' LIKE '%,' || h.order_number || ',%'))
ORDER BY h.order_number;
EDI 856 –
This program will send orders shipped to customer. Typical extraction SQL can be.
SELECT DISTINCT *
FROM apps.wsh_trips wt
,apps.wsh_trip_stops wts
,apps.wsh_trip_stops wts1
,apps.wsh_new_deliveries wnd
,apps.wsh_delivery_assignments wda
,apps.wsh_delivery_details wdd
,apps.wsh_delivery_legs wdl
,apps.wsh_document_instances wdi
,apps.wsh_document_instances wdi2
,apps.hz_cust_site_uses_all ship_to_site
,apps.hz_cust_acct_sites_all ship_to_acct
,apps.hz_party_sites ship_to_party
,apps.hz_locations ship_to_loc
,apps.hz_cust_accounts ship_to_cust
,apps.hz_cust_site_uses_all bill_to_site
,apps.hz_cust_acct_sites_all bill_to_acct
,apps.hz_party_sites bill_to_party
,apps.hz_locations bill_to_loc
,apps.hz_cust_accounts rc
,apps.hz_parties hp
,apps.oe_order_headers_all ooh
,apps.oe_transaction_types_tl oot
,apps.ece_tp_headers eth
,apps.ece_tp_details etd
,apps.ra_terms_tl rtt
,mtl_parameters mp
,oe_order_sources oos
WHERE 1 = 1
AND (p_delivery_name_list IS NULL OR (',' || p_delivery_name_list || ',' LIKE '%,' || wnd.NAME || ',%'))
AND ooh.org_id = p_org_id
AND wnd.delivery_id = wda.delivery_id
AND wnd.delivery_id = wdl.delivery_id
AND wdl.pick_up_stop_id = wts.stop_id
AND wdl.drop_off_stop_id = wts1.stop_id
AND wts.trip_id = wt.trip_id
AND wda.delivery_detail_id = wdd.delivery_detail_id
AND wdi.entity_id = wnd.delivery_id
AND wdi.entity_name = 'WSH_NEW_DELIVERIES'
AND wdi2.entity_id(+) = wnd.delivery_id
AND wdi2.entity_name(+) = 'WSH_DELIVERY_LEGS'
AND wdd.customer_id = rc.cust_account_id
AND rc.cust_account_id = ooh.sold_to_org_id
AND rc.party_id = hp.party_id
AND ooh.ship_to_org_id = ship_to_site.site_use_id
AND ship_to_site.cust_acct_site_id = ship_to_acct.cust_acct_site_id
AND ship_to_acct.org_id = ship_to_site.org_id
AND ship_to_acct.cust_account_id = rc.cust_account_id
AND ship_to_site.site_use_code = 'SHIP_TO'
AND ship_to_site.status = 'A'
AND wdd.source_header_id = ooh.header_id
AND wdd.org_id = ooh.org_id
AND oot.transaction_type_id = ooh.order_type_id
AND etd.tp_header_id = ship_to_acct.tp_header_id
AND eth.tp_header_id = etd.tp_header_id
AND etd.document_id = 'DSNO'
AND etd.document_type = 'DSNO'
AND etd.edi_flag = 'Y'
AND ship_to_acct.party_site_id = ship_to_party.party_site_id
AND ship_to_party.location_id = ship_to_loc.location_id
AND ship_to_cust.cust_account_id = ship_to_acct.cust_account_id
AND ooh.payment_term_id = rtt.term_id
AND ooh.invoice_to_org_id = bill_to_site.site_use_id
AND bill_to_acct.cust_acct_site_id = bill_to_site.cust_acct_site_id
AND bill_to_acct.org_id = bill_to_site.org_id
AND bill_to_acct.party_site_id = bill_to_party.party_site_id
AND bill_to_party.location_id = bill_to_loc.location_id
AND bill_to_acct.cust_account_id = rc.cust_account_id
AND mp.organization_id = wnd.organization_id
AND oos.order_source_id = ooh.order_source_id
AND wnd.status_code = 'CL'
AND TRUNC (wnd.confirm_date) >= '13-JUL-2010'
ORDER BY wnd.delivery_id;
EDI 810 –
This program will send invoices to customer. Typical extraction SQL can be.
SELECT *
FROM apps.ra_cust_trx_types_all ctt
,apps.ra_customer_trx_all rct
,apps.hz_cust_acct_sites_all ship_to
,apps.hz_cust_site_uses_all ship_use
,hz_party_sites hps
,hz_locations ship_loc
,apps.ece_tp_headers eth
,apps.ece_tp_details etd
,apps.hz_cust_accounts cust
,hz_parties hp
,apps.hz_cust_acct_sites_all bill_to
,apps.hz_cust_site_uses_all bill_use
,hz_party_sites hpb
,hz_locations bill_loc
,apps.hz_cust_acct_sites_all remit_to
,hz_party_sites hpr
,hz_locations remit_loc
,apps.hr_organization_units hou
,apps.hr_locations ship_from
,apps.ra_terms term
,apps.oe_order_headers_v ooh
WHERE 1 = 1
AND ctt.org_id = p_org_id
AND ctt.attribute1 = 'Y'
AND rct.org_id = ctt.org_id
AND rct.cust_trx_type_id = ctt.cust_trx_type_id
AND TRUNC (rct.trx_date) <= TRUNC (SYSDATE)
AND rct.complete_flag = 'Y'
AND NVL (rct.edi_processed_flag, 'N') = 'N'
AND rct.edi_processed_status IS NULL
AND ship_use.site_use_id = rct.ship_to_site_use_id
AND hp.party_id = cust.party_id
AND ship_to.cust_acct_site_id = ship_use.cust_acct_site_id
AND hps.location_id = ship_loc.location_id
AND ship_to.party_site_id = hps.party_site_id
AND eth.tp_header_id = ship_to.tp_header_id
AND etd.tp_header_id = eth.tp_header_id
AND etd.document_id = 'INO'
AND etd.document_type = 'INV'
AND etd.edi_flag = 'Y'
AND cust.cust_account_id = rct.bill_to_customer_id
AND bill_use.site_use_id = rct.bill_to_site_use_id
AND bill_to.cust_acct_site_id = bill_use.cust_acct_site_id
AND hpb.location_id = bill_loc.location_id
AND bill_to.party_site_id = hpb.party_site_id
AND remit_to.cust_acct_site_id = rct.remit_to_address_id
AND hpr.location_id = remit_loc.location_id
AND remit_to.party_site_id = hpr.party_site_id
AND hou.organization_id = TO_NUMBER (TRIM (rct.interface_header_attribute10))
AND ship_from.location_id = hou.location_id
AND term.term_id = rct.term_id
AND ooh.order_type = rct.interface_header_attribute2
AND ooh.order_number = TO_NUMBER (TRIM (rct.interface_header_attribute1))
AND TRUNC (rct.creation_date) >= '21-FEB-2005'
AND ( TO_CHAR (p_invoice_number_string) IS NULL
OR (',' || TO_CHAR (p_invoice_number_string) || ',' LIKE '%,' || TO_CHAR (rct.trx_number) || ',%')
)
ORDER BY TO_NUMBER (invoice_number);
This explains complete EDI details and setups with oracle apps R12.
Thanks,
Ajay
16 comments:
Anonymous said...
Nice document, can you please explain where you defined the layouts for the 943 and 944? Did you create concurrent programs for the 943 and 944?
March 6, 2013 at 7:48 AM
Anonymous said...
Hi Ajay,
Are we having any Interface/APIs to import Trading Partner details maintained in Excel?
Thanks
Baskar P
Regards,
Srinivas Pasupuleti
Anonymous,
sorry for late reply. Yes for 943 an 944 I have created custom concurrent program. Trading Partners I have defined as 856 in and out.
Thanks
Great document Ajay. Can you please let me know whether Oracle 11.5.10 has an EDI Translator or do we have to go to a third party s/w or company
for translation.
Thanks,
Tafazul
Hi,
While importing 830 DELFOR we are getting error message in RLM workbench as " rlm_manage_demand_sv.MatchDemand failed with the following
progress code: 010
and SQL error message: ORA-06502: PL/SQL: numeric or value error: character to number conversion error"
Please suggest!!
Program Error: PL/SQL position not found for NET_WEIGHT. why this error coming,please help me out
Hi Ajay,
Its really an awesome article about EDIs.
Can you please provide an overview on EDI860 also? (API/Interface) to handle RMAs via EDI.
Thanks
Hi Ajay,
Its really an awesome article about EDIs.
Can you please provide an overview on EDI860 also? (API/Interface) to handle RMAs via EDI.
Thanks
Hi Ajay,
It's very useful document. Thanks.
I have one query on 856. DSNO is generated by ITS and I also submitted Interface file data. Now while running 'OUT: OPM Advanced Ship Notice
(856/DESADV)' it shows no data for Organization. Can you please help.
Hi Ajay,
It's is very useful document.
If you have complete document of EDI 810, 850 and 860 process, please share to my mail id: prvn.samalas@gmail.com
Thanks,
praveen
Hi Ajay, Nice document on EDI implementation. For 940 and 945 how did you define the file layout? I see you have defined Trading Partner as 855 out
and 856 in. But are you using the layout for 855 and 856 as well? Thanks a lot.
Hi Ajay,
That was really good.It gives a very detailed info on EDI implementation in oracle EBS.
This is insanely perfect article. I like it concise yet detailed. It has everything..
Regards.
Managements
Email Kindly Contact: (urgentloan22@gmail.com)
Post a Comment