O que é RESTful Application Programming (RAP)?
O ABAP RESTful Application Programming Model, desenvolvido pela SAP, é construído inteiramente usando linguagem ABAP e segue o framework da Transferência de Estado Representacional (REST) para criar aplicativos em uma arquitetura cliente-servidor com uma interface uniforme para manipulação de recursos.
O principal objetivo do RAP (RESTful Application Programming) é permitir que os desenvolvedores criem, de forma eficiente, aplicativos empresariais prontos para a nuvem que gerenciem diferentes transações comerciais na forma de serviços OData padrão ou criem extensões para aplicativos existentes sem modificar o código padrão atual. Eles oferecem suporte ao desenvolvimento de ponta a ponta, desde a modelagem de dados até a exposição e compactação do serviço com SAP Fiori UX.

O RAP oferece suporte ao desenvolvimento para diversas plataformas SAP, incluindo o SAP BTP ABAP para a criação de aplicativos e extensões nativos da nuvem, bem como o SAP S/4HANA Cloud (Public e Private Edition), que oferece suporte a desenvolvimentos personalizados compatíveis com as inovações contínuas e os ciclos de atualização da nuvem. O RAP está disponível para SAP S/4HANA locais desde a versão 1909, permitindo que os clientes desenvolvam aplicativos usando práticas de desenvolvimento modernas e criem aplicativos preparados para o futuro.
O RAP desempenha um papel fundamental no modelo de desenvolvimento em nuvem ABAP para aplicativos transacionais, utilizando o Core Data Services (CDS) para definir estruturas e visualizações de dados, fornecendo mecanismos de implementação da lógica comercial e garantindo a integridade dos dados durante as transações.

Porque Aprender RESTful Application Programming?
Evolução das Necessidades do Aplicativo de Negócios
O RAP não é apenas um novo framework de desenvolvimento; é o modelo de programação estratégica da SAP para adotar o paradigma moderno na criação de aplicativos empresariais de negócios dentro do ecossistema SAP.
Os aplicativos empresariais modernos exigem insights imediatos de seus dados operacionais para embasar a tomada de decisões. Posteriormente, os recursos de análise estão sendo incorporados em aplicativos transacionais para obter insights sem a necessidade de mudar de contexto. O RAP permite a integração direta de dados com o treinamento e a análise de modelos de IA, reduzindo a necessidade de replicação e processamento complexos de dados.
O RAP é otimizado para o banco de dados SAP HANA, aproveitando todo o potencial dos recursos de processamento em memória dele e executando operações como junções, agregações e cálculos complexos em taxas mais altas, que antes eram gargalos de desempenho em bancos de dados tradicionais.
O SAP Fiori introduziu uma nova linguagem de design e um novo paradigma de experiência do usuário para aplicativos SAP, caracterizada pela simplicidade, consistência e acesso baseado em funções. O RAP permite que os desenvolvedores exponham objetos de negócios como serviços OData, possibilitando uma integração perfeita com elementos do Fiori e uma experiência consistente em vários dispositivos.
O RAP foi projetado tendo em mente os princípios de nuvem, e os aplicativos são inerentemente otimizados para o ambiente SAP BTP ABAP, permitindo tanto a extensibilidade no aplicativo quanto extensões simultâneas. Isso o torna ideal para implantações nativas da nuvem e híbridas.
Expectativas do Usuário Final
A interface do Fiori UX consome diretamente os serviços RAP OData, proporcionando uma experiência de usuário consistente em diferentes dispositivos e mantendo o contexto. O princípio fundamental do RAP promove a ausência de estado, permitindo que as sessões dos usuários sejam facilmente retomadas onde foram interrompidas em qualquer dispositivo, no próximo dispositivo.
Qualidades do Produto (pronto para uso)
Os princípios de programação RAP permitem que os desenvolvedores adicionem várias qualidades essenciais por padrão, sem a necessidade de esforços adicionais após o desenvolvimento:
- Escalabilidade: A arquitetura sem estado do RAP e a interação otimizada com o SAP HANA permitem, inerentemente, a escalabilidade, permitindo que os aplicativos sejam implantados de forma distribuída e facilmente escalados em ambientes de nuvem.
- Testabilidade: O RAP fornece ferramentas e técnicas integradas para testar a lógica dos aplicativos e promover a separação das camadas lógicas, tornando os testes de unidade e a definição de comportamento mais fáceis de manter.
- Extensibilidade: O RAP permite que os desenvolvedores criem pontos de extensão bem definidos em seus aplicativos, possibilitando modificações e adições de novos recursos sem a necessidade de alterações no código-fonte.
- Suportabilidade: Os aplicativos desenvolvidos são facilmente mantidos, com recursos detalhados de diagnóstico e depuração após a implantação.
- Documentabilidade: A natureza declarativa do RAP, como as definições de CDS (Core Data Services) e o modelo de programação estruturada, leva inerentemente a uma melhor documentação.
Noções básicas de RAP
O que é um objeto de negócio?
Um objeto de negócio no RAP representa uma entidade ou conceito de negócio do mundo real dentro de um domínio de negócios, como Pedido de Venda, Cliente, Produto ou Funcionário. Ele engloba todos os seus dados, comportamentos e relacionamentos. O objeto de negócio é a unidade central de controle para a manipulação consistente de dados e a integridade transacional, definindo a estrutura dos dados, as regras que regem a manipulação de dados e o ciclo de vida de uma entidade de negócio.
O que é uma consulta?
Uma consulta é a interface somente leitura que se conecta para acessar dados para consumo e é construída sobre as Core Data Services (CDS) Views, sendo usada principalmente para recuperar e exibir dados de negócios. Elas fornecem uma maneira estruturada de recuperar, filtrar, classificar e agregar dados, muitas vezes servindo como fonte de dados para painéis analíticos, funcionalidades de pesquisa ou listas de objetos na interface do usuário.
O que é um serviço de negócios?
Os serviços de negócios no RAP fornecem uma interface externa para acessar as funcionalidades de objetos de negócios, tanto de leitura quanto de gravação, que podem ser acessados por meio da interface do usuário do aplicativo Fiori para usuários finais ou sistemas externos. Os serviços de negócios são normalmente expostos por meio de uma definição de serviço, que descreve o que o serviço oferece, e uma associação de serviço, que especifica como ele é exposto usando um protocolo específico, como OData v2 ou v4, interface do usuário, API da Web, etc.
O que é um evento de negócios?
Um evento de negócios no RAP representa um acionador ou uma notificação definidos que sinaliza uma alteração ou ação significativa que ocorre dentro de um objeto de negócios, podendo desencadear outros eventos em aplicativos ou serviços que estejam vinculados. Por exemplo, um “pedido de venda criado” ou um “preço do produto alterado” é um evento de negócios que pode ser consumido por outros aplicativos ou fluxos de trabalho para processamento posterior. As Definições de Eventos e as Associações de Eventos são definidas e utilizadas para integração assíncrona entre serviços por meio do SAP Event Mesh ou da lógica personalizada.
Modelagem de dados
A modelagem de dados no RAP é realizada usando o Core Data Services (CDS), que define Entidades (estruturas de dados), suas associações (relacionamentos com outras entidades) e projeções com visualizações personalizadas para exposição. A modelagem de dados é o principal ponto para definir toda a estrutura do aplicativo sob a perspectiva do fluxo de dados.
Linguagem ABAP
A linguagem ABAP moderna serve como base para a implementação da lógica de negócios no RAP, aproveitando seus recursos, incluindo a Linguagem de Manipulação de Entidades (EML), anotações e conceitos orientados a objetos, bem como suas extensas bibliotecas e recursos de tratamento de erros.
Ferramentas
O desenvolvimento RAP é suportado por um conjunto diferente de ferramentas, como o CDS Editor, ABAP Source Code Editors, ADT Wizards e o Services Binding Editor, que estão integrados principalmente nas ABAP Development Tools (ADT) do Eclipse IDE (uma plataforma de desenvolvimento de código aberto amplamente utilizada para desenvolvimento de software).
Extensibilidade
O RAP fornece mecanismos de extensibilidade integrados, permitindo que clientes e parceiros aprimorem ou adaptem objetos e serviços de negócios padrão sem modificar a base de código principal. Fornece um mecanismo preciso para ambos os tipos de extensibilidade: extensibilidade no aplicativo, que permite adicionar campos personalizados, lógica personalizada ou objetos de negócios personalizados diretamente em aplicativos existentes, e extensibilidade simultânea, que envolve a criação de aplicativos ou serviços separados para consumir e estender objetos de negócios padrão.
Arquitetura de 3 Camadas do Modelo RAP
O modelo RAP tem três camadas fundamentais, cada uma com uma função específica, e fornece uma abordagem estruturada para a criação de aplicativos SAP Fiori de nível empresarial e para a exposição de APIs para interações externas.
Modelagem de Dados e Comportamento
A modelagem de dados e a definição de comportamento são a camada fundamental. Elas definem as entidades que representam objetos de negócio e os relacionamentos entre essas entidades.
As visualizações dos serviços de dados principais são usadas para definir modelos de dados que podem ser reutilizados e para definir a estrutura das entidades, incluindo atributos e associações e aplicar diferentes filtros e cálculos a elas, bem como anotações para fornecer metadados para o consumo da interface do usuário.
A definição de comportamento é a etapa que define quais ações são possíveis com uma estrutura de dados, como operações de criação, atualização e exclusão.
O modelo de dados e as operações disponíveis são definidos no banco de dados. No entanto, a lógica propriamente dita para a execução dessas operações é implementada em classes ABAP que contêm a lógica de negócios para criação, atualização, exclusão e operações personalizadas realizadas em objetos de negócios.
Serviços de Negócios
A camada de serviços de negócios é responsável por expor a estrutura de dados e o comportamento definidos na primeira camada como um serviço consumível. A definição de serviço é escrita para especificar quais entidades do CDS (Core Data Services) e seus comportamentos serão expostos, controlando assim o escopo do serviço.
A definição de associação de serviço é a segunda etapa que especifica o protocolo a ser usado para comunicação com o serviço, ou seja, OData v2 ou OData v4.
Consumo de Serviços
O consumo de serviços refere-se à camada onde os clientes ou aplicativos utilizam os serviços expostos. Quando um serviço se destina a um aplicativo SAP Fiori Elements, ele é denominado serviço de UI (interface do usuário) e sua finalidade é fornecer dados e metadados que o Fiori Elements utiliza para renderizar telas, tabelas e formulários automaticamente.
O serviço pode ser exposto como uma API da Web para ser consumido por qualquer cliente OData, e esse tipo de serviço não inclui metadados específicos da interface do usuário. Esses serviços são ideais para integração com sistemas não SAP, aplicativos móveis ou qualquer aplicativo personalizado que exija interação com dados e lógica de negócios.
Evolução dos ABAP Programming Models
A programação ABAP evoluiu da codificação livre para o modelo de programação de aplicativos RESTful, adaptando-se à mudança de paradigma tecnológico, às transformações arquitetônicas e às necessidades de desenvolvimento, especialmente após o advento do SAP Fiori e o desenvolvimento nativo da nuvem.
Programação ABAP Clássica
Nos modelos clássicos, os desenvolvedores costumavam escrever o código ABAP em um estilo procedural e imperativo, acessando diretamente os bancos de dados e combinando lógica de negócios e de interface do usuário, o que os tornava fortemente acoplados e, consequentemente, mais complexos de manter.
A interface do usuário foi criada utilizando ferramentas como SAPscript, Smart Forms e programação de diálogos (Dynpro). A criação de telas com elementos de interface do usuário e sua vinculação com a lógica ABAP, os módulos Process Before Output (PBO) e Process After Input (PAI). O Dynpro era eficaz para aplicativos para desktop tradicionais, mas carecia de recursos modernos de design responsivo.
ABAP Programming Model para SAP Fiori
Com o advento do SAP Fiori, surgiu um novo modelo de programação para atender às necessidades da experiência do usuário responsiva moderna. Este modelo se concentra na criação manual de OData com a ferramenta SAP Gateway Service Builder (SEGW). Os desenvolvedores definirão manualmente as entidades, propriedades e associações, e implementarão as operações de criação, leitura, atualização e exclusão (CRUD).
Ao usar o mecanismo OData.publish, os serviços OData foram registrados e publicados para consumo no SAP Gateway, que atuava como um hub para expor e gerenciar serviços OData.
O serviço Core Data permitiu que os desenvolvedores definissem modelos de dados semanticamente ricos para criação de entidades, associações e cálculos no nível do banco de dados. O Business Object Processing Framework (BOPF) com base em CDS foi projetado para simplificar a implementação de lógicas de objetos de negócios, como comportamento, validações e operações CRUD.
ABAP RESTful Application Programming Model
O RAP é a evolução mais recente, projetada para aplicativos eficientes e prontos para a nuvem para SAP S/4HANA e SAP BTP.
Ele centraliza o conceito de Serviço de Negócios, encapsulando aspectos tanto de dados quanto de comportamento, como quais entidades e comportamentos serão expostos para o Fiori ou para um aplicativo externo, e em qual protocolo.
O serviço Core Data continua sendo fundamental no RAP, permitindo a definição de modelos de dados e anotações reutilizáveis para gerar automaticamente a interface do usuário para o Fiori Elements.
O RAP separa a definição do comportamento da sua implementação. Uma especificação declarativa define quais operações são possíveis, enquanto a implementação de comportamento é onde reside o código ABAP para implementar a lógica dos comportamentos definidos.
Etapas do Processo de Desenvolvimento do RAP
O processo de desenvolvimento de aplicativos no RAP começa com a definição da estrutura de dados subjacente, incluindo seus relacionamentos, comportamento e metadados, para expor o serviço que pode ser consumido pelo Fiori Elements ou por um aplicativo externo.
1. Forneça as Tabelas do Banco de Dados
O primeiro passo é escolher quais tabelas serão usadas para armazenar os dados da empresa. Essas tabelas podem ser tabelas padrão existentes do SAP ou tabelas definidas pelo usuário. Adicione explicações sobre a integração de sistemas legados e quaisquer modificações feitas nas tabelas, caso não sejam tabelas com base em CDS. Criar novas tabelas, com atributos personalizados específicos para o aplicativo, também é uma opção adequada para uma implementação limpa e individual.
2. Defina o Modelo de Dados
A próxima etapa é definir o modelo de dados, criando visualizações no CDS que representam objetos de negócio. Essas visualizações podem consistir em uma única tabela, como uma visualização no CDS simples, ou unir várias tabelas para criar visualizações compostas com definições pai-filho para objetos de negócios complexos.
- Objetos de negócio simples representam integralmente um produto ou cliente, com todos os atributos e comportamentos relevantes encapsulados em uma única visualização no CDS.
- Os objetos de negócios compostos abordam cenários de negócios complexos que envolvem várias entidades de negócios, como um Pedido de Vendas, que pode não ser uma entidade única e pode estar vinculado ao Cabeçalho do Pedido de Vendas e aos Itens do Pedido de Vendas.
A relação pai-filho define a associação e a composição no CDS, apoia o comportamento transacional e garante a consistência.
3. Defina e Implemente o Comportamento (somente para aplicativos transacionais)
O modelo de dados define a estrutura do objeto de negócios. Em contrapartida, a definição e implementação do comportamento definem como ele se comportará transacionalmente, incluindo as operações suportadas, como por exemplo, criar, atualizar e excluir. Aqui são implementadas operações personalizadas com verificações de validação antes de salvar os dados.
O Behavior Pool, uma classe ABAP global, é usado para a implementação de comportamentos, onde o código ABAP propriamente dito é escrito.
As principais funcionalidades dos aplicativos transacionais são as seguintes:
- Habilitação do Rascunho: Permitir que os usuários finais salvem dados de negócios incompletos como rascunho, sem confirmar as alterações, melhorando assim a experiência do usuário, ao permitir que eles pausem e retomem o trabalho posteriormente.
- Numeração Automática: Geração de chaves únicas e sequenciais para entidades que exigem identidades exclusivas, como números de pedidos de venda.
- Validações: São verificações de consistência de dados implementadas para validar a aderência à lógica de negócios do formato de entrada e dos valores esperados, por exemplo, as datas de entrega não podem estar no passado e o formato dos números de telefone deve estar correto.
- Determinações: Campos que são calculados com base em informações inseridas em outros campos, por exemplo, o nome completo é preenchido com base no nome e sobrenome, ou quando o nome de um produto é inserido, a descrição e preços dele são preenchidos automaticamente.
A implementação do comportamento pode ser negligenciada se o aplicativo for puramente para exibir dados, como relatórios em formato de lista ou relatórios analíticos, e não exigir operações de modificação.
4. Projete o RAP Business Object
Em vez de expor todos os campos da visualização no CDS subjacente, subconjuntos selecionados de campos são expostos com visualizações de projeção no CDS para um serviço específico. É possível renomear campos ou adicionar campos pré-calculados específicos da interface do usuário e usar convenção de nomenclatura, como ZC_ para garantir a consistência.
Semelhante a um modelo de projeção de Dados, a projeção de Comportamento permite habilitar ou desabilitar operações específicas, como criar, excluir e atualizar, no nível do serviço. Por exemplo, em vez de remover a operação de exclusão no nível de comportamento no CDS, esse comportamento não é exposto no nível de serviço.
Anotações específicas da interface do usuário são adicionadas à visualização de projeção para definir como os dados devem ser exibidos na interface de usuário do Fiori Elements e controlar aspectos como rótulos de campos, recursos de pesquisa e funcionalidades analíticas.
5. Defina o Serviço
A definição de serviço é um objeto de repositório que referencia uma ou mais visualizações de projeção do CDS e atua como um contêiner para as entidades a serem expostas como um serviço.
Geralmente, é usada a convenção de nomenclatura Z e descrevem-se anotações específicas para controlar a exposição e as propriedades de navegação da interface do usuário.
6. Associe o Serviço e Teste o Serviço
A etapa final consiste em definir a associação do serviço, descrevendo os métodos de consumo, ou seja, a interface do usuário do Fiori ou aplicativos externos, e o protocolo, como OData v2 ou v4.
Para serviços de interface do usuário, os desenvolvedores podem habilitar a visualização para gerar automaticamente uma visualização do Fiori Elements, permitindo que eles testem rapidamente a funcionalidade sem precisar criar o aplicativo Fiori completo.
Normalmente, é usada a convenção de nomenclatura ZUI_<service_Name>_04 para o serviço de interface do usuário do protocolo OData v4.
Implementando os Objetivos de Negócios
Existem duas abordagens principais para implementar tipos de Objetos de Negócio no RAP:
- Gerenciado
- Não gerenciado
Ambos os métodos se baseiam em modelos de dados definidos por entidades de visualização no CDS. A diferença reside no fornecimento do comportamento transacional do objeto de negócio.
Objetivos de Negócios Gerenciados
A implementação de tipos gerenciados é usada principalmente quando um aplicativo é desenvolvido do zero, mas também pode aproveitar o suporte pronto para uso no processamento transacional. O framework fornece validações e determinações padrão.
Objetivos de Negócios não Gerenciados
Adota-se uma abordagem não gerenciada para obter controle total sobre a lógica transacional, as operações CRUD e a persistência de dados ao lidar com lógica de negócios complexa e interação com vários sistemas. Os desenvolvedores devem implementar os componentes essenciais do contrato REST. O comportamento deve ser especificado na definição de comportamento, mas implementado manualmente em classes ABAP no pool de comportamentos.
Quando a lógica de negócios já está encapsulada em módulos funcionais, uma abordagem não gerenciada ajuda os desenvolvedores a reutilizarem a lógica de negócios existente em objetos de negócios. É possível beneficiar-se da orquestração padronizada de tempo de execução do RAP para criar um serviço RAP.
Serviços de Reutilização e Bibliotecas
O ABAP RAP fornece uma coleção de funcionalidades, APIs e componentes pré-projetados, criados para uso em vários aplicativos ou serviços. Reutilizar serviços e bibliotecas existentes permite que os desenvolvedores economizem tempo e esforço em tarefas como verificações de autorização padronizadas, determinações de texto e código redundante, permitindo que eles se concentrem na lógica de negócios exclusiva e específica do aplicativo.
Bibliotecas e serviços predefinidos fornecem funcionalidades genéricas prontas para uso, aplicáveis a vários domínios de negócios, como tratamento de rascunhos, controle e validação de campos, gerenciamento de processamento transacional, utilitários de data e hora, tratamento de Etag para controle de concorrência de dados, geração padronizada de registros e rastreamento de erros ou eventos.
O RAP permite a criação de lógica personalizada específica para o domínio, para esses serviços ou bibliotecas internos, e esses serviços personalizados podem ser reutilizados em qualquer lugar.
A possibilidade de reutilizar bibliotecas padrão ou personalizadas permite que os desenvolvedores reduzam o código repetitivo. Isso não só acelera o processo de desenvolvimento, como também melhora a capacidade de manutenção. A reutilização de serviços e bibliotecas foi criada para se integrar aos aplicativos, permitindo que os desenvolvedores chamem serviços externos ou invoquem funções de biblioteca diretamente de suas implementações de comportamento e visualizações de projeção.
Perguntas Frequentes
O modelo de programação ABAP RESTful é usado no desenvolvimento de novos Aplicativos Fiori, criação de serviços OData para expor a lógica de negócios, modernização do código personalizado existente ao atualizar para o S/4HANA e desenvolvimento de extensibilidade no S/4HANA.
O modelo RAP é usado principalmente para desenvolver serviços OData que expõem dados e serviços dentro do ecossistema SAP, permitindo operações de negócios na interface do usuário do SAP Fiori ou interação com aplicativos de terceiros. Esses serviços podem assumir a forma de serviços OData, APIs e serviços analíticos que fornecem funcionalidades somente de leitura.
Um Objeto de Negócio é um modelo de dados lógico que representa uma operação ou entidade de negócios do mundo real, como por exemplo, Sales_Order, Product_Name, Employee e encapsula a estrutura de dados, a lógica de negócios, as validações e o comportamento. Ao mesmo tempo, um serviço de negócios é uma interface por meio da qual os dados e o comportamento de um objeto de negócios são disponibilizados para que outros aplicativos os consumam e interajam para a execução de operações de negócios.