Ejemplo de integración con SAP

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Asistente de Procesos > Integrar > Integración con aplicaciones > Conector de SAP >

Ejemplo de integración con SAP

Introducción

En la siguiente sección, vamos a ilustrar cómo integrar Bizagi con SAP sin necesidad de programar.

Esta integración es fácilmente configurable a través de la funcionalidad nativa llamada el Conector de SAP.

 

El ejemplo ilustrado en esta sección, difiere del que se enseña en el Ejemplo de integración de SAP principalmente porque: el ejemplo de esta sección crea un proceso el cual se inicia automáticamente por el sistema (de una manera programada con cierta periodicidad), el cuál a su vez sincroniza los clientes en Bizagi tal como se obtienen de SAP (crea y actualiza registros de las entidades maestras de Bizagi); mientras que el ejemplo previo tiene como objetivo proporcionar a los usuarios finales un proceso el cuál les permita buscar por vuelos disponibles y reservar uno que cumpla con las condiciones que requieren, lo cuál a su vez persiste una transacción nueva en SAP.

 

Antes de continuar, asegúrese de que tenga instaladas las librerías de SAP.NET requeridas por la conexión.

Para información detallada y requerimientos sobre el conector de SAP, consulte Conector SAP.

 

Ejemplo: Sincronización de clientes

En este ejemplo, vamos a integrar el módulo Vuelos de SAP R/3 (mySAP) en un proceso automático de Bizagi (que no requerirá de intervención humana).

Nuestro objetivo es crear un proceso en Bizagi que se disparará periódicamente (p.e semanalmente), para poblar y actualizar los clientes de los vuelos tal como están registrados en SAP.

Modelamos nuestro proceso de Bizagi y lo llamamos Carga de clientes de SAP, como se muestra:

 

SAPLoading_01Diagram

Para este escenario, cuando se modela el proceso es importante configurar las propiedades relevantes a los elementos BPMN que nos permiten ejecutar un proceso de manera automática y periódica.

Nótese que para ello por ejemplo, estamos usando un evento de inicio de tipo temporizador.

Configuramos la periodicidad bajo la cuál se inician nuevos casos:

 

SAPLoading_02Timer

 

note_pin

Tenga presente que para un ambiente de producción, y si va a sincronizar una gran cantidad de registros, deberá planear esta tarea acordemente (p.e, agendarla para una ejecución por fuera de las horas pico en el sistema, preferiblemente por fuera del horario laboral).

 

De manera similar, y para que la tarea de servicio invoque la BAPI de SAP, damos un manejo asíncrono y especificamos su parámetros de reintentos:

 

SAPLoading_03Asynchronous

 

 

 

note_pin

Para más información sobre el módulo de vuelos que viene instalado en SAP para propósitos educativos, consulte http://wiki.scn.sap.com/wiki/display/ABAP/Flight+Data+Application+-+Demo+Example+for+Integration+Technologies.

 

Pasos

Hemos dividido este ejemplo y ejercicio en 3 pasos principales:

 

Preparación.

En este paso, básicamente ilustraremos cómo identificar cuáles parámetros están involucrados tanto para enviar como para recibir información desde SAP (especialmente como una guía útil para las personas que no sean necesariamente expertas en SAP).

Revisaremos todo lo relevante a las funciones en SAP que vamos a integrar, principalmente a través de las opciones provistas por SAP Logon.

También, ilustra las consideraciones de diseño de nuestro modelo de datos en este ejemplo.

 

Configuración de la conexión.

Ilustraremos cómo configurar la conexión a su sistema SAP.

Este paso es necesario una sola vez.

 

Configuración de la invocación de la BAPI.

Ilustraremos cómo configurar la invocación de las BAPI de SAP desde el proceso en Bizagi.

En este ejemplo, invocamos la BAPI wrapper llamada BAPI_FLCUST_GETLIST.

 

note_pin

Tenga en cuenta que para el tercer paso, ya debería tener instaladas las librerías SAP.NET requeridas, como se describe en Conector de SAP (de lo contrario Bizagi Studio no se conectará con su sistema SAP).

 

Preparación

Vamos a necesitar identificar explícitamente la información relevante para usar la BAPI BAPI_FLCUST_GETLIST en SAP (qué información es obligatoria como parámetros de import, export y al usar tablas por referencia).

Usamos el SAP Logon para navegar los detalles de esta BAPI.

 

A través del comando se37 en SAP y del constructor de funciones, podemos ver la definición de los Experto de funciones definidos de SAP (al dar clic en Display seguidamente):

 

SAPLoading_04Se37

 

Para este ejemplo, no estaremos usando filtros al momento de obtener los clientes de vuelo desde SAP. Sin embargo y para efectos de ilustrar un ejemplo más sencillo y fácilmente verificable, obtendremos los primeros 20 registros al hacer uso del parámetro que define un máximo de registros (MAX_ROWS):

 

SAPLoading_05MaxRows

 

Para conocer mayor detalle sobre la información que retorna SAP, ubicamos la estructura de datos BAPISCUDAT que figura dentro de la respuesta de los parámetros de tablas o de export:

 

SAPLoading_06Export

 

Al hacer doble clic sobre BAPISCUDAT , podemos ver cuáles son los tipos de datos de la información que describe un cliente de vuelo en SAP:

 

SAPLoading_07BAPISCUDAT

 

 

note_pin

Para configurar los parámetros de entrada en su integración con SAP, deberá considerar la información presentada tanto en: Import como en tables.

Para configurar los parámetros de salida en su integración con SAP, deberá considerar la información presentada tanto en: Export como en tables.

 

Observe que puede usar la opción Test/Execute para validar sus resultados.

En nuestro ejemplo, validaremos la ejecución de la BAPI usando MAX_ROWS=20.

 

SAPLoading_08Test

 

Para los valores previamente usados, estos son nuestros primeros 20 clientes de vuelo (útil para validaciones posteriores desde Bizagi):

 

SAPLoading_09Results

 

 

Teniendo en cuenta el objetivo de nuestro proceso Cargar clientes de SAP, además de la información consultada en SAP para la integración, en este ejemplo consideramos la siguiente definición en nuestro modelo de datos:

 

SAPLoading_10DataModel

 

Observe las siguientes consideraciones en el modelamiento:

1. Para efectos de un ejemplo simplificado, no tomaremos la totalidad de la información de un cliente de vuelo de SAP, sino que usaremos solamente: ID, Nombre (Name), Código postal (Postal code), Correo electrónico (E-mail address), Teléfono (Phone) y Dirección (Street).

2. La información desde SAP será almacenada en una entidad llamada Flight Customer la cual es una entidad de tipo maestra en Bizagi. Nótese que esta entidad debe ser estrictamente una entidad maestra.

Si desea almacenar información en una entidad paramétrica, entonces el acercamiento de este ejemplo no debe ser usado sino que deberá considerar una replicación personalizada.

3. Nuestra entidad de proceso se llama LoadSAPCustomers y debido que las entidades en Bizagi requieren de por lo menos un atributo, utilizaremos uno llamado Synchronization date, el cuál será útil para almacenar la fecha en la cuál la sincronización se ejecutó.

4. Para permitir que Bizagi actualice clientes de manera automáticamente cuando éstos ya existan previamente (y evitar registros duplicados), es importante definir las llaves de negocio a nivel de nuestra entidad Flight Customer:

 

SAPLoading_11BusinessKey

 

 

Configuración de la conexión

Ahora, ingresamos los detalles de conexión para el conector de SAP en Bizagi.

Para hacer esto, vaya a la vista de Experto y localice el módulo Sistemas.

En el panel de la derecha, localice SAP bajo el ítem Conectores.

 

Incluya una nueva configuración de un conector de SAP haciendo clic derecho en SAP y seleccionando Nueva Configuración...:

 

Connection0_new

 

Ingrese los detalles de su sistema SAP como se describe a continuación:

Nombre del Host: La dirección IP o el nombre del servidor que aloja su sistema SAP.

Cliente: El número del cliente que accede al sistema SAP.

Espera de inactividad: El tiempo de espera en segundos para conexiones inactivas.

Por defecto, usted puede asignar un valor de 600.

Idioma: El código ISO de 2 letras que representa la configuración de idioma (como se ingresó cuando se accedió a SAP a través de SAP Logon).

Número máximo de conexiones: El número máximo de conexiones que permitirá a través del conector de SAP.

Por defecto, puede asignar un valor de 10 conexiones.

Tamaño del Pool: El número de conexiones que se manejaran para su reutilización.

Por defecto, usted puede asignar un valor de 5.

Número de sistema: El número de su sistema SAP.

Usuario: Un usuario autorizado para acceder e invocar BAPIs o RFCs.

El usuario de SAP configurado aquí, será usado como la cuenta de servicio de este conector.

Contraseña: La contraseña del usuario autorizado de SAP.
 

Connection1_props

 

Cuando termine, dé clic en Ok.

Observe que puede usar diferentes parámetros de configuración para cada ambiente de su proyecto (desarrollo, pruebas y producción).

 

Configuración de la invocación de la BAPI

Vamos a integrar Bizagi con SAP en la actividad Load Customers from SAP (Cargar clientes desde SAP).

Por ello, definimos una acción de actividad a la salida de la misma (OnExit) para invocar la BAPI llamada BAPI_FLCUST_GETLIST desde el paso número 4 del asistente de proceso.

Para hacerlo, siga estos pasos:

 

1. Dé clic en On Exit y adicione una invocación a SAP.

 

SAPLoading_16ActivityAction

 

2. Ubique la función de módulo específica al ingresar el nombre de la BAPI y al usar el botón para buscar (Search).

 

SAPLoading_12BAPI

 

Seleccione la BAPI y dé clic en Siguiente.

 

3. Dé clic en el botón de maximizar para mapear las entradas.

Asegúrese de utilizar la función llamada Constante para mapear un valor igual a "20" hacia el parámetro MAX_ROWS:

 

SAPLoading_13Inputs

 

Dé clic en Siguiente.

 

4. Mapee los parámetros de salida de manera correspondiente.

Lo relevante en este escenario de ejemplo es:

Asegurarse de mapear en la respuesta desde SAP hacia Bizagi, el campo que es la definición de la llave de negocio para esa entidad (en este ejemplo es CustomerID).

Asegurarse de mapear hacia la colección de clientes de Bizagi (Customer), haciendo uso de la opción por defecto Append que es representada como (A).

 

SAPLoading_14Outputs

 

note_pin

El uso que se ilustra en la imagen anterior, donde se mapean los datos que pertenecen a la definición de la llave de negocio en Bizagi Studio (para actualizar registros existentes), requiere estrictamente que estos registros ya estén persistidos en la base de datos.

Es decir, este acercamiento no funcionará si la información está siendo manejada directamente sobre las interfaces de usuario (no funcionará si los datos están únicamente en el scope de la actividad).

 

Dé clic en Siguiente.

 

5. Dé clic en Finalizar (Finish) para omitir la parte acerca del manejo de error y completar la configuración.

Esto se realiza así en este ejemplo puesto que esta BAPI específica no cuenta con ninguna excepción funcional a nivel de la BAPI en SAP (por lo que no se requiere configuración de manejo de error especial).

 

note_pin

Para ver en detalle cómo se realiza la configuración de manejo de error en la integración con SAP (si sus BAPIs cuentan con excepciones funcionales predefinidas), consulte Configuración de excepciones de SAP.

 

Una vez que haya finalizado, visualizará la acción definida como Connector BAPI_FLCUST_GETLIST.

Dado que este un proceso automático donde no hay intervención humana, en este punto es importante asegurarse de que la entidad de proceso se haya inicializado.

 

6. Inicialice la entidad de proceso creando una nueva acción de actividad en On Enter:

 

SAPLoading_17OnEnter

 

Para este ejemplo, creamos una expresión que tenga una instrucción de asignación de la fecha actual a nuestro atributo llamado Synchronization date.

Esto nos permitirá almacenar la fecha en la cuál la sincronización fue ejecutada:

 

SAPLoading_19InitAssignment

 

Al finalizar, se deben visualizar las siguientes acciones de actividad para esta tarea:

 

SAPLoading_18FinalRules

 

 

 

Y, ¡Eso es todo!

En este punto, hemos integrado Bizagi con SAP a través del conector de SAP con lo que se evita la necesidad de programar, y sincronizaremos la información directamente desde SAP hacia Bizagi de una forma programada.

 

 

Ejecución

Dada la naturaleza de este escenario en donde el objetivo es que el sistema ejecute la sincronización de información de manera periódica, esta tarea será ejecutada por el servicio Programador de su proyecto Bizagi y por lo tanto, deberá cerciorarse de que dicho servicio esté iniciado para que se disparen los casos nuevos de acuerdo a la periodicidad predefinida.

Tenga presente que podrá administrar el Programador (iniciarlo o reiniciarlo) utilizando Bizagi Management Console:

 

SAPLoading_21MC

 

Una vez que un nuevo caso se haya disparado, la verificación de la sincronización de información puede realizarse al usar el módulo de Entidades en Bizagi Studio y validar los valores que se cargan en la entidad llamada Flight Customer. Usted podrá visualizar los primeros 20 registros de los clientes de los vuelos de SAP:

 

SAPLoading_20VerifyValues

 

note_pin

Para verificar el comportamiento de este proceso en la actualización de información (p.e cuando se ejecute por una segunda vez), es ideal para este ejemplo que reconfigure la invocación de la BAPI de manera que: se obtenga un número mayor de registros desde SAP (p.e usando MAX_ROWS=50), mientras que se garantiza que haya información que haya cambiado en algunos clientes (p.e mediante el uso de BAPI_FLCUST_CHANGE para realizar cambios puntuales).

Adicionalmente a lo anterior, podrá incluir un evento de inicio común (como modificación temporal al proceso) de manera que pueda probar este proceso por medio de intervención manual (crear casos desde el Portal de trabajo para realizar verificaciones):

 

SAPLoading_22Aftertest