Datos y servicios

OData

OData (Open Data Protocol) es un protocolo abierto basado en REST para consultar y modificar datos a través de HTTP, y el canal estándar por el que las aplicaciones SAP Fiori leen y escriben datos de negocio en SAP S/4HANA y en SAP BTP. SAP utiliza dos versiones, OData V2 y OData V4, que difieren en funcionalidades, herramientas y compatibilidad con las aplicaciones.

Datos clave

Tipo
Protocolo de acceso a datos (REST sobre HTTP, JSON o XML)
Capa
Servicios y API
Versiones en SAP
OData V2 y OData V4
Construido con
Service bindings de RAP, proyectos SEGW, servicios generados desde CDS (ABAP); CAP (SAP BTP)
Se administra con
/IWFND/MAINT_SERVICE (V2), /IWFND/V4_ADMIN (V4) en on-premise
Quién trabaja con ello
Desarrolladores SAP Fiori y ABAP, equipos de Basis, arquitectos de integración
Se aplica a
SAP S/4HANA (todas las opciones de implementación), SAP BTP
Capa: Servicios y APIDónde se ubica ▾
Dónde se ubica: L4 · Servicios y APICapa: Servicios y API.L1L2L3L4L5L6BTP
Qué ocurre cuando un usuario hace clic en un tile
Paso 4 de 4: La aplicación se iniciaHighlighted: L3 · Aplicaciones de UIL1L2L3L4L5L6BTP
  1. El target mapping coincidente inicia el destino: una app SAPUI5 o SAP Fiori elements, una transacción de SAP GUI for HTML, una aplicación Web Dynpro ABAP o una URL.

    Relacionadas:Target Mapping · SAP Fiori Elements · SAP GUI for HTML (Web GUI)

  2. Una app SAPUI5 o SAP Fiori elements solicita datos a un servicio OData. SAP Gateway comprueba que el usuario puede iniciar el servicio (objeto de autorización S_SERVICE) y enruta la solicitud al back-end.

    Relacionadas:OData · SAP Gateway · PFCG y roles de SAP Fiori

  3. El servicio se implementa mediante vistas CDS y, en las aplicaciones transaccionales, mediante el behavior de business objects RAP o mediante proyectos de Gateway más antiguos basados en SEGW. Aquí se ejecutan las comprobaciones de autorización sobre los datos de negocio.

    Relacionadas:Vistas ABAP CDS · ABAP RESTful Application Programming Model (RAP)

  4. Los datos se leen del documento de negocio en SAP S/4HANA o se escriben en él. Si el cambio requiere aprobación, se inicia un workflow en uno de los lugares indicados en la superposición de Procesos y workflow, y aparece una tarea en My Inbox.

    Relacionadas:Flexible Workflow · My Inbox · SAP Business Workflow

¿Cómo funciona OData?

OData describe los datos de negocio como entity sets a los que los clientes acceden mediante URL, con verbos HTTP estándar para cada operación:

  • GET lee un entity set o una sola entidad, por ejemplo los pedidos de compra de Cedar Office Supply.
  • POST, PATCH/PUT y DELETE crean, modifican y eliminan entidades.
  • Las system query options como $filter, $select, $expand, $orderby, $top y $skip permiten al cliente pedir al servidor que filtre, ordene y pagine los datos.
  • `$metadata` devuelve el modelo de datos del servicio: entity types, propiedades, claves, asociaciones y anotaciones.
  • `$batch` agrupa varias solicitudes en una sola llamada HTTP.

Como el modelo y las operaciones están estandarizados, un cliente genérico como el modelo OData de SAPUI5 puede vincular controles a cualquier servicio conforme sin código de solicitud a medida. OData es, por tanto, un contrato sobre cómo se exponen los datos, no una pieza de lógica de negocio.

¿Qué ocurre cuando una aplicación SAP Fiori llama a un servicio OData?

Una vez que el SAP Fiori Launchpad ha resuelto un tile e iniciado la aplicación, el acceso a los datos sigue el mismo camino en todas las aplicaciones SAPUI5 o SAP Fiori elements:

  1. La aplicación se inicia. El app descriptor indica el servicio OData que la aplicación usa como fuente de datos.
  2. La aplicación llama al servicio. El modelo OData de SAPUI5 envía solicitudes, a menudo agrupadas en un $batch, a la URL del servicio. En SAP S/4HANA, SAP Gateway comprueba que el usuario puede iniciar el servicio (objeto de autorización S_SERVICE) y enruta la solicitud.
  3. Se ejecuta la lógica de negocio. La implementación del servicio (vistas CDS, comportamiento RAP o código basado en SEGW) aplica validaciones y autorizaciones de datos.
  4. Se lee o se escribe el registro. La respuesta devuelve los datos, o el cambio se guarda en el documento de negocio, lo que puede desencadenar un procesamiento posterior, como un workflow.

Cada paso fallido se manifiesta de forma distinta: una autorización de inicio ausente aparece en SU53, mientras que un error del lado del servicio aparece en /IWFND/ERROR_LOG o /IWBEP/ERROR_LOG en on-premise. Toda pantalla SAP Fiori basada en datos es, en el fondo, una secuencia de solicitudes OData.

¿Cuál es la diferencia entre OData V2 y OData V4?

Ambas versiones conviven en los entornos SAP, y la versión determina qué herramientas y modelos se aplican:

OData V2OData V4
EstadoVersión anterior, todavía muy extendida en las aplicaciones SAP Fiori entregadasVersión más reciente del protocolo
Modelo SAPUI5sap.ui.model.odata.v2.ODataModelsap.ui.model.odata.v4.ODataModel
OperacionesFunction importsActions y functions
SAP Fiori elementsCompatible, con smart controlsCompatible, con building blocks
Publicación ABAP (on-premise)Por servicio, /IWFND/MAINT_SERVICEPor grupo de servicios, /IWFND/V4_ADMIN

RAP puede exponer el mismo business object como OData V2 o V4, y algunas funcionalidades más recientes de SAP Fiori elements solo se evalúan con OData V4, mientras que muchas aplicaciones entregadas siguen funcionando con V2. Elegir una versión de OData es una decisión sobre herramientas y compatibilidad con las aplicaciones, no solo sobre las funcionalidades del protocolo.

¿Cómo se construyen los servicios OData en SAP?

SAP ofrece varias formas de crear un servicio OData, según la plataforma y la antigüedad del código:

  • RAP (ABAP RESTful Application Programming Model): una service definition selecciona entidades CDS y un service binding las publica como OData V2 o V4, con la categoría UI (incluye anotaciones de UI para SAP Fiori elements) o Web API (sin metadatos específicos de UI).
  • Proyectos SEGW: el SAP Gateway Service Builder modela entidades y genera clases de runtime para ABAP escrito a mano; habitual en aplicaciones personalizadas más antiguas.
  • CDS con `@OData.publish: true`: genera un servicio OData V2 a partir de una vista CDS; sigue documentado para on-premise y Private Edition, mientras que los service bindings de RAP son el enfoque más reciente.
  • CAP en SAP BTP: service definitions en CDS servidas como OData, con V4 por defecto y V2 disponible mediante un adaptador.

El protocolo en la red es el mismo; el modelo de programación que hay detrás determina cómo se gestionan la lógica, los drafts y las extensiones. Conviene iniciar un nuevo servicio OData en el modelo de programación que la plataforma de destino recomienda actualmente.

¿Qué cambia entre SAP S/4HANA Cloud, on-premise y SAP BTP?

  • On-premise y Private Edition: los administradores registran y activan los servicios OData en SAP Gateway, asignan system aliases y mantienen los nodos ICF. Está disponible el conjunto completo de transacciones y logs de Gateway.
  • Public Edition: SAP opera los servicios que hay detrás de las aplicaciones SAP Fiori entregadas. El acceso a las herramientas de administración y supervisión está controlado, en lugar de abierto como en on-premise; los consumidores externos llaman a API liberadas mediante communication arrangements, y los servicios personalizados provienen de la extensibilidad para desarrolladores o de la extensibilidad key user.
  • SAP BTP: las aplicaciones llaman directamente a servicios OData en SAP BTP o acceden a servicios on-premise mediante destinations y el SAP Cloud Connector.

El protocolo OData se comporta igual en todas partes; lo que cambia es quién activa el servicio y cómo lo alcanza quien lo llama.

¿Cuáles son los errores comunes con OData en proyectos SAP Fiori?

  1. Tratar un servicio de UI como una API de integración. Un servicio construido para una aplicación SAP Fiori puede cambiar junto con la aplicación. Las integraciones deben apoyarse en API liberadas o en servicios diseñados como Web API.
  2. Recuperar datos de más. Las listas sin $select o con un $expand profundo transfieren muchos más datos de los que muestra la pantalla; compruebe las solicitudes en las herramientas de desarrollo del navegador.
  3. Ignorar `$batch` al depurar. El navegador muestra una sola llamada batch; la operación que falla está dentro del cuerpo de su respuesta.
  4. Mezclar versiones en el diseño de una aplicación. V2 y V4 usan modelos SAPUI5 y pilas de SAP Fiori elements distintos, por lo que los componentes rara vez pasan de una a otra sin cambios.
  5. Culpar a la UI de las carencias de autorización. Una lista vacía puede deberse a un filtro de autorización de datos en el servicio, no a un error del front-end.

La mayoría de los problemas de OData en proyectos SAP Fiori son problemas de diseño o de autorización que solo afloran como errores de protocolo.

OData frente a API liberadas: ¿cuál es la diferencia?

ODataAPI liberadas
Qué esUn protocolo para exponer y modificar datos a través de HTTPUn compromiso de estabilidad que SAP asume para objetos o servicios concretos
Pregunta que responde¿Cómo lee o escribe los datos un cliente?¿Puedo confiar en este objeto a lo largo de las actualizaciones?
AlcanceCualquier servicio OData, incluidos los servicios internos de UIAPI seleccionadas (OData, SOAP, vistas CDS, clases) con un estado de liberación
Consumidor típicoAplicaciones SAP Fiori y otros clientes HTTPIntegraciones, extensiones y código ABAP Cloud

Muchas API liberadas usan OData, pero un servicio OData no está liberado automáticamente: es el estado de liberación, no el protocolo, lo que indica la estabilidad ante las actualizaciones.

Preguntas frecuentes

¿OData es lo mismo que REST?

OData es un protocolo basado en REST, pero añade convenciones que REST por sí solo no define: un documento de metadatos estándar, query options estándar como $filter y $expand, y solicitudes batch. Esas convenciones permiten que clientes genéricos como el modelo OData de SAPUI5 funcionen con cualquier servicio conforme.

¿Una nueva aplicación SAP Fiori debe usar OData V2 o V4?

Para nuevas aplicaciones SAP Fiori elements construidas con RAP en releases actuales de SAP S/4HANA, OData V4 es el mejor punto de partida, porque algunas funcionalidades de SAP Fiori elements solo se evalúan con V4. OData V2 sigue siendo la opción adecuada al ampliar una aplicación V2 existente o cuando una funcionalidad necesaria solo está disponible en la pila V2.

¿Las aplicaciones SAP Fiori siempre usan OData?

Las aplicaciones SAPUI5 y SAP Fiori elements que trabajan con datos de negocio SAP usan servicios OData en casi todos los casos. Las transacciones SAP GUI for HTML y las aplicaciones Web Dynpro ABAP iniciadas desde el SAP Fiori Launchpad usan sus propios mecanismos en lugar de OData.

¿Pueden los sistemas externos llamar a los servicios OData que hay detrás de las aplicaciones SAP Fiori?

Técnicamente, un cliente HTTP puede llamarlos, pero esos servicios de UI están diseñados para su aplicación y no constituyen un contrato de integración estable. Las integraciones deben usar API liberadas, que SAP mantiene compatibles a lo largo de las actualizaciones, o servicios Web API construidos con ese fin.

¿Dónde veo por qué falló una solicitud OData?

En SAP S/4HANA on-premise y Private Edition, /IWFND/ERROR_LOG muestra los errores del lado del hub de Gateway y /IWBEP/ERROR_LOG muestra los errores en el servicio de back-end. En el navegador, el cuerpo de la respuesta de la solicitud que falla, a menudo dentro de una respuesta $batch, contiene el mensaje de error.

Fuentes

Se aplica a
SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
Última revisión

SAP, SAP Fiori, SAPUI5, SAP S/4HANA, SAP BTP y los demás productos y servicios de SAP mencionados son marcas comerciales o marcas registradas de SAP SE (o de una empresa afiliada de SAP) en Alemania y otros países. Esta guía es independiente y no está afiliada, patrocinada ni respaldada por SAP SE.