Ejemplo de integración con SAP

<< Click to Display Table of Contents >>

Navigation:  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.

 

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: Módulo de vuelos

En este ejemplo, vamos a integrar el módulo Vuelos de SAP R/3 (mySAP) en un proceso de Bizagi.

Nuestro objetivo es crear un proceso en Bizagi en donde los usuarios puedan buscar un vuelo y después reservarlo (haciéndolo en Bizagi a través de 2 puntos de integración diferentes).

Modelamos nuestro proceso de Bizagi y lo llamamos Reserva de Vuelos, como se muestra:

 

Model_obj

El bosquejo básico de este proceso es:
1. Primero, un solicitante inicia el proceso para buscar un vuelo que cumpla con sus requerimientos (rango de fechas, origen, destino).

En esta primera actividad llamada Solicitar vuelo, Bizagi traerá los vuelos disponibles directamente desde SAP y presentará los resultados (desde el clic de un botón).

 

2. La segunda actividad llamada Aprobar vuelo es asignada a un aprobador quien recibe esta solicitud y aprueba o rechaza.

 

3. Si se aprueba, Bizagi reservará el vuelo (esta integración termina creando un nuevo registro en SAP) a través de una tarea asíncrona llamada Reservar vuelo en SAP.

 

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 BAPIs.

Ilustraremos cómo configurar la invocación de las BAPIs de SAP desde cualquier parte de su proceso.

En este ejemplo, invocamos 2 BAPIs diferentes:

Para buscar los vuelos, usaremos la BAPI wrapper llamada BAPI_FLIGHT_GETLIST.

Para reservar un vuelo, usaremos la BAPI wrapper llamada BAPI_FLBOOKING_CREATEFROMDATA.

 

 

note_pin

Tenga en cuenta que debe tener instaladas las librerías SAP.NET requeridas para usar el conector de SAP como se describe en conector de SAP.

 

 

Preparación

Vamos a necesitar identificar explícitamente la información importante para usar las BAPIs BAPI_FLIGHT_GETLIST y BAPI_FLBOOKING_CREATEFROMDATA 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 estas 2 BAPIs.

 

A través del comando se37 en SAP y del constructor de funciones, podemos ver la definición de los Experto de funciones definidos usando comodines de SAP (Por ejemplo *):

 

Preparation0_se37

 

Podemos revisar más detalles tanto para BAPI_FLIGHT_GETLIST como para BAPI_FLBOOKING_CREATEFROMDATA:

 

Preparation1_FLB

 

Para BAPI_FLIGHT_GETLIST,se muestra su definición dando clic en Display:

 

Preparation2_displayFn

 

Observe que necesitará considerar: parámetros de importación opcional y obligatoria, las tablas que podemos establecer como referencia, parámetros de exportación y cualquier excepción predefinida para configurar el manejo de errores de Bizagi.

 

Preparation3_flightgetlist

 

 

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, vamos a permitirle al solicitante filtrar los vuelos disponibles de acuerdo a un rango de fechas seleccionado y por la ciudad de partida y destino.

Para probar este módulo de función en SAP, ingresamos valores dummy en los campos obligatorios (por ejemplo Desde: New York, Hacia: Frankfurt):

 

Preparation4_test

 

Para los valores previamente usados, estos son nuestros primeros 20 resultados (como se especifica en Max_Rows):

 

Preparation5_results

 

De igual manera, buscamos la definición para BAPI_FLBOOKING_CREATEFROMDATA:

 

Preparation6_flighbooking

 

 

note_pin

En este ejemplo específico, ninguna de las BAPI de SAP tienen excepciones predefinidas.

Por lo tanto, en este ejemplo no configuraremos un tratamiento especial para las invocaciones fallidas.

Para más información sobre manejo de errores en el conector de SAP, consulte: Manejo de errores de SAP.

 

Cuando pruebe esta BAPI cuyo objetivo es crear un registro en SAP, observe que puede hacer un "test run" y evitar este registro nuevo para propósitos de prueba:

 

Preparation7_fillbooking

 

Tras una ejecución exitosa de esta BAPI, usted puede consultar la Tabla llamada RETURN, la cual, provee el mensaje detallado y la confirmación de SAP:

 

Preparation10_success

 

note_pin

Si usa la opción Test/Execute en SAP Logon, asegúrese de hacer commit o rollback a la ejecución antes de tener que invocar estas BAPIs (También puede explícitamente cerrar SAP Logon para descartar las cambios).

De lo contrario, es común que algunas tablas y estructuras queden bloqueadas esperando el commit de una transacción.

 

Tenga en consideración el objetivo de nuestro proceso Reserva de Vuelos, además de la información involucrada en la integración con SAP, en este ejemplo, considere las siguientes definiciones en nuestro modelo de datos:

 

Preparation8_datamodel

 

Observe que:

Nuestra entidad de proceso se llama FlightBooking.

Las entidades del criterio de búsqueda y los filtros de fecha guardan la información que ingresa el solicitante para filtrar los vuelos que cumplen sus requerimientos.

Los vuelos disponibles son una colección que será llenada con la lista de vuelos traídos desde SAP.

El vuelo marcado por el booleano Selected?, se asigna en el atributoiSelected flight en la entidad FlightBooking.

Los mensajes de SAP almacenan los mensajes de respuesta enviados por SAP cuando se reserva un vuelo. Cuando la BAPI no se ejecuta exitosamente, SAP retornará más de 1 mensaje especificando detalles.

La información de ciudades, aeropuertos y aerolíneas se registra a través de 3 entidades paramétricas: City, Airport y Airline. Para las 3 entidades, incluimos una definición de llave de negocio en Bizagi:

 

Preparation9_parameter

 

 

Note que hemos incluido valores predefinidos para la entidad Airline, use los mismos códigos que maneja SAP para las compañías de vuelo.

De igual manera y en este ejemplo, establecemos en Bizagi las llaves de negocio en las entidades City y Airport usando los siguientes códigos:

NEW YORK como el código de Nueva York (EEUU) y FRANKFURT como el código Frankfurt (Alemania).

JFK para el aeropuerto John F. Kennedy en Nueva York y FRA para el aeropuerto de Frankfurt.

 

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 SAP

Vamos a integrar Bizagi con SAP en 2 partes del proceso:

Primero, en la actividad Solicitar vuelo, invocando BAPI_FLIGHT_GETLIST cuando el solicitante haga clic en un botón.

Después, en la tarea asíncrona llamada Reservar vuelo en SAP donde el sistema invoca automáticamente a BAPI_FLBOOKING_CREATEFROMDATA (sin interfaz de usuario).

 

Invocación de BAPI_FLIGHT_GETLIST.

Para invocar esta BAPI la cual trae los registros, a través del Diseñador de Formas de Bizagi (Paso #3 del Asistente de Procesos), consideramos la siguiente interfaz de usuario:

 

Invocation0_UIgetlist

 

A través de Acciones y validaciones, establecemos la invocación de una BAPI de SAP desde un cambio o acción en las interfaces de usuario.

En este ejemplo, invocaremos SAP cuando se haga clic en el botón anterior.

Para hacer esto, creamos una acción que usa la opción ejecutar SAP:

 

Steps1_ButtonAV

 

La configuración relevante se establece en la acción ejecutar sap (la regla ClearAll solo borra todos los registros de la tabla), en la cual, se necesita hacer clic en argumento para configurar su integración como se muestra a continuación:

 

1. Seleccione la configuración SAP.

Esto significa seleccionar la configuración de la conexión para SAP, como se hizo inicialmente en el módulo Sistemas.

Por defecto, se selecciona la configuración de SAP predefinida y está opción será, además, muy útil en caso de tener múltiples sistemas de SAP a los que se pueda conectar.

Observe que puede crear una nueva configuración desde el botón Nueva.

 

Example0_Getlist1

 

2.  Seleccione el módulo de la función.

Use el cuadro de búsqueda para filtrar y buscar el módulo de la función que desea invocar en SAP.

Recuerde que se listará cualquier RFC o BAPI wrapper, siempre y cuando tenga configurada apropiadamente la conexión con un usuario con suficientes privilegios.

 

Dé clic en Buscar para listar los Experto de función encontrados. Escoja el que desee y dé clic en Siguiente.

 

note_pin

Tenga en cuenta que en el cuadro de búsqueda puede usar cualquier caracter de comodín de SAP como *, + o #.

Para más información sobre estos comodines, consulte la documentación de SAP en

http://help.sap.com/saphelp_46c/helpdata/en/85/dae7c04bac11d1890e0000e8322f96/content.htm.

 

3. Mapee los parámetros de Importación.

Use el mapeo gráfico para mapear las entradas de su módulo de función de SAP.

Tenga en cuenta que los parámetros enviados como referencia a este módulo de función a través de tablas de SAP, también son presentados en este paso.

Use el botón Maximizar para acceder a las funciones de mapeo:

 

SAP_maximize

 

Cuando maximice, mapee los datos correspondientes de Bizagi a la BAPI de SAP:

 

Example0_Getlist2

 

Observe que en este ejemplo, usamos las funciones de Constante para mapear la entrada Max_Rows y las demás que no sean potestad de la configuración de los usuarios finales.

Dé clic en Siguiente.

 

4. Mapee los parámetros de Exportación.

Use el mapeo gráfico para mapear las salidas del módulo de función de SAP en Bizagi.

Tenga en cuenta que los parámetros enviados como referencia a este módulo de función a través de tablas de SAP, también son presentados en este paso.

Recuerde que esta BAPI simplemente ejecuta una consulta y no crea nuevos registros en SAP.

Asegúrese de tener su mapeo como se muestra:

 

Example0_Getlist3

 

Observe que mapeamos un arreglo de vuelos en nuestra colección de vuelos disponibles.

En caso de no haber vuelos disponibles que cumplan los criterios del usuario final, la tabla que representa la colección de vuelos disponibles en la interfaz de usuario, se presentará vacía.

A través de este ejemplo, no hay necesidad de configurar un tratamiento especial de manejo de errores.

Dé clic en Siguiente y omita  la configuración del manejo de errores haciendo clic en Finalizar.

 

note_pin

En caso de necesitar incluir un tratamiento sofisticado y personalizaciones para manipular los parámetros de importación o exportación, usted puede realizar esto incluyendo una transformación usando la opción Cambiar a mapeo avanzado:

SAP_advancedmapping

Para más información sobre esta posibilidad, consulte Mapeo Avanzado.

 

Invocación de BAPI_FLBOOKING_CREATEFROMDATA

Para invocar esta BAPI que crea un registro en SAP para la reserva del vuelo, consideramos una tarea asíncrona que ejecuta esta intergación como una tarea automática (sin intervención del usuario):

 

Example1_BookFlight1

 

A través de la definición de acciones de la actividad de la tarea Reservar Vuelo en SAP (A través del paso #4 del Asistente de Procesos), establecemos la invocación de la BAPI de SAP:

 

Example1_BookFlight2

 

note_pin

Un par de acciones de la actividad adicionales se configuran para este proceso.

Estas acciones de las actividades son secundarias y no hacen parte de la integración con SAP (no nos enfocaremos en estas).

Estas son configuradas principalmente para completar el proceso estéticamente y básicamente consideran:

Una regla de negocio sobre la aprobación de la solicitud de reserva de vuelo, de tal manera que el vuelo seleccionado sea asignado al atributo Selectedflight de nuestro modelo de datos.

Establecer una notificación de correo electrónico en la tarea de script Notificar Confirmación de SAP, para enviar al solicitante un correo electrónico con la información relacionada con su confirmación de reserva.

Establecer la fecha del sistema y la información del solicitante en los datos de la solicitud de vuelo.

 

La integración entonces, se configura como se describe:

 

1. Seleccione la configuración SAP.

Usamos la misma configuración de la conexión de SAP.

 

2.  Seleccione el módulo de función.

Buscamos BAPI_FLBOOKING_CREATEFROMDATA y lo seleccionamos.

Dé clic en Siguiente.

 

Example1_BookFlight3

 

3. Mapee los parámetros de Importación.

Use el mapeo gráfico para mapear las entradas de su módulo de función de SAP.

Tenga en cuenta que los parámetros enviados como referencia a este módulo de función a través de tablas de SAP, también son presentados en este paso.

Use el botón Maximizar para acceder a las funciones de mapeo:

 

SAP_maximize

 

Cuando maximice, mapee los datos correspondientes de Bizagi a la BAPI de SAP:

 

Example1_BookFlight4

 

Observe que en este ejemplo, usamos la función Constantes para mapear Customerid, Counter y Agencynum o las demás que no sean potestad de la configuración de los usuarios finales.

Para la instancia, observe que puede enviar una X para marcar esta invocación como un test run y reserve only.

Dé clic en Siguiente.

 

4. Mapee los parámetros de Exportación.

Use el mapeo gráfico para mapear las salidas del módulo de función de SAP en Bizagi.

Tenga en cuenta que los parámetros enviados como referencia a este módulo de función a través de tablas de SAP, también son presentados en este paso.

Asegúrese de tener su mapeo como se muestra:

 

Example1_BookFlight5

 

Dé clic en Siguiente.

Finalmente, y debido a que esta BAPI específica no tiene predefinida ninguna excepción de SAP (como observamos en los pasos de Preparación), no configuraremos ningún error funcional para esta.

Entonces, dejamos la opción Lanzar excepción para manejar cualquier error durante la invocación de esta BAPI y damos clic en Finalizar.

Si hay algún error durante la invocación, la tarea asíncrona será reintentada automáticamente por Bizagi.

 

Example1_BookFlight6

 

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.

 

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.

 

Ejecución

Dé clic en la opción Ejecutar en Bizagi Studio para lanzar el Portal de Trabajo incluido en el Studio y previsualice cómo sus procesos serán impulsados por Bizagi Engine:

 

RunBizagiRun

 

Cuando inicie sesión y cree un nuevo caso para el proceso Solicitud de vuelo, el solicitante será capaz de buscar los vuelos de acuerdo a un rango de fechas y por la ciudad de origen y destino:

 

Execution0_requestflight

 

El botón actualiza la tabla con los vuelos disponibles de tal forma que el solicitante selecciona uno e ingresa el nombre del pasajero para reservarlo:

 

Execution1_flightselected

 

Una vez la reserva se ha verificado por un aprobador, Bizagi procesa la reserva.

El solicitante es notificado sobre la operación exitosa y recibe un correo electrónico con la información de la confirmación:

 

Execution2_notification

 

 

note_pin

Tenga en cuenta que debe tener instaladas las librería de SAP.NET requeridas para la ejecución, para que el conector de SAP pueda trabajar en Bizagi.

Mayor información sobre esta instalación se describe en conector de SAP.