En esta sección se describen los pasos a seguir para llevar a cabo la configuración de la solución EventMesh para la gestión del evento de creación de la factura, y así habilitar la declaración del registro TicketBAI de manera automática y asíncrona.
Esta tarea se compone de varias partes, en las que se involucra SAP BTP. Si no tienes experiencia o es la primera vez que usas esta herramienta, por favor, consulta con los responsables de tu instancia de BTP, ya que el procedimiento puede ser complejo y a veces necesitará tomar decisiones que dependen de configuraciones previas, además el error en alguno de los pasos puede repercutir en tener que volver a empezar la configuración desde el principio.
El uso de la herramienta SAP EventMesh tiene costes asociados que serán repercutidos al cliente directamente por SAP.
Las tareas las dividiremos en 4 partes:
Habilitar la comunicación desde SAP S/4Hana Public Cloud a SAP BTP.
En el ejemplo que se muestra en el video, se configura el evento sap/s4/beh/businesspartner/v1/BusinessPartner/Created/v1
, pero se puede añadir/reemplazar por cualquier otro evento.
Notas: Al crear el SAP S/4Hana Cloud Extensibility, nos pedirá un valor para el campo “Instance name” recomendamos usar el id del sistema S/4Hana Cloud. Al crear la instancia de Event Mesh consumer nos pedirá un valor para el campo “Receiver system” (minuto 4:00), recomendamos usar el id del sistema S/4Hana concatenando una C (de consumer) al final.
https://www.youtube.com/watch?v=4LspIL3NxqQ&t=2s&ab_channel=SAPDevelopersGuardar el nombre de la Queue que hemos creado en la instancia de Event Mesh (minuto 4:47) lo vamos a necesitar en el paso 3. (Como aparece en el listado una vez creado).
En este paso conseguimos configurar la conexión desde S/4Hana Cloud a BTP, esta configuración nos ha generado una instancia de Event Mesh que funciona como proveedor, adicionalmente hemos creado otra instancia de Event Mesh manualmente que servirá como consumidor de eventos que se publiquen desde nuestro S/4Hana Cloud.
Habilitar la comunicación desde BTP a S/4Hana Cloud.
En este paso vamos a configurar en nuestro sistema lo necesario para consumir los eventos de la instancia de EventMesh.
El usuario que realice esta tarea deberá tener acceso al Tile Communication Arrangement, para ello deberá tener asignado el rol SAP_BR_ADMINISTRATOR.
En el caso de que el sistema disponga de varios mandantes, esta tarea se realizará en el mandante de trabajo, que normalmente es el mandante 100.
Esta tarea será llevada a cabo en el Tile “Communication Arrangement”, crearemos un nuevo “Communication Arrangement basado en el Communication Scenario SAP_COM_0092, tiene la particularidad de que al crear pide un Service Key, que no es más que un JSON donde se incluyen todos los detalles de la conexión con una instancia Event Mesh.
El usuario puede ser uno nuevo o uno que exista previamente, normalmente crearemos uno que se usará en esta configuración.
El Service Key lo tenemos que generar desde BTP, desde la instancia de Event Mesh que creamos en el paso anterior (minuto 4:00).
Vamos al listado de instancias y localizamos nuestra instancia de Event Mesh, y seleccionamos “Create Service Key”.
Indicaremos un nombre para el Service Key, es indiferente, por ejemplo nuestro ID de sistema, y pulsaremos Crear.
Una vez generado, copiamos el JSON que genera y lo pegamos en la configuración del Communication Arrangement y pulsamos crear.
Con esto ya tenemos disponible la opción de consumir eventos de esta instancia de Event Mesh desde nuestro sistema.
Creación del handler.
Este paso puede no ser necesario si está implemetado ya desde el desarrollo de algún producto, como es el caso del evento de creación del JournalEntry de b+ TicketBAI Cloud
Para capturar el evento desde una clase que ejecutará nuestra lógica. Lo primero que tenemos que hacer es ir al canal que funciona como proveedor, desde la App “Enterprise Event Enablement - Configure Channel Binding”, reconoceremos el canal que funciona como proveedor porque es el contiene el evento que queremos capturar en la sección Outbound Topic Binding.
Vamos a la sección Event Metadata y copiamos el contenido entre llaves en un fichero .json que crearemos en nuestro pc.
En Eclipse, debemos crear un nuevo Event Consumption Model usando dicho json. Una vez terminado, se nos generarán varios objetos, entre ellos la clase donde podremos implementar la lógica que queremos ejecutar cuando se capture el evento. Por ejemplo:
Para terminar, desde Eclipse, necesitaremos crear un Communication Scenario que tenga como servicio de Inbound nuestro Event Comptumption Model. Después de añadir el Event Consumption Model debemos pulsar el botón Publish Locally.
En el Tile de Communication Arrangement, crearemos uno nuevo en base al Communication Scenario que acabamos de crear.
Creación del communication arrangement de handler.
En la app Communication Arrangement, debemos crear un nuevo basado en el Communication Scenario que hemos creado en el paso anterior.
Crearemos un nuevo Communication System, llamado, por ejemplo, XXX_EVENT_MESH. Marcaremos el flag Inbound Only, activaremos la sección Event Mesh y añadiremos el Canal que creamos en el paso 2 (Communication Arrangement de la instancia consumer de Event Mesh).
Añadimos también a la lista de Users for Inbound Communication el usuario que usamos en el paso 2 y guardamos.
Volvemos al Communication Arrangement y guardamos.
Configurar el canal de eventos.
Esta tarea será llevada a cabo en el Tile “Enterprise Event Enablement - Configure Channel Binding” y será necesario realizarla de forma manual en cada uno de los sistemas.
El usuario que realice esta tarea deberá tener acceso al Tile Configure Channel Bindings, para ello deberá tener asignado el rol SAP_BR_ADMINISTRATOR
Entramos en el canal que tiene el mismo ID que el Communication Arrangement que creamos en el paso anterior, y comprobamos que tiene lo siguiente:
Solo debemos crear un Subscription de la cola que creamos en el paso 1, y que deberíamos haber guardo el ID, como se comenta en dicho paso.
Si después de añadir la cola, en la columna Status podemos leer Acknowledged, entonces es que hemos realizado todos los pasos de la configuración correctamente, podemos pasar al último paso.
Con esto ya tendríamos terminada la configuración.