En ocasiones, entre los requerimientos del cliente localizamos el uso de un servidor FTP en el cual alojar ficheros para su posterior procesamiento en el ERP. Cuando se produce este caso de uso nos enfrentamos a tres puntos clave que debemos analizar:

+ El primero de ellos sería encontrar la forma de acceder a los ficheros del servidor FTP.
+ Tras obtener el documento, el segundo punto clave consiste en hallar el modo de enviarlo al ERP.
+ Y, por último, debemos estudiar cómo procesar el fichero Excel en el sistema.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

El objetivo de este artículo no es más que proponer un posible abordamiento para este caso de uso. El ejemplo consistirá en la importación de información relativa a una flota de vehículos. Un detalle a tener en cuenta de esta propuesta es que la mayor carga de trabajo la vamos a delegar al ERP.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Obtención del fichero alojado en el servidor FTP mediante un flujo de Power Automate

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Para resolver el primer punto que nos encontramos en este caso de uso, vamos a recurrir al uso de Power Automate, una de las herramientas de la Power Platform.

La característica más importante que tiene esta herramienta es su gran capacidad de integración con otros sistemas. Esto es posible gracias al uso de conectores. Un ejemplo de sistema con el cual puede integrarse la Power Platform sería un servidor FTP.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Para poder conectarnos a nuestro servidor, lo primero que tenemos que hacer es configurar la conexión. Para ello, debemos introducir la dirección, el puerto, el usuario y la contraseña correspondientes.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Una vez establecida la conexión, podemos obtener el fichero que deseemos mediante las acciones del conector. En nuestro caso, el documento a procesar estará alojado en una carpeta dentro del servidor.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Envío del documento a Dynamics 365 F&O mediante una acción de OData

Tras obtener el documento a través del conector de FTP de Power Automate, necesitamos enviarlo a nuestro sistema ERP.
La información que recibimos mediante el conector consiste en un JSON formado por el tipo de contenido y el contenido codificado en Base64. Dado que conocemos el tipo de fichero que vamos a procesar, únicamente necesitamos enviar la cadena de texto en Base64 a Dynamics 365 F&O.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Para enviar el contenido del documento aprovechamos la capacidad de integración que brinda OData a nuestro sistema. Mediante el uso de acciones OData podemos ejecutar lógica en el sistema destino añadiendo parámetros si fuese necesario. Para este caso de uso, enviamos como parámetro la cadena codificada en Base64.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Para poder usar OData necesitamos una entidad de datos de Dynamics 365 F&O pública.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Y para poder ejecutar una acción OData necesitamos crearla en dicha entidad.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Una vez creada la acción OData en el sistema destino, mediante el uso del conector de Dynamics 365 F&O de Power Automate podemos ejecutarla seleccionando la instancia, la acción y los parámetros, si fuesen necesarios.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure
Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Procesamiento del fichero Excel mediante el uso de X++

El último punto clave del caso de uso consiste en el procesamiento del documento tras recibirlo a través de la acción OData.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Para llevar a cabo esta tarea recurrimos a la clase JATExcelHelper (MSDyn365FO/JATExcelHelper.xml at master · jatomas/MSDyn365FO · GitHub) creada por Juan Antonio Tomás (Technical Lead en Axazure y MVP en la categoría de BizzApps) y disponible de forma púbica en su repositorio de GitHub. En el siguiente enlace podemos obtener información acerca de cómo utilizarla: Generar e Importar ficheros Excel con X++ en #MSDyn365FO – Juan Antonio Tomás (jatomas.com). Gracias al uso de esta clase podemos convertir un objeto MemoryStream en una colección Map.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

El primer paso entonces es transformar la cadena codificada en Base64 en un objeto MemoryStream. Para ello utilizamos la clase BinData para obtener un Container de Bytes y la clase Binary para traducir este Container en un MemoryStream.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Una vez obtenemos el objeto que necesitamos a partir del parámetro de la acción OData, usamos la clase JATExcelHelper para convertirlo en una colección Map. Este mapa usará como clave el número de la fila de la hoja de cálculo y como valor usará objetos Container con los valores de las diferentes columnas de la fila correspondiente.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

En esta propuesta, recorremos el mapa mediante el uso de su enumerador y creamos registros a partir de los valores de cada fila del fichero Excel.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

El resultado final se puede observar en el formulario alimentado por la tabla de la cual hemos creado los nuevos registros.

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure

Espero que os sea de utilidad este artículo y podáis aplicarlo en vuestros futuros desarrollos. ¡Hasta la próxima! 😊

About the Author: Adrián Camargo

Importación de un fichero Excel alojado en un servidor FTP a FnO Axazure
D365FO TECH

¿Quieres compartir?