SAP CDS Core Data Services – ¿Qué son las CDS?

Vamos a hablar del pasado-presente-futuro del acceso a los datos de la base de datos de los sistemas SAP. ¿Por qué digo pasado-presente-futuro?

  • Pasado: Porque es algo que salió sobre 2012 (12 años hace) dentro de la solución de acceso a datos de HANA. En ese momento, claro, habría entre 0 y 1 implantación de SAP HANA en España, pero el dato está ahí.
  • Presente: Porque ahora mismo ya lo estamos usando. Aunque no lo sepas, el estándar ya usa CDS para muchos de los procesos estándar y las búsquedas de la herramienta.
  • Futuro: Porque para mucha gente esto es nuevo (que no lo es) y siguen tirando sus Selects a base de datos. SAP ha trazado un camino claro hacia el futuro con CDS, destacando su importancia en la optimización del acceso a datos en un entorno de crecimiento exponencial de los mismos. Además CDS no solo facilita este acceso, sino que también se integra de manera efectiva con otras tecnologías emergentes, como RAP, para ofrecer soluciones de desarrollo modernas y escalables.

Esto está muy bien, pero no sabemos qué es los CDS Core Data Services. Vamos a verlo.

CDS en tus manos

¿Qué son las CDS Core Data Services?

SAP CDS es un paradigma de programación para la plataforma SAP ABAP introducido inicialmente en SAP NetWeaver 7.4 SP05 y SAP HANA SPS6. Su enfoque principal es optimizar las operaciones de bases de datos, permitiendo a los desarrolladores crear modelos de datos eficientes y robustos que se integran perfectamente con SAP HANA y otras plataformas SAP.

Voy a traducirlo.

CDS permite a los desarrolladores crear modelos de datos abstractos que luego se traducen en consultas SQL optimizadas para ejecutarse en SAP HANA. Esta abstracción es crucial para realizar operaciones complejas de bases de datos de manera más eficiente y coherente. Por ejemplo, en lugar de escribir consultas SQL complejas y propensas a errores, los desarrolladores pueden definir vistas CDS que encapsulan la lógica y el comportamiento de los datos, lo que facilita el mantenimiento y la evolución del sistema.

¿Lo hemos entendido?

Lo intento explicar mejor.

Básicamente, una CDS te permite crear una «vista» o «representación» de los datos que necesitas extraer de la base de datos, pero con muchas ventajas adicionales.

En términos simples, una CDS es como un «filtro inteligente» que se coloca entre la base de datos y la aplicación. Este filtro te permite seleccionar y organizar los datos de la manera exacta que necesitas, sin tener que escribir consultas SQL complejas cada vez. Además, este filtro puede incluir reglas de negocio, lógica adicional, y definiciones de seguridad, todo integrado en una única definición. Todo esto se ejecuta en la capa In-Memory de SAP HANA, dejando que sea SAP HANA quien gestione ciertos aspectos de rendimiento y dependencias entre datos.


Pero entonces ¿Qué diferencia hay entre una vista de la SE11 y una CDS?

Pues mucha, muchísima. Y a varios niveles.

Optimización y funcionalidad

Las CDS están diseñadas específicamente para aprovechar al máximo SAP HANA, lo que les permite ejecutar consultas de manera más eficiente y rápida, gracias a la capacidad de procesamiento en memoria de HANA. En contraste, las vistas de la SE11, aunque funcionan en HANA, no están tan optimizadas para esta base de datos, lo que puede hacerlas menos eficientes en términos de rendimiento.

Capacidad funcional

Las CDS ofrecen un conjunto de herramientas mucho más amplio y avanzado. Por ejemplo, permiten incluir lógica de negocio, realizar cálculos complejos, aplicar anotaciones para definir comportamientos específicos, y gestionar uniones de datos de forma más sofisticada. Además, las CDS son altamente flexibles y modulares, lo que facilita su mantenimiento y actualización en comparación con las vistas de la SE11, que tienden a ser más rígidas y difíciles de modificar cuando cambian los requisitos.

Integración con tecnologías modernas

Las CDS están claramente diseñadas para el futuro. Se integran perfectamente con SAP Fiori y RAP, permitiendo la exposición de datos a través de servicios OData, algo crucial para el desarrollo de aplicaciones modernas y basadas en servicios. Por otro lado, las vistas SE11, aunque útiles, no están tan bien adaptadas para estos escenarios de aplicación moderna, lo que puede limitar su uso en proyectos que requieren conectividad y exposición de datos a través de servicios web.

Seguridad

Las CDS incorporan controles de acceso y autorizaciones directamente en la definición de la vista, lo que permite un control más detallado y seguro sobre quién puede acceder o modificar los datos. Las vistas de SE11, por su parte, dependen más de configuraciones externas para la seguridad, lo que las hace menos integradas en este aspecto.


Componentes Principales de CDS

SAP CDS se basa en tres componentes clave que permiten a los desarrolladores crear modelos de datos optimizados:

  • Vistas CDS: Las vistas CDS son la base de SAP CDS. Permiten definir estructuras de datos y consultas que se ejecutan directamente en la base de datos, actuando como una capa de abstracción sobre las tablas subyacentes. Estas vistas facilitan el acceso y la manipulación de los datos, optimizando las consultas SQL y mejorando el rendimiento general.
  • Anotaciones: Las anotaciones en CDS permiten enriquecer los modelos de datos con metadatos que definen características importantes como la seguridad, las relaciones entre entidades, y el comportamiento de los datos. Esto ayuda a crear modelos de datos que no solo son eficientes, sino también seguros y coherentes con la lógica de negocio.
  • Funciones de CDS: Las funciones de CDS son operaciones predefinidas que pueden aplicarse directamente sobre los datos en la capa de la base de datos, mejorando la eficiencia al realizar cálculos complejos o transformaciones de datos. Son parecidas a las funciones que podemos usar en SQL (SUM, MAX, MIN, etc.) pero más potentes porque se aplican directamente en las definiciones de las vistas CDS, lo que permite que la lógica de negocio se implemente y se ejecute en la base de datos, mejorando la eficiencia y reduciendo la necesidad de procesar los datos en la capa de aplicación.

La Herramienta Necesaria: ADT (ABAP Development Tools)

Para gestionar y desarrollar con CDS, es esencial utilizar ABAP Development Tools (ADT) en el entorno de desarrollo Eclipse. ADT proporciona un conjunto de herramientas específicas para trabajar con CDS, que incluyen un editor avanzado de código, herramientas de depuración, y funciones para la gestión y visualización de las vistas CDS.

Sobre ADT tengo previsto hacer un artículo explicando más pormenorizadamente sus capacidades, como instalarlo y su uso. No vanos a detenernos en ello ahora.


Beneficios de Usar SAP CDS

Más o menos los hemos ido viendo durante el artículo, pero lo podemos resumir en lo siguiente:

  • Rendimiento Mejorado: CDS maximiza el uso de SAP HANA, reduciendo la latencia y mejorando significativamente el rendimiento de las consultas. Es la forma nativa de explotar el potencial del procesamiento en Memoria de HANA.
  • Integración Nativa: CDS está profundamente integrado en el ecosistema SAP, lo que facilita la creación de aplicaciones que pueden interactuar con diferentes módulos de SAP, garantizando una interoperabilidad fluida. Siendo la base de tecnologías como RAP (RESTful ABAP Programming) o OData V4.
  • Facilidad de Mantenimiento: Dado que las vistas CDS son declarativas el mantenimiento y las actualizaciones de las aplicaciones son más simples y menos propensas a errores. La lógica de negocio queda claramente definida y separada de la lógica de presentación, mejorando la mantenibilidad del código. De todo esto y de como usarlo hablaremos en otro artículo concreto.

En conclusión

Sirva este artículo como introducción a SAP CDS si es que alguien no lo conocía ya. Quiero hacer una serie sobre como usar CDSs y ejemplos más palpables de las ventajas que ofrece.

Networking

Tú me conoces, yo a tí posiblemente no, (algún amigo habrá leyendo esto). Si alguna vez necesito algo tengo una red de compañeros de viaje en consultoría que estará a mi lado apoyando, tengo la red del equilibrista sujeta por mucha gente, tengo mi red de contactos, mi Networking.

¿Qué es Networking?

El networking es el proceso de establecer y cultivar relaciones profesionales con otras personas en tu industria u otros campos relevantes. Estas conexiones pueden proporcionarte información, apoyo, oportunidades laborales y colaboraciones.

¡Vaya lío! Los amigos de mis amigos son mis amigos

¿Cómo se genera tu Red?

Leerás en muchos sitios que tienes que estar activo en LinkedIn, asistir a eventos, cursos, meetups, etc. Lamentándolo mucho, yo no creo que ese sea el camino. Por lo general, y hablo desde mi punto de vista, se trata de un trabajo lento, poco a poco, pero a mi no me supone trabajo alguno. Se trata básicamente de ser buen compañero, ser bueno en tu ámbito (sin locuras), ser buen consultor, ser humilde, saber decir «me he equivocado» y ayudar a tus compañeros en el día a día. Fácil ¿no? Pues para algunos imposible, porque parece que se esfuerzan en ser todo lo contrario.

No entiendo por qué nadie me recomienda para trabajar. Hijos de &€#@

Tu red personal/profesional

La red de contactos que construyes a lo largo de tu carrera es fundamental. Esta red no se forma de la noche a la mañana, sino que se construye con el tiempo, a través de experiencias compartidas y la confianza mutua.

Algunos consejos para fortalecer tu red personal y profesional podrían ser:

  • Sé Accesible y Amable: Siempre mantén una actitud positiva y accesible. Las personas están más inclinadas a recordar y querer trabajar con alguien que es agradable y confiable. No seas un ogro e intenta generar buen ambiente.
  • Brinda Apoyo y Ayuda: No dudes en ofrecer tu ayuda a otros, ya sea con consejos, recursos o simplemente escuchándolos. Las relaciones se construyen en base a la reciprocidad y el apoyo mutuo. Yo sé de uno que os está haciendo un blog por amor al arte.
  • Mantén el Contacto: No esperes a necesitar algo para contactar a alguien. Mantén tus relaciones vivas a través de mensajes ocasionales, reuniones informales o simplemente un saludo.

Marketing de marca

En el ámbito profesional, tu marca personal es tu carta de presentación. Asegúrate de que tu presencia en línea y fuera de línea refleje tus valores y habilidades. Aquí algunos aspectos clave:

  • Perfil en LinkedIn: Aunque mencioné que no creo que estar activo en LinkedIn sea el único camino, tener un perfil bien estructurado y actualizado es importante. Muestra tus logros, habilidades y experiencias de manera clara y profesional. Pídele a tus superiores recomendaciones.
  • Participación en Eventos: Asistir a eventos relevantes, aunque no sea el único camino, puede ser útil para ampliar tu red. Estos eventos te permiten conocer a personas influyentes y mantenerte al tanto de las tendencias de la industria. Yo esto no lo hago porque no tengo tiempo, tampoco lo veo imprescindible.
  • Contenido de Valor: Comparte contenido relevante y útil en tus redes sociales y blog (si tienes uno). Esto puede incluir artículos, investigaciones, opiniones sobre temas actuales, etc.
  • Cuida tu presencia online: Si buscan por tu nombre y apellidos y lo que sale es tu cara de fiesta en fiesta o comentarios fuera de tono en Twitter (perdón X), no vas bien. Los departamentos de RRHH se peinan ínternet para saber si estás loco, no se lo pongas fácil.
Puedes hacerlo si tú eres el jefe como Elon Musk

Recomendaciones

Las recomendaciones de colegas y clientes son valiosas para tu reputación profesional. Aquí algunas maneras de obtener y utilizar recomendaciones de manera efectiva:

  • Solicita Recomendaciones: No dudes en pedir recomendaciones a personas con las que has trabajado estrechamente. Una buena recomendación puede ser un gran respaldo para tu carrera. Yo desde antes de LinkedIn ya pedía cartas de recomendación al salir de los trabajos. Ahora siempre pido recomendaciones por LinkedIn.
  • Ofrece Recomendaciones: Sé proactivo y ofrece recomendaciones a aquellos con quienes has tenido buenas experiencias laborales. Esto no solo ayuda a otros, sino que también fortalece tu red. Nunca sabes si ese Junior que has recomendado (porque es un crack) será dentro de unos años socio de Deloitte o incluso tu jefe.
¡Maldita sea! Estuve con Jorge en la guerra. Desde ahí no siento las piernas. Jorge es muy bueno con el bazooka

Referencias

Tener referencias sólidas puede ser crucial en ciertos momentos de tu carrera, y entendemos por Referencia el que alguien pueda responder por ti en caso en que necesiten ese feedback directo. Esto se hace mucho en otros países, que te piden un par de contactos a los que llamar y preguntar por tu desempeño. Pero en España no es tan habitual.

Por supuesto que cabe la posibilidad de dar como contactos a tu amigo Paco y tu amiga Amalia que salís de fiesta todos los días y trabajáis en lo mismo. Pero los recruiters no son tontos, en este mundo global de internet, con un vistazo a LinkedIn ven si esa persona ha sido responsable tuyo y de qué manera. Además, una persona responsable no se va a prestar a hacer una trampa.

Si has sido bueno y buena gente no te faltarán teléfonos y contactos que se ofrezcan a ser referencia tuya. Al final pivotamos siempre sobre lo mismo.

¿Es el enemigo? ¿Qué me puedes decir de Jorge? Ah, que era bueno contando chistes. Y de lo de disparar ¿Cómo va?

¿Para qué quiero todo esto?

Ojalá nunca lo necesites, porque mientras siga habiendo demanda habrá trabajo para todos, pero en caso de una crisis de empleo, similar a la de 2008-2012, permanecerán aquellos mejor preparados, con más experiencia y con más contactos y mejores referencias (también los hay con malas referencias).

No es la especie más fuerte la que sobrevive, ni la más inteligente la que sobrevive. Es aquella que se adapta mejor al cambio.

Además, de esto, las ventajas principales, así Grosso Modo podrían ser:

  • Aceleración en la Búsqueda de Empleo: Según este artículo de la Reserva Federal de St. Louis, el networking puede reducir significativamente el tiempo necesario para encontrar un empleo, ya que el 70-80% de los puestos de trabajo nunca se publican oficialmente y se cubren a través de referencias y contactos
  • Mejora en el Desarrollo Profesional: Un estudio realizado por LinkedIn reveló que el 85% de los empleos se cubren a través del networking, lo que demuestra su importancia en el avance de la carrera profesional​.
  • Incremento de Conocimientos: El networking facilita el acceso a nuevas ideas y conocimientos al conectar a profesionales de diferentes campos, promoviendo el intercambio de información y el aprendizaje mutuo. A mi me ha pasado, tengo en mi red de contacto expertos en Fiori, tengo un problema o me han mandado algo al respecto y no tengo mucha idea, puedo pedir ayuda.
  • Creación de Oportunidades: Un artículo de Harvard Business Review menciona que el networking no solo abre puertas a nuevas oportunidades laborales, sino que también puede conducir a asociaciones estratégicas y colaboraciones que de otro modo no serían posible

En resumen, si tienes una buena red de contactos, siempre tendrás ayudas en aquello que necesites.


En conclusión

Hay que ser buena gente y gente buena, tender puentes y mantenerlos, crear ambientes de trabajo agradables, ser bueno en lo tuyo, ser humilde y agradecido. Tienes que estar pendiente de tus recomendaciones y tu imagen online. Y todo esto llegará solo.

Yo, por ahora, he salido de cada una de las crisis reforzado, evolucionando laboralmente, económicamente y ampliando y mejorando mi red de contactos. Ahora veo varias crisis sobrevolar el horizonte (económica, crisis de empleo por IA, guerras, etc.). Y alguna crisis personal he tenido hace poco, y lo que me ha salvado ha sido mi red de contactos.


¿Me quieres ayudar?

Si eres parte de mi red de networking y quieres ayudarme lo mejor que puedes hacer es:

  • Realizar comentarios en este u otro artículo.
  • Compartirlo / Darle a Like / Comentar  en LinkedIn
  • Darle a Me Gusta aquí en el Blog
  • Suscríbete por email al Blog que así te llega directo a la bandeja de entrada
  • Hazme un Bizum de no menos de 50€ (es broma, con 40€ me conformo)

Si te interesa, suscríbete al blog por email

He vuelto a Cambiar de Rumbo

Aprovecho este parón veraniego para anunciar un nuevo cambio de rumbo. Si en el pasado ya anuncie dos cambios de rumbo importantes en las entradas:

Ahora, después de tres de meses del cambio realizado ya puedo volver a decir de nuevo «Cambio de rumbo».

Vuelvo a ser Freelance, vuelvo a un cliente conocido, que me quiere y del que conozco el negocio a la perfección. En este caso vuelvo con la empresa Avvale que, durante este proceso de cambio, no me ha podido tratar mejor y estoy agradecido.

Esto me ha llegado gracias al Networking, a que me conocían y me han dado todas las facilidades para entrar a trabajar con ellos. Tengo grandes amigos en Avvale (y en muchos otros sitios), gente que me conoce personal y profesionalmente. Por ahora entro como Freelance, que es donde me encuentro a gusto, pero ¿Quién sabe?, ahora lo que quiero es construir y, entre todos, alcanzar metas haciendo las cosas bien.

Quien quiera saber los motivos de que me haya ido de Deloitte que pregunte, dejo grandes amigos allí también y buenos recuerdos. Espero que les vaya bien y que nos veamos en este mundo que es un pañuelo.

Zona Desmilitarizada (DMZ)

Hay un concepto en administración de redes y sistemas ampliamente usado y conocido pero que, si no eres de sistemas, terminarás escuchando y no sabrás muy bien lo que significa. Hablo de la DMZ (Demilitarized Zone) o Zona Desmilitarizada.

La calma silenciosa de la DMZ

La DMZ es un término común en el mundo de la ciberseguridad. Aunque se origina en un concepto militar, en el ámbito de las tecnologías de la información se refiere a una subred que actúa como una capa adicional de seguridad. Su propósito es proteger la red interna de una organización de accesos no autorizados, al tiempo que permite ciertas interacciones con redes externas, como Internet.


Las dos Coreas

El término DMZ tiene sus orígenes en el ámbito militar y se refiere a un área en la que los tratados o acuerdos entre naciones, grupos militares o fuerzas beligerantes prohíben las actividades militares o donde se limita el despliegue de fuerzas militares y material bélico. Esta zona suele establecerse para evitar conflictos directos y actúa como un área de amortiguamiento entre dos o más entidades en conflicto.

El ejemplo más conocido de una DMZ en el contexto militar es la Zona Desmilitarizada de Corea, que separa a Corea del Norte y Corea del Sur desde 1953. Esta área sirve como una frontera de facto entre las dos naciones y es un espacio donde no se permite la presencia de fuerzas armadas.

Es paradójico porque es una zona donde no debe haber presencia militar (justo al lado hay claro), pero ay si alguno se salta esa norma.

Historia de la DMZ en IT

El concepto de DMZ fue adoptado en el ámbito de la ciberseguridad durante los años 90, cuando la proliferación de Internet y las crecientes amenazas cibernéticas llevaron a las organizaciones a buscar métodos más avanzados para proteger sus redes internas. La evolución de la DMZ ha sido significativa, adaptándose a nuevas tecnologías y amenazas.


¿Cómo funciona?

La DMZ es una red física o lógica que se sitúa entre la red interna segura de una organización (Intranet) y una red no segura, generalmente Internet. Los dispositivos alojados en la DMZ son accesibles desde ambas redes, pero implementan medidas de seguridad adicionales para prevenir ataques.

Algunos ejemplos comunes de sistemas colocados en la DMZ incluyen servidores web, servidores de correo electrónico y servidores FTP.


Tipos de Implementaciones de DMZ

Hay varias formas de implementar una DMZ.

DMZ con un solo firewall

En esta configuración, un único firewall gestiona el tráfico entre la red externa, la DMZ y la red interna. Es una implementación más simple pero menos segura.

DMZ con dos firewalls

La más común es utilizando dos firewalls. El primer firewall se coloca entre la red externa (Internet) y la DMZ, mientras que el segundo se sitúa entre la DMZ y la red interna.

Esta configuración permite un control detallado del tráfico que entra y sale de la DMZ, así como entre la DMZ y la red interna.

DMZ en la nube

Las DMZ también pueden implementarse en entornos de computación en la nube, donde los servicios y aplicaciones se alojan en servidores virtuales. Aquí las cosas se complican, puesto que todo tu sistema está expuesto al resto de la red global. La implementación en la nube requiere consideraciones adicionales debido a la naturaleza compartida y distribuida de los recursos en la nube.


Beneficios de la DMZ

  • Seguridad Mejorada: La DMZ proporciona una capa adicional de seguridad. Si un atacante compromete un sistema en la DMZ, todavía tendría que atravesar otro nivel de seguridad para acceder a la red interna.
  • Gestión del Tráfico: Permite una mejor gestión y monitoreo del tráfico entre Internet y la red interna.
  • Aislamiento de Servicios: Los servicios expuestos al público, como un sitio web, pueden ser aislados de la red interna, reduciendo el riesgo de una brecha de seguridad.

Desafíos y Consideraciones

  • Configuración y Mantenimiento: Implementar y mantener una DMZ requiere habilidades técnicas especializadas.
  • Costos Asociados: Puede haber costos significativos relacionados con hardware adicional y software de seguridad.
  • Balance entre Seguridad y Accesibilidad: Es crucial encontrar un equilibrio entre la protección de la red y la accesibilidad de los servicios alojados en la DMZ. Y en este punto es donde más afectado me he visto yo. Cuando quieres que otro sistema se conecte al tuyo vía web services o cuando necesitas que accedan usuarios fuera de la red.

Conclusión

La DMZ sigue siendo una herramienta crucial en la ciberseguridad, ofreciendo una capa adicional de protección para las redes internas. Con el avance de las tecnologías y las crecientes amenazas, es esencial que las organizaciones continúen adaptando y mejorando sus implementaciones de DMZ para mantenerse seguras.

Lo importante es que cuando nos hablen de la DMZ sepamos lo que significa y lo que implica, que no deja de ser un termino comúnmente usado en TI.

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