Bienvenidos a Iseries Venezuela

Las mejores prácticas, recursos, tips, enlaces, videos y artículos para informáticos relacionados con el Iseries y el As/400 lenguajes de programación RPG, ILE RPG y SQL.

The best practices, resources, tips, links, videoes and articles for computer related to the Iseries and the As/400 languages of programming RPG, ILE RPG and SQL.

Monday, August 8, 2022

EDI- Intercambio Electrónico de Datos

                           


EDI son las siglas que se refieren al envío de datos por vía electrónica que sustituye el envío de papel por el envío de rafagas de datos entre empresas o plataformas tecnológicas.

Para que el emisor y el receptor de la data se entiendan es necesario establecer el formato que permitirá al receptor decofidicar la data que recibe.

Existen varias alternativas para dar formato a la data en un proceso de transmisión electrónica de información.

 

En algunas instalaciones se nos pide a los desarrolladores de IBM I en lenguaje RPG o en otros lenguajes tener conocimientos de EDI. Sin embargo un intercambio de data entre distintas plataformas puede realizarse con distintos formatos. Algunos de esos formatos son: XML, JSON, EDIFACT, X12.

 En esta oportunidad me voy a referir a EDI X12 como uno de los formatos que se utiliza para realizar la transmision de data.

En este artículo daré una idea general de cómo usar este formato y al final, los remitiré a algunos enlaces que, a mi criterio, son bastante completos en cuanto a la explicación del uso de EDI X12. El objetivo de este artículo es presentar en forma clara y sencilla los conceptos fundamentales que les permita seleccionar el formato X12 que necesitan aplicar para la aplicación que estan desarrollando.

Conceptos Clave:

Transacción: Se refiere a un documento ( orden de pago, factura, cheque, operación bancaria, etc)

ANSI: American National Standar Institute. Esta Institución se encarga de generar los estandares internacionales para codificación de data. La institución tiene una división en ella denominada X12 que se encargó de generar el standard de su mismo nombre.

Para una cadena de tiendas por departamento que tiene varias sucursales, un ejemplo gráfico del standard EDI X12 para el envío de las facturas generadas durante el día sería el siguiente:



Algunos autores comparan esta estructura con la "Matrioska". Esto se refiere a las muñecas rusas que se encapsulan una dentro de otra desde la mas grande hasta la mas pequeña y última de la serie. Veamos un ejemplo a continuación:


Bloque de transmisión: 

El bloque de la estructura mas externo indica el inicio y el fin de la transmisión.

Como se ve en la figura, la línea de inicio del bloque debe comenzar con las letras    "ISA" y la linea de fin del bloque debe iniciar con las letras "ISE".

 En este bloque se especifica:

  • Información sobre la transmisión
  • Quien es el remitente
  • Quien es el destinatario
  • Dirección de envío
  • Fecha, hora, Tracking ID

Bloque de Lotes (Batch): (siguiente nivel encapsulado)

Se delimita la información de cada sucursal con la línea de inicio que comienza  con   "GS" y con la línea  de final de lote que comienza con  "GE".

En este bloque se especifica:

  • Información sobre la transmisión de cada lotes de información
  • Remitente y destinatario, código de version
  • Tipo de transaccion que se esta enviando
  • Tracking id

 

Bloque de Transacciones: (El nivel detallado de la data)

Se delimita la información de cada transacción con la línea de inicio que comienza     con "ST" y con la línea  de final de lote que comienza con  "SE".

En este bloque se especifica:

  • El número de segmentos que tiene la transacción para saber si esta completa o no. 
  • Se crean los segmentos y los elementos contenidos en ellos.

Cada linea de la transacción debe pertenecer a una estructura de datos virtual (data structure) llamada LOOP -XXX  predefinido por el estandar X12.  (XXX es el código que corresponda segun el tipo de transacción, compra, venta, etc). Cuando digo "Virtual" quiero decir que no debe declararse ni escribirse en ninguna parte de la rafaga de transmisión, pero si se debe aplicar el estandard definido en ella.

Por ejemplo, si necesitamos especificar el nombre del cliente en la data que vamos a transmitir, el standard  EDI X12 indicaría que debemos formatear la data de acuerdo a una estructura (data structure) "virtual" llamada: LOOP 2010BB que está conformada  a su vez por varios segmentos de datos. 

En EDI X12, cada linea de información se llama "segmento" y cada segmento está compuesto de "elementos". Los elementos se separan con un asterisco (*). Cada segmento debe terminar con el caracter ~.

Si queremos armar las lineas de la transacción que corresponden a los datos del cliente o (pagador) tenemos que generar cuatro (4) lineas.  

Primera linea/segmento debe comenzar con los caracteres "NM1" seguido del código del cliente. Esto le indica al receptor que el segmento contiene el nombre del cliente

Segunda linea/segmento debe comenzar con "N3" se refiere a la dirección del cliente.

Esto le indica al receptor que el segmento contiene la dirección del cliente

Tercera línea/segmento debe comenzar con los caracteres "N4" se refiere a la ciudad.

Esto le indica al receptor que el segmento contiene la ciudad del cliente

Cuarta línea/segmento debe comenzar con los caracteres "REF" se refiere al código de referencia del pago (por ejemplo nro de transferencia, nro de recibo, etc)

 

Esta sería la estructura del loop y al lado de cada segmento la manera de llenarlo.

  • Loop 2010BB- Payer Name: 

        NM1*Codigo de cliente* ~       

        N3*Sector*Avenida*Calle*Edificio* ~ 

        N4 *Ciudad* ~ 

        REF*89087123*~


Para cada transaccion de la grafica mostrada en el artículo, se habran generado 4 lineas o "segmentos" que contienen los datos del pagador/cliente. Se pueden omitir lineas en caso de que no se requiera, por ejemplo se puede omitir CIUDAD. Si no se requiere enviar la ciudad, se omite la linea o segmento que comienza con "N4"

Cada transacción EDI (orden de pago: código 820, orden de compra: código 850, etc) tiene un código estandard internacional para identificarlas.  Ademas, cada transacción tiene una lista de "LOOPS" asociados que indican como conformar cada segmento de la data. Armar una transmisión con formato EDi X12, es un proceso laborioso que requiere investigar y conocer el detalle de los loops que conforman cada transacción EDI X12.

La cantidad de transacciones que maneja EDI X12 y las especificaciones asociadas a cada tipo de dato son muy minuciosas y extensas para desarrollarlas en este espacio.  

En la siguiente imagen pueden ver un ejemplo de Orden de Compra, (transacción 850)  tomado de una academia que imparte cursos sobre EDI. (enlace al final)

 

Dejo los siguientes enlaces para quienes requieran mas información sobre EDI

Academia EDI

Documentacion EDI

Basicos de EDI 

Guia de EDI


        

     Si te pareció interesante, reenvíalo a un amigo haciendo click en el sobrecito que está al final del artículo o en el enlace de Linkedin que está encima de este mensaje.  El conocimiento es valioso, compártelo. 

    Autor: Ing. Liliana Suárez



No comments: