<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Integration Engineer &#187; Elements</title>
	<atom:link href="http://www.theintegrationengineer.com/category/edi/segments/elements/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.theintegrationengineer.com</link>
	<description>When it just has to work.</description>
	<lastBuildDate>Tue, 27 Jul 2010 17:33:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The EDI Primer</title>
		<link>http://www.theintegrationengineer.com/the-edi-primer/</link>
		<comments>http://www.theintegrationengineer.com/the-edi-primer/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 19:32:20 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[Delimiters]]></category>
		<category><![CDATA[EDI]]></category>
		<category><![CDATA[EDI Primer]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[Envelope]]></category>
		<category><![CDATA[GS]]></category>
		<category><![CDATA[ISA]]></category>
		<category><![CDATA[ST]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[convention]]></category>
		<category><![CDATA[Element Notation]]></category>
		<category><![CDATA[encoding]]></category>
		<category><![CDATA[Enveloping]]></category>
		<category><![CDATA[form]]></category>
		<category><![CDATA[Good Form]]></category>
		<category><![CDATA[hierarchial]]></category>
		<category><![CDATA[loops]]></category>
		<category><![CDATA[notation]]></category>
		<category><![CDATA[Specification]]></category>
		<category><![CDATA[Unwrapped]]></category>
		<category><![CDATA[usage]]></category>
		<category><![CDATA[values]]></category>
		<category><![CDATA[version]]></category>
		<category><![CDATA[Wrapped]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=6</guid>
		<description><![CDATA[For those who may be unfamiliar with the EDI standard, and those who may have used EDI but have encountered a new, unfamiliar question.
This introduction aims at addressing the basic questions of convention and implementation of the EDI technology.  I have a list of topics, and hope that over time I can cover all of [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-medium wp-image-18" title="pipes" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/08/pipes.gif" alt="pipes The EDI Primer" width="76" height="95" />For those who may be unfamiliar with the EDI standard, and those who may have used EDI but have encountered a new, unfamiliar question.</p>
<p>This introduction aims at addressing the basic questions of convention and implementation of the EDI technology.  I have a list of topics, and hope that over time I can cover all of them.  I also hope that people reading here may have questions that I haven&#8217;t thought to write about.  Please let  me know what your questions are and I will see what I can do about providing answers.<span id="more-6"></span></p>
<ul>
<li><a href="http://www.theintegrationengineer.com/what-is-edi/">What is EDI?</a></li>
<li><a href="http://www.theintegrationengineer.com/the-parts-of-edi/">Parts of EDI</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-segments/">Segments</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-delimiters/">Delimiters</a></li>
<li>Conventions of EDI</li>
<li><a href="http://www.theintegrationengineer.com/why-are-there-more-than-one-version-of-edi/">Why are there more than one version of EDI?</a></li>
<li><a href="http://www.theintegrationengineer.com/usage-of-edi-specifications/">Standards and Usage</a></li>
<li>Encoded Values</li>
<li><a href="http://www.theintegrationengineer.com/edi-in-good-form/">EDI in Good Form</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-elements/">Element Notation</a></li>
<li><a href=" http://www.theintegrationengineer.com/edi-wrapped-and-unwrapped/">Wrapped and Unwrapped EDI</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping-part-one/">Enveloping Part One</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping-part-two-the-isa/">Enveloping Part Two &#8211; ISA<br />
</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping-part-three-the-gs">Enveloping Part Three &#8211; GS</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-enveloping…rt-four-the-st/">Enveloping Part Four &#8211; ST</a></li>
<li><a href="http://www.theintegrationengineer.com/edi-repeated-segments/">Loops in EDI</a></li>
<li>Hierarchical Levels</li>
</ul>
<p>Of course understanding how EDI presents and represents data is the first step.  From here we may want to go to our Data Mapping Guide, or if we are familiar with mapping there are some examples in our mapping case studies of EDI to and from other formats.  Again, if you have an interesting problem or solution, I would love to here about it.  Please send it to<br />
<a href="mailto:roy@TheIntegrationEngineer.com">roy@TheIntegrationEngineer.com</a> and I will see what I can do.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/the-edi-primer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Line Item Part one, PO1</title>
		<link>http://www.theintegrationengineer.com/line-item-part-one-po1/</link>
		<comments>http://www.theintegrationengineer.com/line-item-part-one-po1/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 16:40:28 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[Segments]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[850]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[Line Item]]></category>
		<category><![CDATA[PO]]></category>
		<category><![CDATA[Purchase Order]]></category>
		<category><![CDATA[Segment]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=725</guid>
		<description><![CDATA[When we are dealing with supply chain or e-commerce related EDI, we probably will deal with line item data.  On a Purchase Order, (PO) or 850, the line item data is contained on the PO1 segment or the PO1 group.  (PO1 is a group or loop so it is more than just a segment.)  In [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-761" title="PO1_Block" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/PO1_Block.png" alt="PO1 Block Line Item Part one, PO1" width="101" height="54" />When we are dealing with supply chain or e-commerce related EDI, we probably will deal with line item data.  On a Purchase Order, (PO) or 850, the line item data is contained on the PO1 segment or the PO1 group.  (PO1 is a <a href="http://www.theintegrationengineer.com/edi-repeated-segments/">group or loop</a> so it is more than just a segment.)  In this article we will discuss what data is found on the PO1 segment, and how it should be handled on both inbound and outbound document.  For clarity, we are going to use the 4010 x12 standard.  The PO1 hasn&#8217;t changed in content for a while, but it has gotten longer, (you will see how this works when we talk about the PO1 elements).<span id="more-725"></span></p>
<p><strong>Parts of the PO1</strong></p>
<p>Here is a diagram of a sample PO1 segment:</p>
<p style="text-align: center;">
<p><img class="size-full wp-image-757 aligncenter" title="PO1_Diagram" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/10/PO1_Diagram.png" alt="PO1 Diagram Line Item Part one, PO1" width="566" height="319" /></p>
<p>Like any other segment in EDI, the PO1 segment is composed of elements.  Here is a list, element by element and what it contains.</p>
<table border="1" cellspacing="0" cellpadding="5" width="100%">
<tbody>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_01</em></td>
<td>This is the Line Identifier, or Line Number.  This is a value that must be unique among the lines or PO1 segments of a purchase order.  There is no rule that these must be incrementing integers starting at 1.  But it is normal for these to be Numeric even if the type is Alpha-Numeric.  And it is general practice to have them increment in some fashion.  Thus having the first line item number as 1.  The second as 2, and so forth.  I have also seen the first line item being 10 , the second 20 and so forth.  As well as 001 and 002.</p>
<p>In any case, I would discourage using random numbers.  And I would discourage using Alpha-Numerics.  These may confuse your trading partners and cause them to have exceptions that there is no need to have.  On the other hand, when planning on handling line numbers from other parties, you should expect that they might not be using nice incrementing numbers.  This will prevent getting exceptions in your system when your trading partner does something odd.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_02 </em></td>
<td>This is the quantity ordered.  Most of the time people will just call this the quantity, but there are places and times, (like in order responses, invoices and shipping notices) that quantity ordered and other quantities have a distinction.  The quantity is Numeric integers only.  Ordering fractions of something is not supported.  The PO1_02 is conditional with the PO1_03, if one exists the other is required.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_03 </em></td>
<td>This is the Unit of Measure.  It is a 2 character, Alpha-Numeric value.  It is also an encoded value.  Being &#8220;encoded&#8221; means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.</p>
<p>When the PO1_02 and PO1_03 are used together, we can tell how much of something is being ordered.  1 CA (1 case) is not the same as ordering 1 EA (1 each) of an item.  Generally this is not a problem.  The data in the catalog is accurate.  When there is a problem, it is important to go back to the PO to find out exactly how many items were ordered and in what UOM.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_04 </em></td>
<td>This is the Price.  It is optional, but most of the time is present.  It is required if the PO1_05 is present.  This is a Numeric, but can be decimal  it is not strictly currency formatted, so it is possible to have item prices that precise past .01.  This is the price of a single item, so we would multiply the PO1_02 and the PO1_04 to arrive at the cost of the line item.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_05 </em></td>
<td>This is the Price Basis Code.  This is optional, and most of the time is not used.  If it is used, it denotes where the PO1_04 price was derived from.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_06 </em></td>
<td>Is a Product or Service Qualifier.  This element is a 2 character, encoded value.  All of the &#8220;Qualifier&#8221; defined elements are encoded values.  This, again, means that there is a list of acceptable values for this element, any value outside of that set is invalid and will cause an exception.</p>
<p>This qualifier defines what type of value is found in the next element, the PO1_07.  So if the PO1_06 has a &#8220;VC&#8221;, then the PO1_07 contains a Vendor&#8217;s Catalog Number.  (This means it is a part number as found in the Vendor Catalog.)</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_07 </em></td>
<td>This is a Product or Service ID.  It is Alpha-Numeric, and can be from 1 to 48 characters in length.  It is conditional with the PO1_06, if one is present, the other must be present.  This value is an identifier like a part number or other type of line item data.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_08 </em></td>
<td>The PO1_08 has the exact same definition as the PO1_06 with the exception that it defines the type of value is found in the PO1_09.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top"><em>PO1_09 </em></td>
<td>The PO1_09 has the exact same definition as the PO1_07.  This is a Product or Service ID.  It is Alpha-Numeric, and can be from 1 to 48 characters in length.  It is conditional with the PO1_08, if one is present, the other must be present.  This value is an identifier like a part number or other type of line item data.</td>
</tr>
<tr>
<td width="10%" align="left" valign="top">PO1_06 to PO1_25</td>
<td>This pattern continues all way to <em>PO1_24 </em>and <em>PO1_25. </em>All of the segment pairs from PO1_06 t PO1_25 that have the same potential values for each pair.  In earlier version of EDI, like 3010, the PO1 segment only had 23 elements.  Or in other words it was one Product or Service pair shorter that what we have in  4010.</td>
</tr>
</tbody>
</table>
<p><strong>Good Form on PO1 line</strong></p>
<p><a href="http://www.theintegrationengineer.com/edi-in-good-form/">EDI in Good Form</a> is both style and best practice tips to avoid common exceptions.  Paying attention to good form tips and best practices helps you create an integration solution that is not only complies to the standard, but functions to help you and your trading partner have an unnecessary support burden due to the avoidable unexpected.</p>
<p>1.  It is bad from to have PO1 Product and Service pairs that are empty.  This relates to not having any trailing element delimiters.  It also goes along with not having empty pairs in the line with populated Product and Service element pairs following.  Thus it is best to build your mapping so that optional data doesn&#8217;t create empty elements when it opts out.</p>
<p>2.  When reading a PO1 line, it is best to assume that an expected Product and Service value could be in any pair.  So the map needs to walk down the pairs of elements until it finds the qualifier that indicates the value you are looking for.  This allows you to use the same input map with multiple EDI producing trading partners that may have interpreted the priority of data in different ways, and avoid exceptions.</p>
<p>3.  When producing EDI with a PO1 line, it is best to be as consistent as possible with your placement of the Product and Service data.  Create your logic and mapping so that mandatory data occurs early in the PO1 line, and optional data is moved to the end.  This will keep your required data from hopping around positionally.  This will help your trading partners that may not have had the foresight to follow Good Form Tip number 2 from having exceptions that slow down you process.</p>
<p><strong>PO1 Loop Segments</strong></p>
<p>As we said in the beginning, the PO1 is a segment, and a <a href="http://www.theintegrationengineer.com/edi-repeated-segments/">loop/group.</a> And as you may have noticed, there is data that you may need that is not covered in the elements available in the PO1 Segment that belong to the line item.  Values like Item Description, found in the PID segment. Or Tax information, found in the TAX and TXI segments.  These and other values are found on the line item, but are not on the PO1 segment.  We will have talk about some of these other segments and where to find other common data on another day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/line-item-part-one-po1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EDI Elements</title>
		<link>http://www.theintegrationengineer.com/edi-elements/</link>
		<comments>http://www.theintegrationengineer.com/edi-elements/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 16:44:18 +0000</pubDate>
		<dc:creator>Roy</dc:creator>
				<category><![CDATA[EDI]]></category>
		<category><![CDATA[Elements]]></category>
		<category><![CDATA[b2b]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[data type]]></category>
		<category><![CDATA[Delimited]]></category>
		<category><![CDATA[element]]></category>
		<category><![CDATA[Element Notation]]></category>

		<guid isPermaLink="false">http://www.theintegrationengineer.com/?p=59</guid>
		<description><![CDATA[What is an Element?
In the context of delimited data files, an element is the contents between two delimiters.  Like in a spreadsheet, the element is the contents of a cell.  In EDI, we have delimited segments, and just like a delimited file, the contents between the delimiters is the element.
So in this segment &#8220;PO1*1*8*EA*10**SW*H11510.REF*CT*089480-00-B-0336~&#8221;, the [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-61" title="Element" src="http://www.theintegrationengineer.com/wp-content/uploads/2008/12/atomic_particle.png" alt="Element" width="99" height="95" /><strong>What is an Element?</strong></p>
<p>In the context of delimited data files, an element is the contents between two delimiters.  Like in a spreadsheet, the element is the contents of a cell.  In EDI, we have delimited segments, and just like a delimited file, the contents between the delimiters is the element.</p>
<p>So in this segment &#8220;PO1*1*8*EA*10**SW*H11510.REF*CT*089480-00-B-0336~&#8221;, the 5th element or PO1_04 is &#8220;10&#8243;, while the 6th element or PO1_05 is empty.</p>
<p><em>Empty elements are <a href="http://www.theintegrationengineer.com/the-nature-of-null">not necessarily null</a>.  Calling something null when the data type is know like an empty element can cause some data theory debates.  I don&#8217;t want to start one here, but may write about that philosophical discussion at a later time.</em></p>
<p><span id="more-59"></span></p>
<p><strong>What types of elements are there?</strong></p>
<p><img class="alignright size-full wp-image-85" title="Type" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/01/typeset.jpg" alt="typeset EDI Elements" width="114" height="85" />What we are really talking about is the data type.  Each element in an EDI file has a specific data type defined.  Part Numbers are Alpha-Numeric which means that they may contain letters in the alphabet, and number in any mixture.  Where a price is not just a number, but is a currency.  Letters are not acceptable in the price field, so one can&#8217;t populate it with &#8220;N/A&#8221; in any case.</p>
<p>I won&#8217;t describe all of the data types here.  That is a discussion for some other time.  Most of the time these are fairly easy to work with, especially when you have samples to work from.  But there is another type of element.  This is the encoded value element.  This element does still contain a value, but it is in a code.</p>
<p>UOM or Unit Of Measure is the easiest to relate to, as it deals with something physical.  In the PO1 segment above, we find the UOM in the PO1_03 element.  In this case it means &#8220;each&#8221;  and by putting &#8220;EA&#8221; in this position we don&#8217;t have to type out &#8220;each&#8221; every time we just us EA as the abbreviation for this.</p>
<p>Why do we do this?  Well as I said the UOM is the easiest encoded element.  Some of the other encoded elements that are available define larger concepts.  Also, by having an encoded element, the EDI standard constrains the data to a rational type of data.</p>
<p>For instance, if you have an order response, we don&#8217;t want to have to process a free form response, we want to know if the product is accepted, back ordered or canceled.  And I want to know this in the same way for everyone.</p>
<p><strong>What is Element Notation?</strong></p>
<p><img class="alignleft size-full wp-image-86" title="actuarial_notation" src="http://www.theintegrationengineer.com/wp-content/uploads/2009/01/actuarial_notation.jpg" alt="actuarial notation EDI Elements" width="72" height="53" />Elements are contained in segments.  The segment is referred to by the characters that preceded the first delimiter.  Each element in the segment has the name of the segment followed by its position in the segment.  Sometimes these are not separated, or they are separated by a space or underscore.  The position of the element is 0 based counting.  This means that the first position, the position preceding the first delimiter where the name of the segment is found, is position 0.</p>
<p>Thus in this segment, &#8220;N1^ST^Bill&#8217;s Grill^01^123456789~&#8221;, the N1 is N1_00.  I prefer the underscore to the space or no delimiter format for clarity.  But they are all used, so this would be the same as N101 and N1 01.  We use a two digit position designator even for positions less than 10 for clarity as well.  If there are any segments that develop more than 99 positions, there won&#8217;t be many.  And even fewer will ever be used.  And we don&#8217;t reduce it to just one digit, as N11 might actually exist, and that could cause confusion.</p>
<p>Now back to our example;  N1_01 is &#8220;ST&#8221;.  N1_02 is &#8220;Bill&#8217;s Grill&#8221; as so forth.</p>
<p>An example of how this is used is first found in our mapping rules that we need to write down.  And then in our notes and documentation.  If you wanted to say, &#8220;Whenever we have a ship to address for &#8216;Bill&#8217;s Grill&#8217; we need to used the Duns number of &#8216;123456789&#8242;.&#8221;  We could say , &#8220;When N1_01 = &#8216;ST&#8217; and N1_02 = &#8216;Bill&#8217;s Grill&#8217; then N1_03 = &#8216;01&#8242; and N1_04 = &#8216;123456789&#8242;.&#8221;  This way we are not leaving anything open to interpretation and clarity is our friend when writing rules for mapping and forming data.</p>
<p>You will see this used extensively in the mapping exercises here, and once you get the hang of using Element Notation, you will never write it any other way.</p>
<p>–</p>
<p>Looking for something else relating to EDI?  Check out the <a href="../the-edi-primer/">EDI Primer</a> post</p>
<p>–</p>
]]></content:encoded>
			<wfw:commentRss>http://www.theintegrationengineer.com/edi-elements/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
