ABAP Restful Application Programming Model (RAP)
Conceitos 📚
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!):
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:
- O Data Definition (CDS) é quem define o modelo de dados da entidade do business object do seu serviço.
- 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.
- Aqui é uma classe que é implementada para o comportamento definido no objeto do item 2.
- 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.
- Também temos mais um Behavior Definition, agora para projeção. Neste objeto podemos ver as operações que estarão expostas (create, delete, …).
- Service Definition é usado para definir quais são as entidades relevantes para o serviço;
- 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.
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:
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!