OData y SAP Gateway – II – Publicar un servicio OData en SAP

Nos metemos en harina y dejamos de teorizar. Después del artículo ‘OData y SAP Gateway‘ donde explicamos OData y su uso en SAP. Hoy vamos a aprender lo básico para saber montar un servicio OData en SAP usando el Gateway. Vamos a intentar que esto sea una serie de artículos sobre OData y SAP Gateway.


Serie de Artículos sobre OData

Este artículo pertenece a una serie de artículos que se van complementando poco a poco como itinerario de conocimiento:


Modelo de datos

Lo primero que vamos a hacer es definir nuestro modelo de datos a extraer. Esto no forma parte del proceso, pero es algo que necesitamos tener claro antes de continuar. Aquí os hago una propuesta. Vamos a hacer un servicio sobre Business Partners (BP) y sus objetos relacionados. Si no sabes lo que es un Business Partner revísa la entrada del blog:

Lo escribo en esquema para tenerlo claro.

Datos generales de Business Partner.

  1. Roles de BP
  2. Direcciones
  3. Relaciones
  4. Datos de Área de Ventas

Ahora lo pongo en un diagrama Entidad-relación.

Y además añadimos la estructura sencilla de tablas donde se encuentran estos datos:

Con esta estructura «sencilla» podemos abordar el problema (publicar un servicio web) de múltiples formas. Podríamos crear un servicio de consulta SOAP que por id de BP te devuelva una tabla con tablas anidadas con esa estructura. Pero luego, si queremos crear o actualizar tenemos que crear otro o crear un servicio monstruoso.

La potencia de OData reside en generar estas entidades y subentidades con las acciones CRUD (Create Read Update Delete) que necesitemos sobre cualquier entidad o subentidad. Por lo tanto, con OData hacemos un servicio web de microservicios. Pudiendo elegir entidad por entidad y campo por campo si se puede consultar, crear, actualizar o eliminar.


Estructuras a usar

Para crear este OData podemos hacer que cada entidad del modelo sea una entidad OData. De esta forma veremos que el servicio OData será muy versátil, pudiendo recuperar la profundidad de datos que necesitemos.

Para ello vamos a crear las siguientes estructuras y tipos tabla de las entidades subordinadas a los datos de cabecera.

Estructura para Roles de BP
Tipo Tabla para Roles de BP
Estructura para Direcciones de BP
Tipo Tabla para Direcciones de BP
Estructura de datos para Relaciones del BP
Tipo Tabla de Relaciones del BP
Estructura de Identificadores del BP
Tipo Tabla de Identificadores del BP

Con estos tipos de tablas creamos la estructura de datos de cabecera del BP.

Donde vemos que hay 4 tablas dentro de la estructura para los datos de Roles, Direcciones, Relaciones y Números de identificación del BP.


Gateway Service Builder (SEGW)

Una vez tenemos nuestro modelo y las estructuras creadas tenemos que crear un proyecto en la Gateway Service Builder (SEGW) y añadir la entidad del BP.

Al pulsar el botón de Nuevo nos aparecerá esta ventana

El campo Project Type es importante, porque nos permitiría crear un servicio OData v4. Ya hablaremos de eso, pero por ahora vamos a hacer un servicio OData básico, ya lo complicaremos más adelante.

Una vez creado el proyecto, estará vacío, por lo que vamos a añadir las entidades. Como previamente hemos creado la entidad de datos generales del Business Partner junto con todas las tablas relacionadas, vamos a importar esa estructura generada.

Entramos en la opción de importar una estructura del diccionario

Añadimos nuestra estructura padre de datos generales de Business Partners.

Seleccionamos nuestra estructura padre

Al darle a Next nos pedirá que indiquemos que campos/entidades queremos importar de la estructura seleccionada.

Como la estructura es nuestra, seleccionamos todo

Una vez hayamos seleccionado los campos y entidades nos pedirá, de cada entidad que vaya a crear y campo, cual es la clave, nombre y etiqueta. No obstante es algo que podemos cambiar posteriormente.

En Address la clave es Partner y Addrnumber
De IdentNumber la clave es PARTNER y TYPE.
De Relation la clave es PARTNER1 y PARTNER2.
De Roles la clave es PARTNER y RLTYP

Como resultado tendremos cinco entidades creadas:

  • BusinessPartner
  • Address
  • IdentNumbers
  • Relation
  • Roles

Cada una de ellas con los atributos y claves seleccionados en el punto anterior.

Relaciones entre Entidades

Ahora lo que tenemos que hacer es relacionar las entidades subordinadas con la entidad padre, para ello creamos una Assiciation

Botón derecho en Association y Create

Vamos a ver el ejemplo de Roles, el resto serán iguales puesto que la estructura de entidades es sencilla.

Definición de la Asociación entre entidades y su cardinalidad
Identificamos la asociación de claves entre entidades
Resumen de Asociación

Una vez hayamos hecho todas las asociaciones tendremos que generar el servicio con el botón

Vemos las entidades, asociaciones entre entidades y pulsamos a Generar

Al generar se nos propone unos nombres de clases controladoras del servicio OData. Por norma general esto aceptamos la propuesta y seguimos generando.

Clases controladoras del servicio OData

Al generar se nos añade la información de Service Implementation con todas las acciones CRUD de cada una de las entidades.


Implementación del servicio

Una vez tengamos generado el servicio veremos, en la parte de Service Implementation veremos cada una de las acciones posibles de cada una de las entidades. Por cada entidad tendremos las acciones:

  • Create: Creación de la entidad. Si estamos hablando de BusinessPartner, pues creación de un BP nuevo.
  • Delete: Borrado de la entidad. Por ejemplo, cuando queremos eliminar una dirección del Business Partner.
  • GetEntity: Consulta de los datos por clave, es decir, solo consultamos un registro
  • GetEntitySet: Consulta de los datos por Query, es decir, se va a recuperar una colección (tabla) de datos en base a unos criterios de búsqueda.
  • Update: Actualización de una entidad ya existente.

Como en nuestro caso se trata de un servicio OData de consulta de datos de BPs nos fijamos en la carpeta de Service Implementation del proyecto OData. Donde vemos cada una de las entidades y subentidades las acciones y, al pulsar doble click vemos el objeto técnico y la clase y el método donde se debe implementar la lógica.

De una entidad vemos sus métodos de implementación de la clase DPC_EXT

La clase donde se debe implementar la lógica es la ZCL_<NOMBRE_PROYECTO>_DPC_EXT (guárdate esto en la cabeza que lo vas a usar mucho). Para acceder a la clase es tan sencillo como entrar en la SE24 o entrar, dando doble-click sobre ella en el apartado Runtime Artifacs.

En una primera instancia veremos todos los métodos del CRUD de cada entidad sin redefinir. Para ir añadiendo nuestro código tenemos que ir redefiniendo cada método en la clase DCP_EXT e ir añadiendo la lógica esto lo haremos con más en otro artículo, pero en este vamos a hacer algo muy básico.


Implementado una query simple de BPs

Para implementar la consulta básica de los Business Partners vamos a implementar el método GET_ENTITYSET de la entidad BusinessPartners. Por lo tanto será el método BUSINESSPARTNERS_GET_ENTITYSET de la clase ZCL_ZODATA_TEXT_BP_DPC_EXT. Para ello debemos redefinir este método.

Formas de Redefinir el método en la clase DPC_EXT

Al redefinir el método aparece una propuesta de código.

Propuesta de código

Vamos a realizar una implementación muy muy sencilla para ver la funcionalidad básica. Todo esto puede llegar a ser mucho más complejo. Ya lo explicaremos.

Ponemos una Select muy sencilla para ver cómo se implementa.
En posteriores artículos entraremos en detalle de las posibilidades que nos da de implementación.

Activación del servicio /IWFND/MAINT_SERVICE

Una vez tenemos el servicio OData generado e implementado tenemos que activar el servicio para que pueda ser llamado, Para ello entramos en la transacción /IWFND/MAINT_SERVICE. Es algo que sólo hay que hacerlo una vez por servicio.

En una primera vez, tenemos que añadir el servicio a la lista.

Al pulsar el botón «Añadir servicio» se nos abrirá una búsqueda de servicios, buscamos el nuestro, lo seleccionamos y pulsamos «Añadir servicios seleccionados».

Añadimos nuestro servicio

Nos pedirá el nombre, paquete y si queremos que se genere el nodo ICF.

Una vez añadido el servicio lo tendremos disponible en la lista de servicios de la /IWFND/MAINT_SERVICE.


Probando el servicio

Una vez tengamos el servicio activo en la /IWFND/MAINT_SERVICE podemos entrar en el SAP Gateway Client para probar el servicio OData. Para ello podemos entrar con la transacción /IWFND/GW_CLIENT o bien desde la /IWFND/MAINT_SERVICE pulsando el botón Cliente SAP Gateway.

Podemos pulsar este botón o ir directamente a la Transacción /IWFND/GW_CLIENT

Una vez dentro del SAP Gateway Client veremos la siguiente pantalla. Pero esa URL propuesta lo único que nos dará será un XML de definición del servicio. Si queremos probarlo será en base a una entidad con las acciones CRUD.

Una ves aquí podemos seleccionar la entidad sobre la que queramos hacer la acción con el botón .

Seleccionamos BusinessPartnerSet porque es lo que hemos configurado

Resumen

El resultado de este servicio OData que hemos creado es una consulta básica a los datos de cabecera de los Business Partners. Tan básica que no tiene ni filtros y no sacamos datos de subentidades. Pero el objetivo es que tuviésemos algo que pueda ejecutarse de forma fácil para ver un resultado. En siguientes capítulos de esta serie me gustaría abordar:

  • Subentidades de una entidad (Expanded Entities)
  • Filtros en la consulta
  • Opciones de CRUD por entidad en OData
  • Documentar un servicio OData con OpenAPI/Swagger
  • Probar el servicio con Postman
  • Creación de un OData desde un Módulo de Función

Veremos a lo que llegamos, porque esto tiene mucho contenido, paso a paso.


Si te interesa, suscríbete al blog por email

SAP Mandante (Cliente)

Vamos a explicar algo básico, pero no por ello menos importante. Además es algo que damos por hecho y, normalmente no tenemos en cuenta porque no solemos tener que manejar más de uno. El mandante (o cliente) en SAP.

¿Qué es el Mandante?

En SAP, un mandante o cliente se refiere a una instancia separada en un mismo sistema SAP que puede ser utilizado por diferentes empresas de un grupo de empresas o bien distintas unidades organizativas de la misma empresa. Usando un símil con el armario de la imagen superior. Es como tener un armario con varios cajones, uno para cada área de negocio que quiera separar.

El mandante es ese código de 3 cifras que cuando entras en SAP viene por defecto, normalmente 100 pero pudiendo venir otro. Además en las tablas pones el campo MANDT. Siendo 3 cifras podríamos tener hasta 1000 mandantes, a mí con uno me vale.

Nunca encuentro el mandante 404

¿Para que sirve tener más de un mandante?

Cada mandante tiene su propio conjunto de datos, configuraciones (customizing) y usuarios que lo hacen único. Esto permite a diferentes organizaciones o divisiones operar en un mismo sistema SAP mientras mantienen su información y accesos separados.

Imagínate que eres el CIO de un grupo de empresas y quieres implementar un ERP para gestión del grupo. Pero no quieres que los datos de una de las empresas interfieran con los de la otra. Para ello creas dos mandantes uno con la configuración y datos de la empresa A y otro con la configuración y los datos de la empresa B. ¿Bonito no? Te ahorras hierro, mantenimiento de sistemas, etc. Volviendo al símil del armario, solo gastas en comprar uno, solo mantienes en buen estado ese, solo te ocupa el lugar de uno, etc… Pero también tiene sus inconvenientes ya que hay elementos comunes a todos los cajones, y eso puede producir problemas.


Customizing independiente de mandante

Pues aquí empieza el primero. En general, el customizing o configuración de SAP es dependiente de mandante. Es decir, por ejemplo tienes unos tipos de documentos para la empresa A y otros para la B. O tienes unos datos transaccionales propios para cada mandante, pedidos, facturas, materiales, clientes, etc… (No digo que puedas tener una contabilidad B, ¿no?)

Pero hay algunas configuraciones que son independientes de mandante (Cross-Client) que SAP te avisa que vas a configurar algo independiente de mandante, que tengas cuidado porque afectará a todos los mandantes por igual.


Workbench

Lo mismo pasa con el workbench, es decir todos los objetos del repositorio como son reports, clases, módulos de función, elementos de datos, etc… Este es el mayor riesgo porque se comparte el código y eso hay que tenerlo en cuenta a la hora de hacer una u otra cosa. En símil del armario es como si haces cambios en los rodamientos donde abre y cierra cada armario, o si pintas el armario de un color porque uno te lo ha pedido así.


SELECT a tablas dependientes de mandante

Si bien hemos dicho que el workbench se comparte, cuando hacemos una SELECT a una tabla dependiente de mandante, no necesitamos indicar explícitamente el Mandante en el que estamos, por defecto lo tendrá en cuenta, lo mismo al crear registros.


Mandantes especiales (000, 001, 066)

En los sistemas SAP, además de los mandantes que se hayan creado para la gestión de la empresa o área de negocio, existen una serie de mandantes «especiales» que tienen, cada uno de ellos, un propósito particular.

  • Mandante 000: Es un mandante de referencia proporcionado por SAP. Contiene la configuración estándar de SAP, pero no incluye datos maestros o transaccionales. Se utiliza comúnmente como base para crear nuevos mandantes mediante la función de copia de mandante. Además para ciertas tareas del antiguo (en paz descanse) Middleware de SAP CRM, era necesario entrar a configurar.
  • Mandante 001: Se trata de un mandante ejemplo, una base para crear nuevos mandantes limpios.
  • Mandante 066 (Early Watch): Se utiliza principalmente para propósitos de soporte remoto por parte de SAP. Permite a SAP acceder al sistema para diagnósticos y optimización del rendimiento.

Copia de Mandante

Este proceso permite duplicar la configuración de un mandante existente en otro nuevo. Es especialmente útil cuando se necesita establecer un mandante para desarrollo, pruebas o formación, basado en la configuración actual de un mandante productivo. La copia de mandante incluye tanto la configuración (customizing) como los datos maestros, permitiendo un entorno de trabajo completo y coherente, pero cuidado, que el workbench no se pasa en una copia de Mandante, con lo que si tienes los sistemas de desarrollo y test hechos un desastre, solo pasas datos y configuración (NOTA: No tengas los entornos hechos un desastre).

Para mí este proceso es fundamental realizarlo periódicamente desde producción a test, con un proceso de blanqueo de datos si se requiere en medio, para poder establecer un escenario de resolución de incidencias óptimo.


Copia Homogénea

A diferencia de la Copia de Mandante, y aunque nos salgamos un poco del tema, la copia homogénea es una copia tal cual de un sistema a otro. Es muy útil y usado para escenarios de upgrades, cuando necesitamos crear un Sandbox (sí, sí, arenero, los ingleses no se andan con chorradas) para probar los upgrades sin afectar la cadena de transportes.

Quedamos a las 5 en el arenero a jugar

En casos extremos se puede usar para hacer borrón y cuenta nueva desde Producción a Desarrollo, pero como ya os he dicho antes, esto sería porque tenéis un sistema de desarrollo descabalado y sin control, con muchas modificaciones descontroladas. El problema de la copia homogénea es que todo se copia, y claro, tendremos un periodo de reconfigurar muchas cosas y de quitar ciertas que no se necesitan en entorno no productivo. Por ejemplo, salida de emails.

¿Cómo ver los mandantes que hay?

Para ver los mandantes que hay en el sistema podemos acceder a la transacción SCC4. Además esta transacción nos permite administrar cada uno de los mandantes indicando su tipología y su gestión de cambios y transporte.


En conclusión

Si bien es algo que siempre pasamos por alto, porque lo habitual es que tengamos un mandante  de trabajo por entorno. Podemos encontrarnos, o incluso proponer, un escenario distinto, donde haya varios mandantes en la misma instancia de SAP, y tenemos que ser conscientes de lo que implica y las capacidades que da.

SAP Referencia de utilización (Where-Used List)

Una de las funcionalidades importantes dentro de nuestro trabajo día a día, sobre todo si estamos asumiendo un rol técnico, pero también como funcional, es saber donde se usan los objetos de SAP, saber buscar.

Un buen sabueso sabe seguir las pistas

Pongamos ejemplos.

  • Estamos ejecutando un proceso o una aplicación y nos aparece un mensaje, queremos saber donde se lanza ese mensaje.
  • Tenemos un campo en pantalla y queremos averiguar en qué tabla de base de datos se guarda. O en que BAPI se usa.
  • Tenemos una tabla de base de datos y queremos saber donde se actualiza.
  • Queremos buscar un literal en el código fuente de todos los objetos de un paquete.
  • Queremos documentar un sistema en el cual no hemos participado desde el principio.

Mensajes

Estas ejecutando un proceso, sea online o batch, sea en SAP GUI o en WebUI, y te salta un mensaje de error. No tienes idea de porqué sale, qué lo llama y necesitas identificarlo. Te has debugueando (olé) todo el proceso y no lo sacas. Necesitas saber el punto donde se lanza ese mensaje. Calma, vamos a ver como sacarlo vía referencia de utilización.

Identificando el mensaje

Para buscar donde se lanza un mensaje primero hay que saber identificarlo, es decir, saber qué mensaje es el que estamos buscando.

Mensajes en SAP GUI

Cuando estamos ejecutando un report o una transacción en SAP GUI veremos en la barra inferior el mensaje que nos salta. Al pulsar sobre esa barra obtendremos un popup con la información detallada del mensaje.

Pulsando sobre el mensaje tenemos este popup.
Donde vemos el numero de mensaje y la clase de mensaje

Si pulsamos el botón se nos abrirá otro popup con datos más técnicos.

Donde posicionando el cursor en uno de los campos y dando a Navegar podemos ver el punto del código donde se llama. Pero a veces con esto no vale, así que nos quedamos además con la clase de mensaje y el número de mensaje.


Mensajes en Jobs de Fondo

Cuando se ejecuta un proceso en fondo no hay nadie para ver el mensaje cuando se produce. En este caso el estándar guarda cada mensaje que se da en el log del Job.

Para ello entraremos en la SM37, seleccionando el job que queremos y pulsando el botón Log job.

Mensajes en WebUI

En WebUI los mensajes aparecen, dependiendo del skin que estemos usando, en la barra superior o en la inferior. Si nos posicionamos con el cursor encima del texto del mensaje veremos el Tipo, Número, clase de mensajes y Variables de ese mensaje.

Si no lo ves es porque tienes que ajustar el parámetro BSPWD_USER_LEVEL al máximo (9) en tu perfil de usuario en la transacción SU3 (o dentro de Parámetros de la SU01).

¿Dónde se usa ese mensaje?

Una vez tengamos identificado la clase de mensajes y el Número de mensaje podemos ir a la transacción SE91 a visualizar el mensaje.

Seleccionando el número de mensaje y pulsando el botón <> obtendremos todos los puntos de código donde se llama explícitamente el mensaje.

La importancia de usar la sentencia MESSAGE

Porque es importante el matiz «explícitamente» ya que si un mensaje no es llamado con la sentencia MESSAGE la Referencia de Utilización no lo encontrará en el código.

Por ejemplo cuando un mensaje se añade vía un Módulo de Función o un método de una clase. Esto es muy habitual cuando se manda un mensaje en el WebUI. En estos casos no vamos a encontrarlo y tendremos que usar la búsqueda por literal (ver sección «Buscar en código»)

Por lo tanto, es importante, cuando añada os un mensaje en nuestro código, si se realiza vía módulo de función o método de clase que pongamos la siguiente sentencia.

IF 1 = 2. MESSAGE<tipo><número>(clase). ENDIF.

Ese mensaje nunca se va a llamar puesto que el IF nunca se cumplirá. Pero sirve para encontrar el mensaje en el código usando el botón de Referencia de Utilización desde la SE91.


Objetos del diccionario

Como objetos del diccionario de datos me refiero a elementos de datos, dominios, estructuras, tipos tabla, vistas y tablas de base de datos. Vamos, aquello que vemos en la transacción SE11.

Al entrar en cualquiera de estos objetos veremos el botón que nos permitirá buscar donde se usa ese objeto en otras entidades, pudiendo además elegir sobre qué subconjunto elegir.

Además dándole al botón podemos acotar la búsqueda sobre los objetos de un paquete concreto o por nombre de objeto.

El resultado es una lista de dónde se usa el objeto dentro del ámbito que hayamos seleccionado.


Programas, Clases y Módulos de función

Lo mismo que con los Objetos del diccionario de datos, la diferencia es que desde un programa, MF o Método de una clase solo podrán ser usados en otro código fuente. Con lo que algo más se acota por el tipo de objeto y sus posibles usos.


No me funciona el botón

Si no funciona la búsqueda puede ser que falte por reconstruir el índice de los objetos SAP en el sistema. Para ello tenemos que ejecutar los siguientes reports:

  • SAPRSEUC – Para reconstruir el índice de los objetos de cliente (Z* y Y*)
  • SAPRSEUB – Para reconstruir el índice de los objetos de SAP

Buscar en el código

A pesar de todas las opciones anteriormente descritas, es posible que necesitemos buscar algo que hayamos usado en código o que use el estándar. Imagínate que quieres recuperar sitios donde se ha usado un parámetro de un Módulo de Función, un hardcode concreto, un comentario, un mensaje llamado vía BAPI o una sentencia concreta.

Para ello yo siempre uso (y lo uso muy a menudo) el report estándar RS_ABAP_SOURCE_SCAN.

Para mi es una de los reports que más uso en mi día a día. Para buscar algo que hice y no recuerdo o para buscar como el estándar usa determinada lógica, MF o Clase. Mi forma de usarla siempre es poniendo el String buscado y el paquete. Si estoy buscando código Z pongo como paquete Z* y si no ya voy jugando.

Por ejemplo si busco así:

Recibo esta información:

También suelo jugar con el campo «Lugar del hallazgo +/- líneas para que muestre más o menos código en el resultado.

Como problemas son:

  • Si no acotas bien el paquete puede ser que busque en demasiados objetos, tardando en realizar la búsqueda.
  • La lista de resultados puede ser demasiado grande

En Conclusión

Estamos para aprender, cualquiera que tenga otra idea o que use otros métodos me gustaría saberlos. Yo esto lo uso continuamente, cualquiera de las soluciones que explico. Sobra decir que la experiencia y la intuición también ayudan a encontrar aquello que buscas, pero eso no se puede explicar.

Un buen sabueso sabe seguir las pistas.

¿Qué es RISE with SAP?

Hace tiempo estoy trabajando para un nuevo cliente en S/4 HANA en el que, cuando entré, preguntando por las soluciones que tiene contratadas, me han dijeron «Tienen contratado el «RISE with SAP». El concepto lo había escuchado, no era nuevo para mí, pero no sabía exactamente qué era eso de «RISE with SAP», pero puse cara de tener póker teniendo una simple pareja.

Soy experto en «RISE with SAP»

¿Qué es RISE with SAP?

Me puse a investigar, al final este blog es el medio por el cual adquirir nuevos conocimientos, satisfacer la curiosidad y aportar valor a quien quiera leerlo. Por lo que pregunté, leí, me informé y he sacado conclusiones.

Según dice SAP en su web RISE with SAP es:

RISE with SAP puede hacer la transición a la nube de sus datos y procesos de ERP actuales con menos riesgo y sin hacer concesiones. El paquete de software ERP a medida, los servicios de transformación, las analíticas de negocio y el expertise del partner lo guían a lo largo de un camino personalizado hacia la nube.

https://www.sap.com/spain/products/erp/rise.html

«Blah, Blah, Blah» comercial vendiéndote el resultado sin contarte el cómo y así un poco todo el sitio web. Hasta que vemos la infografía que ofrece la web donde vemos esta imagen que es un espectáculo visual:

¿Queda claro? No, pero queda bonito

¡Vaya! Más «Blah, Blah, Blah» comercial pero esta ver con iconos y colores bonitos, pero sigo sin enterarme de qué va esto. ¿Alguien me puede dar un «RISE with SAP for Dummies«? Por favor.

En oferta en su librería de confianza

Pero no han sacado el libro todavía, así que me toca seguir investigando. Aunque eso de Business Transformation as a Service me va dando una pista. Sigamos buscando información.

Si reviso en la web de SAP, esta el siguiente PDF Learn about how to secure your journey to the cloud que pone:

WHAT IS RISE WITH SAP?

RISE with SAP is a comprehensive solution that helps you migrate essential business systems to the cloud. The solution includes the following elements:

  • A cloudbased ERP solution for your business needs
  • Support for industry standard practices
  • Analytics and business process intelligence
  • Outcomedriven services from SAP and our partners

Bueno, esto asienta un poco el concepto y disipa el humo, RISE with SAP es, entonces, un paquete que aúna, además de las licencias de un S/4 HANA cloud, otra serie de servicios (¿consultoria?) para la migración de tu negocio al cloud y sistemas de analíticas. Pero… Esto, sí bien baja a la tierra algo, no es suficiente.

Sigo investigando, uso ChatGPT para ver si me da algo de luz, voy con cautela porque su entrenamiento paró en septiembre de 2021 y, en este tiempo, puede haber cambiado la película. Me contesta:

Rise with SAP es más que una simple licencia de productos; es una oferta integral para la transformación digital de las empresas. Incluye software, servicios de consultoría, acceso a la nube y opciones de personalización. La idea es proporcionar un enfoque más holístico para abordar los desafíos de la transformación digital, en lugar de solo ofrecer software como un producto individual. De este modo, las empresas pueden tener un plan más coherente y estructurado para adaptarse a las demandas del mercado moderno.

In ChatGPT we trust

Ojo que se nos viene otro palabro a añadir a la «lista de palabras molonas que usar en los negocios«, si ya teníamos Sinergia, Experience, Resiliencia, Sostenible, Intelligence, Cloud, etc. Ahora añadimos, con vítores y fanfarria al palabro «Holistico»

¡Buah es que vaya impresionante palabro!
(Primera imagen que sale por Holístico en Google)

Holístico: Propio de o relativo al todo o la totalidad de algo

Ejemplo:

Al cerdo le tengo un amor holístico

Traducción:

Del cerdo me gusta hasta los andares

Jorge Ocampos. Poeta

Pero no nos desviemos. ¿Sabemos ya lo que es RISE with SAP? Sabemos que es:

  • Una oferta integral
  • Incluye
    • Software
    • Servicios de consultoría
    • Acceso a la nube
    • Opciones de personalización

Pero vamos a ver más fuentes para terminar de definir lo que es. Para ello buscando por Google encontré esta imagen:

The mother of the lamb Experience

Donde creo que ya, por fin, bajamos al suelo y damos con la clave y, después de leer mucha información, puedo tener una idea más o menos clara. Retomemos y rellenemos, RISE with SAP es:

  • Una oferta integral
  • Incluye
    • Software
      • SAP BTP como framework
      • SAP S/4HANA Cloud como solución ERP
    • Servicios de consultoría (esto habrá que verlo)
    • Acceso a la nube: en un hyperscaler o la de SAP para alojar SAP BTP y S/4 HANA.
    • Opciones de personalización, mejores prácticas, formación

Todo esto en modalidad suscripción (Business Transformation as a Service – BTaaS).

Puede ser una forma de allanar el camino de entrada a SAP en cloud a ciertos clientes, sobre todo, en mi opinión, a nuevos clientes. Pero la migración de los actuales ERPs, con sus (poquiiiisimas) ampliaciones, modificaciones y procesos no estándar sigue siendo un reto.

No sé, yo por lo pronto ya estoy en un RISE with SAP con S/4 HANA cloud privado. Pero es un cliente de nueva implantación. Veremos que tal y si no escucho al cliente hablar en arameo contra el coste/rendimiento que supone la suscripción a la revista RISE with SAP. Yo, mientras tanto, seguiré con mi cara de Poker (mejorándola).

Sigo siendo experto en «RISE with SAP»

SAP Joule – La IA Generativa de SAP

En los últimos años siempre que se había hablado de Inteligencia Artificial en SAP escuchábamos. SAP Leonardo (machine learning) o ya más recientemente los procesos asistidos por IA del SAP Build Process Automation como la extracción inteligente de datos de facturas.

Ahora le toca a SAP implementar en sus procesos la IA generativa, SAP anunció el pasado 26 de septiembre su nueva apuesta por la inteligencia artificial generativa SAP Joule.

SAP Announces New Generative AI Assistant Joule

news.sap.com

Pero antes de seguir con SAP Joule vamos a definir algo necesario.


¿Qué es la Inteligencia Artificial Generativa?

La Inteligencia Artificial Generativa se refiere a un subcampo de la IA que se centra en crear contenido nuevo y original, que puede variar desde texto, imágenes, música hasta datos sintéticos, mediante el aprendizaje automático y las redes neuronales profundas. A diferencia de otros tipos de IA que se diseñan para reconocer patrones, analizar datos o predecir resultados a partir de la información existente, la IA generativa «genera» algo que no existía previamente.

Vamos, lo que muchos humanos no saben hacer

¿Qué es SAP Joule?

Partiendo de la base que no lo he podido probar (ya me gustaría) y que pocos lo habrán hecho, lo que voy a contar a continuación es en base a documentación de SAP (marketing) bien en artículos como en videos. Vamos a rascar un poco la corteza a ver si sacamos algo más.

Para la realización de este artículo me voy a basar, además del enlace del anuncio, en los siguientes enlaces:

What is Joule?

SAP Help Portal

Demystifying Joule – SAP´s New Generative AI Assistant

community.sap.com

Joule, the AI Copilot for SAP

community.sap.com

SAP Business AI White Paper

sap.com

Introducing Joule

sap.com

Según Christian Klein (seguro que es hermano de Calvin) CEO de SAP.

Joule will know what you mean, not just what you say.

Christian Klein, CEO de SAP

Si ya teníamos a Leonardo (SAP), Conversational AI (SAP), Watson (IBM), GPT (OpenAI), Llama (Meta), Bard (Google) o Copilot (Microsoft) ahora tenemos Joule de SAP haciendo referencia a la unidad de medida internacional de trabajo.

Vamos a ver su video de presentación.

Temazo!

La buena noticia (lógica por otro lado) es que va a ser integrada en las soluciones SAP, permitiendo apoyar procesos de negocio con una IA conversacional en lenguaje natural.

A día de hoy ya está implementada (habrá que ver como funciona) en procesos de recursos humanos (SAP SuccessFactors), gestión financiera (SAP S/4HANA cloud public Finance), cadena de suministros (SAP Integrated Business Planning), y experiencia del cliente (Sales Cloud v2), así como en SAP BTP.

Tiene buena pinta

Joule para SAP Customer Experience (CRM-CX)

Podemos ver los procesos en SAP Sales & Service Cloud V2 en los que aplica y puede ayudar.

Podemos ver en un artículo publicado el 3 de enero en SAP Community lo que ya está ofreciendo en el Sales & Sercive Cloud v2.

Intelligent CX: Harnessing Generative AI for Smarter Customer Relationship Management by Sales and Service Executives

Rishi Hemdev – SAP Product Manager
Sales & Service Cloud
Viene fuerte la versión 2 de Sales & Service Cloud

Vamos a desgranarlos:

  • Recomendador de Borradores de Correo Electrónico: Mejora la comunicación con los clientes al crear borradores de correo electrónico personalizados, basados en el historial de interacción, asegurando mensajes relevantes y oportunos.
  • Potenciador de Leads: Enriquece la información de leads con puntos de conversación significativos y personalizados, apoyando a los equipos de ventas en la preparación de sus acercamientos.
  • Resumen de Interacción de Casos: Simplifica el seguimiento de casos de servicio al generar automáticamente resúmenes claros y concisos de cada interacción, permitiendo una revisión rápida y eficiente.
  • Sinopsis de Cuenta: Proporciona una visión integral de las cuentas de clientes, resumiendo la información clave para facilitar una gestión de relaciones más informada y estratégica.

De la ‘Sinopsis de Cuenta’ a que Joule sea el primer nivel de soporte al cliente (chat, email o incluso telefónico) queda poco. Me temo que gran parte de las consultas de cliente las va a poder responder, en un futuro cercano, Joule accediendo a la ficha del cliente y sus datos transaccionales. Los call centers enormes y los call centers subcontratados tendrán que menguar.


Joule en SAP Success Factors (HR)

Podemos ver el video oficial de las funcionalidades de Joule en SuccessFactors.


Joule para SAP Ariba Category Management

En la gestión de compras y proveedores también se ha añadido la posibilidad de usar SAP Joule.


Joule para SAP BTP Cockpit

Ayuda a la administración de SAP BTP


Joule para SAP Build Process Automation

Como vimos en la entrada sobre SAP Build, una de sus áreas es el SAP Build Process Automation.


Mi Opinión

Empieza la fiesta, pero es importante incidir en el verbo «Empieza», hay muchas áreas donde una IA Generativa puede ser usada dentro del ecosistema de gestión empresarial, como pudimos ver en el artículo Inteligencia Artificial – Usos Corporativos. Si me conoces y has leído el blog el último año pensarás que estoy dando saltos de alegría, la unión de IA y SAP, pero llevo mucho tiempo conociendo a SAP, y soy cauto. Tiene buena pinta, pero el papel y el video lo soporta todo, no obstante el camino es este. Supongo que tardaré en poder tocar un ejemplo de SAP Joule (lo intentaré desde mi posición), pero estaré al tanto de nuevas novedades.

No he hablado de cosas muy novedosas como SAP Build Code o SAP Start, porque haré artículos al respecto cuando termine de investigar sobre ello.