FileMaker gestiona muy bien las integraciones con ciertas bases de datos mediante ESS (External SQL Data Sources). Configurando la integración adecuadamente podemos lograr ver en nuestro gráfico de relaciones las tablas de otras bases de datos externas y tratarlas con total transparencia. Recurrir a esta solución es lo primero que me planteé en este proyecto de integración. Pero los problemas no tardaron en llegar…

Algunas versiones de SAP trabajan con bases de datos Oracle que permitirían acceso ESS. Digo permitirían pues, aunque la conexión es tecnológicamente factible, no es fácil que el departamento de IT autorize el acceso a las tablas de SAP…Comprensible, desde mi punto de vista, por otra parte. En mi caso esta posibilidad ni tan sólo llegué a considerarla pues la versión de SAP que necesitaba integrar utilizaba una base de datos propietaria (HANA) que no permite ESS y que parece ser que es la estándar de SAP actualmente.

Llegados a este punto, el departamento de IT propuso abordar la integración mediante Web Services.

Os voy a resumir muy rápido cuál era el objetivo de la integración en el siguiente esquema.

FM-SAP1fig. 1

En cada uno de los dos rectángulos (FileMaker y SAP) se describen aquellas funcionalidades que son relevantes para la integración. Las flechas que salen de FileMaker hacia SAP (1, 3, 6 y 8) representan la solicitud de información que FileMaker le hace a SAP. Las flechas que salen de SAP hacia FileMaker (2, 4, 5, 7 y 9) representan las respuestas de SAP a las solicitudes de FileMaker. Los números representan la secuencia temporal.

Resolver la integración requería:

  1. Buscar un método de interrogar a SAP mediante HTTP.
  2. Buscar un método de recibir información de SAP mediante HTTP.

El esquema de comunicación bidireccional con  un servidor web (SAP en este caso) y un sistema externo que se comunica por HTTP es el siguiente:

FM-SAP2

fig. 2

La base de este sistema de comunicación son los Web Services que están diseñados en el sistema de software 2 (SAP en este caso). Un Web Service es una función que reside en el sistema de software 2 y que responde a parámetros enviados desde el sistema de software 1. El Web Service debe ser diseñado por los desarrolladores de SAP y para su definición utilizan WSDL (Web Service Description Language).

En realidad el sistema de software 1 debe crear un documento XML que contiene los parámetros, enviarlo por HTTP mediante un protocolo SOAP (Simple Object Access Protocolo) y esperar a que el sistema de software 2 le responda por la misma vía y protocolo con un documento XML con los datos solicitados.

El documento WDSL es el que define cómo debe ser la estructura de ambos XML. El documento WDSL nos lo pasan los desarrolladores de SAP en una URL. Desde el sistema de software 1 debemos introducir esta URL en un cliente SOAP para poder visualizar cómo son ambos XML. Yo utilicé el cliente SoapUI de SmartBear. Quiero dejar claro que utilizar este cliente SOAP es sólo necesario puntualmente en la fase de desarrollo con el objetivo de visualizar cómo son los XML.

Este es un ejemplo de cómo se veían los XML ejecutando uno de los Web Services desde el cliente SoapUI.

FM-SAP3

fig. 3

El problema es que FileMaker no puede actuar nativamente como un cliente Soap, por lo que tenemos que buscar una forma de crear y enviar el XML de solicitud mediante HTTP.

FM-SAP4

fig. 4

La solución consiste en realizar para cada uno de los Web Services los siguientes guiones:

  1. Crear mediante un guión una variable que contenga el XML que solicita la información.
  2. Enviar el XML anterior vía HTTP POST mediante un plug-in. BaseElements de Goya fue la pieza clave en el proceso. Mil gracias a Nicholas Orr de Goya.
  3. Recibir el XML de respuesta y ponerlo en una variable.
  4. Extraer la información de los diferentes campos (de nuevo utilizando el plug-in de Goya)
  5. Crear registros en una tabla virtual para que el usuario pueda seleccionar.

En el archivo .fmp12 adjunto se muestran los 3 guiones (A, B y C) necesarios para realizar los pasos anteriores. El guión A resuelve los puntos 1, 2 y 3, el guión B el punto 4 y el guión C el punto 5.

Estos tres guiones son los necesarios para la gestionar la consulta nº 1 y la respuesta nº2 según la fig. 1. El resto de solicitudes y respuestas no se incluyen en el archivo .fmp12, pero son idénticas conceptualmente.

Finalmente también anexo un vídeo dónde se visualiza el funcionamiento de todo el proceso representado en la fig.1

Espero que os sea de utilidad si se os presenta un proyecto que requiere integración con SAP.

Feliz FileMaking 🙂

Demo File: