SeanHoppe.com > CLEO Tips > CLEO JDE Tips > 4 EXTOL/JDE - Customer Item Cross Reference - F4104

EXTOL/JDE - Customer Item Cross Reference - F4104

23rd April 2014

Best Practice for Customer Item Cross Reference - F4104:

The JDE customer item cross reference table, commonly known as F4104, is where JDE stores item descriptions that the Item Search program P41200 uses. Just as JDE uses this table to retrieve customer specific information, B2B Solutions can also use this table to determine the JDE short item number. Using the F4104 table is a best practice for multiple reasons. We primarily interface with the F4104 table during inbound transactions. Outbound is not needed due to the customer item number being populated in the CITM field.

Just as we leverage the JDE infrastructure to ship-to address book numbers, we are leveraging JDE’s Inventory Management System to put forth another JDE best practice.

Why to use Customer Item Cross Reference - F4104:

By utilizing a JDE Best Practices for the item cross reference, JDE users can implement a system where logic and transformation is kept separate from trading partner data.

Reason 1: By not using this best practice, IT will find itself owning this process all while it is a process that is owned by business units such as customer service.. This will also lead to duplication of data.
Reason 2: The customer item cross reference can be the precursor for other lookups and needs to be done correctly. By using the best practice for inbound EDI documents, we can ensure that the additional lookups can occur correctly. Such lookups would be to other Inventory Management such as the item master table commonly known as F4101. JDE users need to interface with F4101 to apply certain logic based on category codes. Another table customer cross reference table would be is item conversion table, commonly known as F41002. Users that need to convert to ordering UOM to sales UOM will find themselves needing to retrieve conversion factors.


Alternate to using Best Practice 1: An alternative solution would be to create internal crosswalk table where customer data needs to be maintained constantly while the same data resides in F4104.  This practice places the onus on IT groups to maintain customer data.

Alternate to using Best Practice 2: Others might interface with F4104 however due to limitations they might realize its full potential by not implementing downstream lookups.

What is the Best Practice to use Customer Item Cross Reference - F4104:

The JDE best practice to determine the ship-to address book number is utilizing JDE’s F4104 table. This table is commonly referred to as the customer item cross reference table. By interfacing with the F4104 table we are able to retrieve the JDE short item number for each detail line we receive. A typical set-up would be to go out to the F4104 table with the Address Number (AN8), the customer number (CITM) and Cross Reference Type Code (TYC).

In cases where we need to recognize the effective date, field: EFTJ, and expiration date, field: EXDJ, we would pass the current transaction date. In doing so, we would guarantee we found the correct F4104 record to be found, where there are multiple F4104 records for a single item.

Benefits to Best Practice:

The Best Practice of using the customer item cross reference table, F4104,  can reap multiple benefits if done correctly. The order can come in correctly and would require minimum (if any) re-work from customer service during the JDE Edit/Update process.

More information on JDE Best Practices


By: on
load('http://www.seanhoppe.com/EXTOL-Blog-Feed2/'); $feed2 = array(); foreach ($rss2->getElementsByTagName('item') as $node2) { $item2 = array ( 'title' => $node2->getElementsByTagName('title')->item(0)->nodeValue, 'desc' => $node2->getElementsByTagName('description')->item(0)->nodeValue, 'link' => $node2->getElementsByTagName('link')->item(0)->nodeValue, 'date' => $node2->getElementsByTagName('pubDate')->item(0)->nodeValue, ); array_push($feed2, $item2); } $limit2 = 5; $rss3 = new DOMDocument(); $rss3->load('http://www.ebithree.com/EBIThree-RSS/'); $feed3 = array(); foreach ($rss3->getElementsByTagName('item') as $node3) { $item3 = array ( 'title' => $node3->getElementsByTagName('title')->item(0)->nodeValue, 'link' => $node3->getElementsByTagName('link')->item(0)->nodeValue, ); array_push($feed3, $item3); } $limit3 = 5; $rss4 = new DOMDocument(); //$rss4->load('http://www.ebithree.com/EBIThree-RSS/'); $rss4->load('http://www.ebiworld.com/EBI-Feed/'); $feed4 = array(); foreach ($rss4->getElementsByTagName('item') as $node4) { $item4 = array ( 'title' => $node4->getElementsByTagName('title')->item(0)->nodeValue, 'link' => $node4->getElementsByTagName('link')->item(0)->nodeValue, ); array_push($feed4, $item4); } $limit4 = 5; echo ' '; ?>