Dados e serviços

OData

OData (Open Data Protocol) é um protocolo aberto, baseado em REST, para consultar e alterar dados via HTTP, e o canal padrão pelo qual os apps SAP Fiori leem e gravam dados de negócio no SAP S/4HANA e no SAP BTP. A SAP usa duas versões, OData V2 e OData V4, que diferem em recursos, ferramentas e suporte nos apps.

Resumo

Tipo
Protocolo de acesso a dados (REST sobre HTTP, JSON ou XML)
Camada
Serviços e APIs
Versões no SAP
OData V2 e OData V4
Construído com
Service bindings RAP, projetos SEGW, serviços gerados a partir de CDS (ABAP); CAP (SAP BTP)
Administrado com
/IWFND/MAINT_SERVICE (V2), /IWFND/V4_ADMIN (V4) on-premise
Quem trabalha com ele
Desenvolvedores SAP Fiori e ABAP, equipes de Basis, arquitetos de integração
Aplica-se a
SAP S/4HANA (todas as opções de implantação), SAP BTP
Camada: Serviços e APIsOnde se encaixa ▾
Onde se encaixa: L4 · Serviços e APIsCamada: Serviços e APIs.L1L2L3L4L5L6BTP

Camada: Serviços e APIs

Abrir o mapa de arquitetura →
O que acontece quando um usuário clica em um tile
Passo 4 de 4: A aplicação é iniciadaHighlighted: L3 · Aplicações de UIL1L2L3L4L5L6BTP
  1. O target mapping correspondente inicia o destino: um app SAPUI5 ou SAP Fiori elements, uma transação SAP GUI for HTML, uma aplicação Web Dynpro ABAP ou uma URL.

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

  2. Um app SAPUI5 ou SAP Fiori elements solicita dados a um serviço OData. O SAP Gateway verifica se o usuário pode iniciar o serviço (objeto de autorização S_SERVICE) e encaminha a requisição ao back-end.

    Relacionados:OData · SAP Gateway · PFCG e roles do SAP Fiori

  3. O serviço é implementado por views CDS e, no caso de apps transacionais, pelo comportamento de business objects RAP ou por projetos Gateway mais antigos baseados em SEGW. As verificações de autorização sobre os dados de negócio são executadas aqui.

    Relacionados:ABAP CDS Views · ABAP RESTful Application Programming Model (RAP)

  4. Os dados são lidos do documento de negócio no SAP S/4HANA ou gravados nele. Se a alteração exigir aprovação, um workflow é iniciado em um dos lugares mostrados na sobreposição Processos e workflow, e uma tarefa aparece no My Inbox.

    Relacionados:Flexible Workflow · My Inbox · SAP Business Workflow

Passo 4 de 7Ver o caminho completo no mapa de arquitetura →

Como funciona o OData?

O OData descreve os dados de negócio como entity sets que os clientes endereçam por URLs, com verbos HTTP padrão para cada operação:

  • GET lê um entity set ou uma única entidade, por exemplo os pedidos de compra da Cedar Office Supply.
  • POST, PATCH/PUT e DELETE criam, alteram e removem entidades.
  • System query options como $filter, $select, $expand, $orderby, $top e $skip permitem que o cliente peça ao servidor para filtrar, ordenar e paginar os dados.
  • `$metadata` retorna o modelo de dados do serviço: entity types, propriedades, chaves, associações e anotações.
  • `$batch` agrupa várias requisições em uma única chamada HTTP.

Como o modelo e as operações são padronizados, um cliente genérico como o OData model do SAPUI5 pode vincular controles a qualquer serviço compatível sem código de requisição customizado. O OData é, portanto, um contrato sobre como os dados são expostos, e não uma peça de lógica de negócio.

O que acontece quando um app SAP Fiori chama um serviço OData?

Depois que o SAP Fiori Launchpad resolveu um tile e iniciou o app, o acesso aos dados segue o mesmo caminho em todo app SAPUI5 ou SAP Fiori elements:

  1. O app inicia. O app descriptor indica o serviço OData que o app usa como fonte de dados.
  2. O app chama o serviço. O OData model do SAPUI5 envia requisições, muitas vezes agrupadas em um $batch, para a URL do serviço. No SAP S/4HANA, o SAP Gateway verifica se o usuário pode iniciar o serviço (objeto de autorização S_SERVICE) e roteia a requisição.
  3. A lógica de negócio é executada. A implementação do serviço — CDS views, comportamento RAP ou código baseado em SEGW — aplica validações e autorizações de dados.
  4. O registro é lido ou gravado. A resposta retorna os dados, ou a alteração é gravada no documento de negócio, o que pode disparar processamentos subsequentes, como um workflow.

Uma etapa com falha aparece de forma diferente: uma autorização de início ausente aparece na SU53, enquanto um erro do lado do serviço aparece na /IWFND/ERROR_LOG ou na /IWBEP/ERROR_LOG on-premise. Toda tela SAP Fiori orientada a dados é, por baixo, uma sequência de requisições OData.

Qual é a diferença entre OData V2 e OData V4?

As duas versões coexistem nos landscapes SAP, e a versão define quais ferramentas e modelos se aplicam:

OData V2OData V4
StatusVersão mais antiga, ainda muito difundida nos apps SAP Fiori entreguesVersão mais nova do protocolo
Modelo SAPUI5sap.ui.model.odata.v2.ODataModelsap.ui.model.odata.v4.ODataModel
OperaçõesFunction importsActions e functions
SAP Fiori elementsSuportado, com smart controlsSuportado, com building blocks
Publicação ABAP (on-premise)Por serviço, /IWFND/MAINT_SERVICEPor grupo de serviços, /IWFND/V4_ADMIN

O RAP pode expor o mesmo business object como OData V2 ou V4, e alguns recursos mais novos do SAP Fiori elements só são avaliados com OData V4, enquanto muitos apps entregues continuam rodando em V2. Escolher uma versão de OData é uma decisão sobre ferramentas e suporte nos apps, e não apenas sobre recursos do protocolo.

Como os serviços OData são construídos no SAP?

A SAP oferece várias formas de criar um serviço OData, conforme a plataforma e a idade da base de código:

  • RAP (ABAP RESTful Application Programming Model): uma service definition seleciona entidades CDS, e um service binding as publica como OData V2 ou V4, com a categoria UI (carrega anotações de UI para o SAP Fiori elements) ou Web API (sem metadados específicos de UI).
  • Projetos SEGW: o SAP Gateway Service Builder modela entidades e gera classes de runtime para ABAP escrito à mão; comum em apps customizados mais antigos.
  • CDS com `@OData.publish: true`: gera um serviço OData V2 a partir de uma CDS view; ainda documentado para on-premise e Private Edition, enquanto os service bindings RAP são a abordagem mais nova.
  • CAP no SAP BTP: service definitions em CDS disponibilizadas como OData, com V4 como padrão e V2 disponível por meio de um adaptador.

O protocolo trafegado é o mesmo; o modelo de programação por trás dele determina como lógica, drafts e extensões são tratados. O ideal é iniciar um novo serviço OData no modelo de programação que a plataforma de destino recomenda atualmente.

O que muda entre SAP S/4HANA Cloud, on-premise e SAP BTP?

  • On-premise e Private Edition: os administradores registram e ativam serviços OData no SAP Gateway, atribuem system aliases e mantêm nós ICF. O conjunto completo de transações e logs do Gateway está disponível.
  • Public Edition: a SAP opera os serviços por trás dos apps SAP Fiori entregues. O acesso às ferramentas de administração e monitoramento é controlado, e não aberto como on-premise; consumidores externos chamam APIs liberadas por meio de communication arrangements, e serviços customizados vêm da extensibilidade de desenvolvedor ou key user.
  • SAP BTP: os apps chamam serviços OData no SAP BTP diretamente ou alcançam serviços on-premise por meio de destinations e do SAP Cloud Connector.

O protocolo OData se comporta da mesma forma em todos os lugares; o que muda é quem ativa o serviço e como um chamador o alcança.

Quais são os erros comuns com OData em projetos SAP Fiori?

  1. Tratar um serviço de UI como API de integração. Um serviço construído para um app SAP Fiori pode mudar junto com o app. Integrações devem usar APIs liberadas ou serviços projetados como Web APIs.
  2. Over-fetching. Listas sem $select ou com $expand profundo trafegam muito mais dados do que a tela mostra; verifique as requisições nas ferramentas de desenvolvedor do navegador.
  3. Ignorar o `$batch` na depuração. O navegador mostra uma única chamada batch; a operação com falha está dentro do corpo da resposta.
  4. Misturar versões no desenho de um app. V2 e V4 usam modelos SAPUI5 e stacks do SAP Fiori elements diferentes, então os componentes raramente passam de um para o outro sem alterações.
  5. Culpar a UI por lacunas de autorização. Uma lista vazia pode ser um filtro de autorização de dados no serviço, e não um bug de front-end.

A maioria dos problemas de OData em projetos SAP Fiori são problemas de desenho ou de autorização que só aparecem como erros de protocolo.

OData vs. APIs liberadas: qual é a diferença?

ODataAPIs liberadas
O que éUm protocolo para expor e alterar dados via HTTPUma promessa de estabilidade que a SAP faz para objetos ou serviços específicos
Pergunta que respondeComo um cliente lê ou grava os dados?Posso confiar neste objeto ao longo dos upgrades?
EscopoQualquer serviço OData, inclusive serviços internos de UIAPIs selecionadas (OData, SOAP, CDS views, classes) com um estado de liberação
Consumidor típicoApps SAP Fiori e outros clientes HTTPIntegrações, extensões e código ABAP Cloud

Muitas APIs liberadas usam OData, mas um serviço OData não é automaticamente liberado: é o estado de liberação, e não o protocolo, que sinaliza estabilidade em upgrades.

Perguntas frequentes

OData é o mesmo que REST?

O OData é um protocolo baseado em REST, mas acrescenta convenções que o REST puro não define: um documento de metadados padrão, query options padrão como $filter e $expand, e requisições em batch. Essas convenções permitem que clientes genéricos como o OData model do SAPUI5 trabalhem com qualquer serviço compatível.

Um novo app SAP Fiori deve usar OData V2 ou V4?

Para novos apps SAP Fiori elements construídos com RAP nas releases atuais do SAP S/4HANA, o OData V4 é o melhor ponto de partida, porque alguns recursos do SAP Fiori elements só são avaliados com V4. O OData V2 continua sendo a escolha certa ao estender um app V2 existente ou quando um recurso necessário só está disponível no stack V2.

Os apps SAP Fiori sempre usam OData?

Apps SAPUI5 e SAP Fiori elements que trabalham com dados de negócio SAP usam serviços OData em quase todos os casos. Transações SAP GUI for HTML e aplicações Web Dynpro ABAP iniciadas a partir do SAP Fiori Launchpad usam mecanismos próprios em vez de OData.

Sistemas externos podem chamar os serviços OData por trás dos apps SAP Fiori?

Tecnicamente, um cliente HTTP pode chamá-los, mas esses serviços de UI são projetados para o seu app e não são um contrato de integração estável. Integrações devem usar APIs liberadas, que a SAP mantém compatíveis ao longo dos upgrades, ou serviços Web API construídos para esse fim.

Onde vejo por que uma requisição OData falhou?

No SAP S/4HANA on-premise e na Private Edition, a /IWFND/ERROR_LOG mostra erros do lado do hub do Gateway e a /IWBEP/ERROR_LOG mostra erros no serviço de back-end. No navegador, o corpo da resposta da requisição com falha, muitas vezes dentro de uma resposta $batch, traz a mensagem de erro.

Fontes

Aplica-se a
SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition · SAP BTP
Última revisão

SAP, SAP Fiori, SAPUI5, SAP S/4HANA, SAP BTP e os demais produtos e serviços SAP mencionados são marcas comerciais ou marcas registradas da SAP SE (ou de uma empresa afiliada da SAP) na Alemanha e em outros países. Este guia é independente e não é afiliado, patrocinado nem endossado pela SAP SE.