ABAP Restful Application Programming Model (RAP)

Conceitos 📚

Alessandra Marinho
4 min readAug 21, 2023

ABAP Restful Application Programming Model ou para os íntimos, RAP, define uma arquitetura de desenvolvimento de serviços OData desde a modelagem dos dados até o consumo dos dados seja por um aplicativo Fiori ou como uma API e está disponível tanto no cenário Cloud quanto no On-Premise.

Neste post vou falar um pouco sobre conceitos importantes do RAP. Se você já leu algo sobre, provavelmente já viu essa imagem (ou se não leu, essa é ótima para começar!):

https://community.sap.com/topics/abap/rap

Essa é a estrutura de um serviço criado usando RAP. Basicamente se divide em 3 partes:

Modelagem de Dados e Comportamento (Data Modeling & Behavior)

O RAP utiliza CDS para a modelagem de dados — toda a definição e organização dos dados são feitos em entidades CDS. Além disso, nessa parte também definimos o que pode ser feito com esse modelo de dados, ou seja, seu comportamento e este fica a cargo do Business Object.

Nesse comportamento podemos implementar:

  • Ações e operações
  • Validações: verifica a consistência do business object
  • Determinações: modifica a instância do business object
  • Controle de acesso
  • Numerar (numbering): preencher chaves primárias da instância

PS: Se quiser saber mais sobre controle de acesso dá uma olhada nesse post:

Exposição dos serviços (Business Services Exposure)

Nesta parte é feita a definição de como o serviço funcionará, o vínculo com o protocolo de comunicação, como ele será exposto e o que pode ser feito através dele.

Consumo (Consumption)

Aqui tratamos a exposição do serviço para ser consumido por um aplicativo criando um serviço UI ou por sistemas externos (SAP/Não SAP), criando uma API.

Objetos criados

Ao utilizar RAP você criará vários objetos dentro do SAP e terá um desenvolvimento integrado com cada parte dele desempenhando um papel específico:

https://developers.sap.com/tutorials/abap-environment-restful-programming-model.html
  1. O Data Definition (CDS) é quem define o modelo de dados da entidade do business object do seu serviço.
  2. Depois temos o Behavior Definition que descreve o comportamento transacional que o seu serviço terá — se será uma implementação managed ou unmanaged (explicado abaixo), se seu serviço terá o modo rascunho e etc.
  3. Aqui é uma classe que é implementada para o comportamento definido no objeto do item 2.
  4. Mais um Data Definition, agora para a CDS Project View. Aqui é a camada mais alta do modelo de dados, responsável por preparar e expor os dados.
  5. Também temos mais um Behavior Definition, agora para projeção. Neste objeto podemos ver as operações que estarão expostas (create, delete, …).
  6. Service Definition é usado para definir quais são as entidades relevantes para o serviço;
  7. Service Binding é usado para expor o serviço definido.

Além desses objetos também podemos ter o Metadata Extension, onde serão informadas todos os elementos UI do app usando annotations.

Business Object

Como o próprio nome diz o Business Object (objeto de negócio) pode ser qualquer objeto dentro do SAP pois o termo é usado para representar um artefato da vida real: um dado mestre como material, equipamento, cliente; um documento como ordem de venda, pedido de compra; uma entidade custom (Z) e por aí vai.

https://www.youtube.com/watch?v=BNoUYkizM30

No exemplo geralmente utilizado pela SAP, a velha e famosa tabela de viagem, poderia ser algo assim:

Implementação da execução

Explorando um pouco mais a parte 3 das figuras acima temos isso aqui:

https://www.youtube.com/watch?v=BNoUYkizM30

Em um aplicativo por exemplo, a fase de interação é tudo o que acontece antes de o usuário clicar no botão “Salvar”, que dará início à sequência de salvar escrito em azul na imagem.

E por último neste post, existem 2 abordagens distintas para se fazer a implementação da execução do seu serviço no RAP:

Unmanaged: neste cenário você desenvolve os métodos da fase de interação e fica responsável pelo funcionamento. Por exemplo, caso você precise que o método de alteração chame uma BAPI ou faça alguma lógica específica. Caso utilize essa opção, a classe mencionada no item 3 acima na explicação dos objetos terá o código customizado com a lógica necessária.

Managed: esse aqui é maravilhoso, você usa todo o comportamento standard para as operações necessárias, podendo adicionar algum comportamento customizado e vai ser feliz!

Para quem está começando, tem esse vídeo do Devtoberfest de 2022 (em inglês):

Entendendo esses conceitos já é um bom começo para se aprofundar nesta nova forma de construir serviços oData!

Outras Referências

https://help.sap.com/docs/ABAP_PLATFORM_NEW/fc4c71aa50014fd1b43721701471913d/289477a81eec4d4e84c0302fb6835035.html

https://blogs.sap.com/2022/07/04/cds-projection-views-in-abap-cds-whats-your-flavor/#:~:text=CDS%20projection%20view%3A%20definition%20and,is%20used%20within%20S%2F4HANA.

--

--

Alessandra Marinho

Há 15 anos escrevendo códigos em ABAP e agora tentando escrever outras coisas 😊