La creación de un servicio OData del lado del backend
1. Introducción
En SAP, los servicios OData se crean y gestionan desde el backend ABAP utilizando el componente SAP Gateway.
El Gateway permite exponer datos y lógica de negocio del sistema SAP (ECC o S/4HANA) mediante un servicio OData accesible a través de HTTP, para ser consumido desde aplicaciones SAP Fiori o externas.
La herramienta principal para esta tarea es la transacción SEGW (Service Gateway Builder), que ofrece un entorno gráfico para modelar, implementar y registrar servicios OData sin necesidad de codificación manual extensa.
2. Concepto general del desarrollo OData en backend
El proceso de creación de un servicio OData involucra dos capas principales:
-
Modelo (Model): define la estructura de datos (entidades, propiedades, asociaciones).
-
Servicio (Service): implementa la lógica de acceso a los datos (lectura, creación, actualización, eliminación).
Cada servicio OData incluye clases generadas automáticamente, donde el desarrollador implementa la lógica de negocio necesaria.
3. Estructura básica de un proyecto OData
Al crear un proyecto en la transacción SEGW, se generan automáticamente cuatro objetos ABAP:
Objeto
Descripción
Clase
| Model Provider Class (MPC) |
Define el modelo (entidades, tipos, asociaciones). |
ZCL_<nombre>_MPC |
| Model Provider Class Extension (MPC_EXT) |
Permite ampliar el modelo sin modificar el estándar. |
ZCL_<nombre>_MPC_EXT |
| Data Provider Class (DPC) |
Define las operaciones CRUD-Q (lógica de datos). |
ZCL_<nombre>_DPC |
| Data Provider Class Extension (DPC_EXT) |
Se utiliza para personalizar o sobrescribir la lógica estándar. |
ZCL_<nombre>_DPC_EXT |
🔹 En la práctica, toda la lógica de negocio personalizada se implementa en las clases “_EXT” para evitar perder modificaciones al regenerar el servicio.
4. Pasos para crear un servicio OData en SAP Gateway
1. Acceder a la transacción SEGW
-
Ingresar al sistema SAP y ejecutar /nSEGW.
-
Crear un nuevo proyecto con un nombre técnico (por ejemplo, Z_ODATA_CLIENTES).
-
Completar los campos: Descripción, Paquete, Persona responsable y guardar.
2. Definir el modelo de datos
3. Mapear los orígenes de datos
4. Generar el runtime del servicio
5. Implementar la lógica en DPC_EXT
-
Editar la clase ZCL_<nombre>_DPC_EXT en SE80 o Eclipse ABAP.
-
Sobrescribir los métodos estándar (por ejemplo GET_ENTITYSET, GET_ENTITY, CREATE_ENTITY, etc.).
Ejemplo:
METHOD customerset_get_entityset. SELECT * FROM kna1 INTO CORRESPONDING FIELDS OF TABLE et_entityset. ENDMETHOD.
6. Registrar y activar el servicio
-
Ir a la transacción /IWFND/MAINT_SERVICE.
-
Seleccionar Add Service, buscar el proyecto, y asignar un sistema Local o Remote.
-
Activar el servicio; aparecerá disponible bajo una URL OData como:
/sap/opu/odata/sap/Z_ODATA_CLIENTES_SRV/
5. Ejemplo práctico: servicio de clientes
Entidad: Customer
Propiedades: CustomerID, Name, Country, City.
Modelo MPC_EXT:
DEFINE ENTITY customer KEY customerid TYPE kunnr name TYPE name1 country TYPE land1 city TYPE ort01.
Implementación en DPC_EXT:
METHOD customerset_get_entityset. SELECT kunnr AS customerid name1 AS name land1 AS country ort01 AS city FROM kna1 INTO CORRESPONDING FIELDS OF TABLE et_entityset. ENDMETHOD.
URL de prueba:
/sap/opu/odata/sap/Z_ODATA_CLIENTES_SRV/CustomerSet
6. Buenas prácticas
-
Implementar la lógica de negocio siempre en las clases “_EXT”.
-
Usar nombres técnicos en mayúsculas con prefijo “Z_”.
-
Probar el servicio desde el navegador o desde el Gateway Client (/IWFND/GW_CLIENT).
-
Mantener las propiedades alineadas con las estructuras DDIC.
-
Documentar el servicio en el campo Description para su identificación.
-
Evitar consultas sin filtros en tablas grandes (usar SELECT ... UP TO n ROWS).
7. Conclusión
La creación de servicios OData en el backend SAP Gateway es un proceso estructurado que combina modelado de datos y codificación ABAP mínima.
Permite exponer datos SAP de forma estándar y segura para su consumo por aplicaciones SAPUI5 y Fiori, garantizando interoperabilidad y rendimiento.
El dominio de la transacción SEGW es fundamental para cualquier consultor SAP Fiori o desarrollador ABAP orientado a servicios.
Preguntas de repaso
-
¿Qué transacción se utiliza para crear servicios OData en SAP?
→ SEGW
-
¿En qué clase se implementa la lógica de negocio personalizada?
→ En la DPC_EXT.
-
¿Qué define la clase MPC dentro de un servicio OData?
→ El modelo de datos (entidades, propiedades y asociaciones).
-
¿Qué operación HTTP corresponde a la lectura de datos?
→ GET.
-
¿Con qué transacción se registra y activa un servicio OData en SAP Gateway?
→ /IWFND/MAINT_SERVICE