Pré Requisitos
O ABAp RESTful Application Programming Model está disponível nos seguintes produtos:
- SAP BTP ABAP environment
- SAP S/4HANA Cloud
- Application Server ABAP 7.56
Ambiente de Desenvolvimento
Eclipse com ABAP Development Tools (ADT).
É recomendável utilizar a última versão disponível. O download pode ser feito em https://tools.hana.ondemand.com/.
É Importante ter conhecimentos em:
- ABAP Core Data Services (CDS)
- ABAP Objects.
Modelos de Desenvolvimento
No desenvolvimento basedo no ABAP RESTfull Application Programming Model, também conhecido como RAP, temos basicamente duas abordagens de desenvolvimento para os objetos de negócio. Abordagem Gerenciada (Managed Scenario) e abordagem não gerenciada (Unmanaged Scenario). Na abordagem gerenciada o framework cuida dos detalhes para manter o contrato do tipo REST, já na abordagem não gerenciada o desenvolvedor deverá garantir que alguns aspectos sejam implementados.
Managed Scenario (Abordagem Gerenciada)
Nesta abordagem consiste no desenvolvimento de aplicações do tipo green field, ou seja, aplicações totalmente novas que não farão uso de lógicas existentes. Nesta abordagem não é possível consumir funções, BAPIS ou código ABAP existente, apenas consumo baseado em consultas CDS. Alguns exemplos de aplicações que podem ser construídas com esta abordagem:
- Reports baseado em consultas e views CDS.
- Aplicações transacionais (CRUD) para gravação de dados em tabelas Z.
- APIs para consumo de views via OData que não dependem de código ABAP existente.
Unmanaged Scenario (Abordagem não gerenciada)
Nesta abordagem, também conhecida como brow field, deve ser utilizada quando código ABAP existente precisa ser reaproveitado. Por exemplo ao salvar um dado uma BAPI precise ser chamada. Ou para cenários em que o consumo de determinado dado precise ser baseado em em tecnologias mais antigas.
Camadas de Desenvolvimento do RAP
No desenvolvimento baseado no ABAP RESTful Application Programming Model consiste de três camadas principais:
- Data Modeling & Behavior – Modelagem de dados e comportamento;
- Business Services Provisioning – Provisionamento de serviços de negócio
- Service Consumption – Consumo de serviços
Modelagem de Dados
Aqui definimos os objetos de negócio, como por exemplo tabelas, visões e o comportamento transacional. Este modelo é construído com base no ABAP Core Data Services (CDS).
Provisionamento dos serviços
Esta etapa consiste em expor aspectos particulares do modelo de dados e suas ações como serviços através do protocolo OData.
Consumo dos serviços
Nesta etapa os serviços expostos podem ser consumidos como APIs ou através de frontend Fiori, baseado no modelo de desenvolvimento definido.
Modelagem de Dados e Comportamentos
Modelagem de Dados
Na modelagem de dados criamos um modelo baseado nas entidades que serão necessárias para nossa aplicação. No modelo abaixo podemos ver as diferentes entidades e seus relacionamentos, tudo isto é definido utilizando a linguagem CDS, tanto para criação das entidades no banco de dados em casos necessários, quanto para relacionamento de entidades já existentes.
Comportamentos
Na definição dos comportamentos, definimos todas as ações que podem ser executadas sobre o modelo de dados. Em cenários transacionais por exemplo temos ações de criação, atualização, exclusão e consulta de dados. Já em situações em que aplicação irá criar um relatório do tipo consulta podemos ter ações para definir o filtro ou a paginação dos dados consultados.
Alguns conceitos
Conforme vimos anteriormente a modelagem de dados e comportamento consiste basicamente em criar os objetos de negócio e as consultas a estes objetos de negócio. Neste conceito precisamos entender um pouco mais sobre alguns itens.
Objetos de Negócio (Business Objects)
Os Business Objects ou objetos de negócio é o termo utilizado para representar entidades do mundo real no desenvolvimento de aplicações empresariais, como por exemplo o Produto, a Viagem ou a Ordem de Venda. Em geral os objetos de negócio possuem alguns nodos ou itens relacionados e operações transacionais como criação, atualização, exclusão de dados além de operações específicas da aplicação como por exemplo uma aprovação de uma ordem de venda, uma baixa de estoque etc.
De uma forma geral os objetos de negócio são caracterizados por possuir: Uma estrutura de dados, comportamentos (behaviors) e implementações destes comportamentos. Podemos ver na figura abaixo o relacionamento entre as entidades e as definições de comportamentos e a implementação destes comportamentos.
No modelo gerenciado precisamos definir apenas as definições de comportamento baseado em ações transacionais básicas, assim definimos que a entidade poderá ter ações como (criar, atualizar e excluir) e o próprio framework cuida destas ações.
Temos ainda o modelo gerenciado, onde podemos alterar o comportamento de gravação de dados, ou save sequence, neste caso por exemplo podemos ter a necessidade de salvar dados em tabelas adicionais no momento da gravação. Neste caso toda a interação é controlada pelo framework e temos pontos de modificação durante a sequencia de salvamento.
Já no modelo não gerenciado precisamos definir toda a lógica manualmente, neste caso não há tratativa automática feita pelo framework e precisamos para cada comportamento definir a implementação em ABAP deste comportamento, utilizamos o que chamamos de Behavior Implementation.
Consultas (Query)
Uma query consistem em conectar ao modelo de dados para criação de interfaces do tipo read-only usando serviços OData. Um cenário muito comum na criação de relatórios do tipo List Report ou Analytical Report.
Em tempo de execução uma query nunca vai modificar os dados armazenados, ela apenas executa a extração de dados e modifica a estrutura recebida aplicando filtros por exemplo.
Na Figura abaixo temos a estrtutura de uma query gerenciada e não gerenciada, acessando os dados. Note que no modelo não gerenciado é necessário codificar em ABAP a implementação da extração dos dados.
Bom pessoal, a ideia deste artigo é apresentar alguns conceitos básicos e visão geral do modelo de desenvolvimento baseado no ABAP RESTful, em artigos futuros abordarei um passo a passo para criação de aplicações utilizando este modelo. Mais informações podem ser pesquisadas no HELP do framework.