Combinar/Dividir elementos de datos
Los segmentos EDI a menudo permiten usar varios elementos consecutivos del mismo nombre. Por ejemplo, esto se puede aplicar al segmento N2 del conjunto de transacciones 850 - PURCHASE ORDER del estándar X12. De acuerdo con la especificación el segmento N2 permite dos campos alfanuméricos Name consecutivos, de los que uno es obligatorio y el otro opcional, (imagen siguiente).
Los segmentos que permiten varias repeticiones de instancias de un elemento de datos en particular tienen el atributo mergedEntries definido para el elemento Data relevante en el archivo .Segment (resaltado en amarillo en el extracto de código más abajo). El archivo .Segment se almacena originalmente en el directorio MapForceEDI\<EDI_Standard> de la carpeta de la aplicación.
<Segment name="TI" info="Transport Information">
<Data ref="F140" minOccurs="0" mergedEntries="2"/>
<...>
</Segment>
Al crear o modificar una configuración EDI puede usar un único nodo para todas las incidencias del elemento de datos (entradas combinadas) o dividir este elemento de datos en nodos separados (véase más abajo).
Método 1: usar un único nodo para todas las incidencias del elemento de datos
Con este método usamos un único nodo para todas las incidencias del elemento de datos Por defecto, el elemento de datos F93 del segmento N2 se representa en la asignación como un nodo único (imagen siguiente). Si dibuja una conexión de asignación desde el nodo F93 hasta un nodo de destino, MapForce creará tantos elementos en el archivo de destino como instancias de F93 existan en el archivo de origen. Aquí se sigue la regla básica de las conexiones de MapForce: Por cada elemento en el archivo de origen se crea uno en el de destino.
Para asegurarse de que el elemento de datos F93 está representado como un solo nodo, abra el archivo X12.Segment y compruebe si el atributo mergedEntries está definido en el elemento de datos F93 del segmento N2. En el siguiente fragmento de código, el atributo mergedEntries tiene el valor 2. Esto significa que el elemento de datos puede tener hasta dos instancias consecutivas en el archivo de instancia EDI, pero el elemento de datos aparecerá como un único nodo en la asignación.
<Segment name="N2" info="Additional Name Information">
<Data ref="F93" mergedEntries="2"/>
</Segment>
Al asignar datos desde un elemento con entradas combinadas se crearán varios elementos duplicados en el lado de destino por cada instancia de este elemento. En este ejemplo el segmento N2 contiene dos instancias consecutivas de F93 (Michelle Butler and Mrs):
N2+Michelle Butler+Mrs'
Al asignar datos desde ese archivo EDI, en el lado de destino se generaría el siguiente resultado (observe las instancias duplicadas de <ContactName>):
<Customer>
<Number>123</Number>
<ContactName>Michelle Butler</ContactName>
<ContactName>Mrs</ContactName>
<CompanyName>Nanonull, Inc.</CompanyName>
</Customer>
Este método es recomendable cuando cada una de las instancias de un elemento de datos no es importante en sí misma y no quiere tener un nodo por cada instancia. Por ejemplo, un elemento de datos con varias instancias puede almacenar varias entradas de línea que conforman una dirección. Para este tipo de casos el método de combinar entradas puede ser más útil que tener nodos individuales para cada línea de la dirección.
Método 2: dividir un elemento de datos en varios nodos
Con este método puede crear varias instancias de un elemento de datos en el archivo del archivo .Segment. En este caso, por cada instancia del elemento de datos aparecerá un nuevo nodo en la aplicación. Hemos modificado el archivo X12.Segment de forma que el segmento N2 ahora tiene dos instancias del elemento de datos F93 llamadas F93_1 and F93_2 (véase el extracto de código más abajo).
<Segment name="N2" info="Additional Name Information">
<Data ref="F93" nodeName="F93_1"/>
<Data ref="F93" nodeName="F93_2" minOccurs="0"/>
</Segment>
Esta configuración crea dos nodos F93 en el componente 850:
Este método es adecuado cuando cada instancia del elemento de datos es significativa por sí misma y, en consecuencia, se desea separar los nodos en la asignación.