ABAP CDS Views
ABAP CDS views são modelos de dados definidos com Core Data Services, a linguagem de definição de dados baseada em SQL da plataforma ABAP. Uma CDS view declara campos, joins, associações a outras entidades e anotações, e o banco de dados a executa. No SAP S/4HANA, as CDS views formam o virtual data model por trás de muitos apps SAP Fiori, análises e APIs.
Resumo
- Tipo
- Objeto do repositório ABAP (definição de dados, DDLS)
- Camada
- Lógica de negócio e modelo de dados
- Editado em
- ABAP Development Tools (Eclipse)
- Variante atual
- CDS view entities (DEFINE VIEW ENTITY), on-premise a partir do ABAP 7.55 / SAP S/4HANA 2020
- Variante obsoleta
- CDS views DDIC-based (DEFINE VIEW), disponíveis desde o ABAP 7.40 SP05
- Quem trabalha com ele
- Desenvolvedores ABAP, modeladores de analytics, key users (app Custom CDS Views)
- Aplica-se a
- SAP S/4HANA (todas as opções de implantação); também SAP BTP ABAP environment
Camada: Lógica de negócio e modelo de dadosOnde se encaixa ▾
Camada: Lógica de negócio e modelo de dados
Abrir o mapa de arquitetura →Como funciona uma ABAP CDS view?
Uma ABAP CDS view é código-fonte que o sistema ABAP transforma em uma view de banco de dados:
- Um desenvolvedor cria uma definição de dados no ABAP Development Tools e escreve uma instrução
DEFINE VIEW ENTITY: fontes de dados, campos selecionados, cálculos, joins e associações a outras entidades CDS. - Anotações acrescentam metadados: rótulos, semântica como campos de moeda ou unidade, papéis analíticos, indicações de UI e configurações de exposição OData.
- Na ativação, o sistema cria a entidade CDS e a view correspondente no banco de dados, de modo que a lógica é executada onde os dados estão.
- Os consumidores leem a view: ABAP SQL em programas, serviços OData construídos com RAP, queries analíticas e APIs liberadas.
- Se existir um CDS access control para a view, suas condições são aplicadas a toda leitura da view.
As associações são uma diferença-chave em relação às views de banco de dados clássicas: declaram um relacionamento uma única vez, e o join só é montado quando um consumidor percorre o caminho da associação. Uma ABAP CDS view é, portanto, um modelo de dados semântico reutilizável, e não apenas um SELECT armazenado.
Qual é a diferença entre CDS view entities e views DDIC-based?
| CDS view entity | CDS view DDIC-based | |
|---|---|---|
| Instrução | DEFINE VIEW ENTITY | DEFINE VIEW com um nome de SQL view |
| View adicional no ABAP Dictionary | Nenhuma | É gerada uma view DDIC gerenciada pelo CDS |
| Disponível on-premise | ABAP 7.55 (SAP S/4HANA 2020) | ABAP 7.40 SP05 |
| Disponível na nuvem | SAP BTP ABAP environment e Public Edition 2005 | Não recomendada; use view entities |
| Status | Recomendada | Obsoleta: ainda possível, não recomendada |
A documentação da SAP cita ativação mais rápida, sintaxe mais simples e verificações mais rígidas entre os motivos para usar view entities. As views DDIC-based existentes continuam funcionando, e o ABAP Development Tools oferece um assistente de migração, documentado on-premise a partir do SAP S/4HANA 2023 FPS00. O RAP em strict mode também espera view entities como fontes de dados. Para qualquer novo desenvolvimento, as view entities são a variante de ABAP CDS views a usar.
Como as CDS views se encaixam no virtual data model?
O SAP S/4HANA entrega milhares de CDS views organizadas como o virtual data model (VDM). As basic interface views expõem entidades de negócio próximas das tabelas, as composite interface views as combinam e as consumption views atendem a um app ou query específico. O prefixo do nome indica a camada: I_ para interface views, como I_SalesOrder, e C_ para consumption views.
O que importa para os clientes é o status de liberação de uma view:
- Liberada para extensibilidade key user (contrato C1): utilizável em ferramentas de key user como o app Custom CDS Views.
- Liberada para desenvolvimento cloud (contrato C1): utilizável por desenvolvedores em ABAP Cloud, inclusive na extensibilidade de desenvolvedor.
- Não liberada: visível no sistema, mas sem contrato de estabilidade; a SAP pode alterá-la em qualquer upgrade.
Um key user da Alder Manufacturing que precisa dos pedidos de compra em aberto por fornecedor, por exemplo, constrói uma CDS view customizada sobre views de compras liberadas, em vez de ler tabelas. No virtual data model, o status de liberação decide se é seguro construir sobre uma ABAP CDS view.
Como as ABAP CDS views se tornam apps SAP Fiori?
Uma CDS view fornece dados e metadados; outros objetos a transformam em um app:
- Caminho atual (RAP): CDS view entities formam um business object, uma behavior definition acrescenta operações, projection views o ajustam, e uma service definition mais um service binding o expõem como OData V2 ou V4.
- SAP Fiori elements lê as anotações de UI desse serviço e renderiza um list report ou object page.
- Apps analíticos consomem CDS analytical queries, definidas como transient view entities nas releases recentes e com a anotação obsoleta
@Analytics.querynas mais antigas.
Sistemas mais antigos usam caminhos anteriores: a anotação @OData.publish do ABAP Programming Model for SAP Fiori, ou um projeto SAP Gateway que usa a CDS view como referenced data source; verifique quais deles a sua release ainda suporta. Em todos os caminhos, a ABAP CDS view define o que os dados são; o comportamento transacional vem do RAP ou, no modelo predecessor, do BOPF.
Onde terminam as ABAP CDS views?
Os pontos fortes são substanciais. Um único modelo atende igualmente OData, analytics e ABAP SQL; os cálculos rodam no banco de dados; as anotações carregam uma semântica que todo consumidor entende; e o controle de acesso é declarado junto aos dados.
Os limites decorrem do que uma view é:
- Somente modelo de leitura. Uma CDS view não cria, altera nem valida dados. Transações precisam de um RAP business object por cima.
- SQL declarativo, não lógica procedural. Algoritmos complexos vão para CDS table functions implementadas em AMDP, ou para ABAP.
- O desempenho depende do empilhamento. Views construídas sobre views sobre views podem gerar SQL pesado; associações usadas sem cuidado multiplicam os joins.
- Vinculadas à release. Os recursos de sintaxe chegam release a release; uma view escrita para o SAP BTP ABAP environment pode não ativar em uma release on-premise mais antiga.
As ABAP CDS views são o lugar certo para a semântica dos dados, não para lógica de processo ou de transação.
Quais são os erros comuns com ABAP CDS views?
- Criar novas views DDIC-based. Elas são obsoletas; comece com view entities.
- Construir sobre views SAP não liberadas. Funciona até que um upgrade altere a view. Verifique antes o contrato de liberação.
- Esquecer o controle de acesso. Sem um CDS access control, qualquer pessoa autorizada a ler a view vê todos os seus dados. Adicione um access control e mantenha também as autorizações de inicialização do app.
- Escrever anotações de UI na definição de dados. Metadata extensions mantêm o modelo legível e permitem que os metadados de UI mudem no seu próprio ritmo.
- Confundir ABAP CDS com CAP CDS. Mesma ideia e sintaxe semelhante, runtime diferente: um modelo CAP não ativa em um sistema ABAP.
A maioria dos problemas com ABAP CDS views vem de decisões de ciclo de vida, não do SQL.
ABAP CDS vs. CAP CDS: qual é a diferença?
| ABAP CDS | CAP CDS | |
|---|---|---|
| Executa em | A plataforma ABAP (SAP S/4HANA, SAP BTP ABAP environment) | Runtime CAP Node.js ou Java, principalmente no SAP BTP |
| Torna-se | Views de banco de dados gerenciadas pelo repositório ABAP | Tabelas e views de banco de dados mais definições de serviço, geradas pelo compilador CAP |
| Comportamento transacional | Acrescentado com behavior definitions do RAP | Handlers genéricos do CAP mais código customizado |
| Ciclo de vida | Transportes ABAP | Builds e implantações do projeto (por exemplo, multi-target applications) |
| Uso típico | Modelos de dados dentro do SAP S/4HANA e extensões ABAP | Aplicações e serviços side-by-side no SAP BTP |
ABAP CDS e CAP CDS compartilham uma ideia de modelagem e um nome, mas são linguagens separadas, com compiladores e runtimes separados.
Perguntas frequentes
As CDS views DDIC-based ainda são suportadas?
As CDS views DDIC-based existentes continuam funcionando, mas a SAP as classifica como obsoletas e recomenda CDS view entities para novos desenvolvimentos. O ABAP Development Tools também oferece um assistente para migrar views DDIC-based para view entities, documentado como suportado a partir do SAP S/4HANA 2023 FPS00.
Dá para usar ABAP CDS views no SAP ECC?
As CDS views DDIC-based existem a partir do ABAP 7.40 SP05, então sistemas SAP ERP em uma release SAP NetWeaver suficientemente recente podem usá-las. As CDS view entities exigem o ABAP 7.55, a release do SAP S/4HANA 2020; por isso, verifique a release SAP NetWeaver do sistema SAP ERP antes de planejá-las.
Key users conseguem criar CDS views sem desenvolvimento ABAP?
Sim. O app Custom CDS Views permite que key users construam views customizadas sobre CDS views da SAP liberadas para extensibilidade key user. O resultado pode servir como cube ou dimension view para analytics ou ser exposto como uma API OData externa, dentro dos limites das views liberadas.
As ABAP CDS views substituem as calculation views do SAP HANA?
Não, em geral. As ABAP CDS views são objetos do repositório ABAP, com os conceitos de ciclo de vida e autorização do ABAP. As calculation views do SAP HANA são modelos nativos do banco de dados. No SAP S/4HANA, os modelos de dados das aplicações são construídos em ABAP CDS.
Como encontrar a CDS view por trás de um app SAP Fiori?
Comece pelo serviço OData do app na SAP Fiori apps reference library e depois abra a service definition ou o serviço no ABAP Development Tools para ver as entidades CDS expostas. O app View Browser ajuda a explorar as views liberadas por nome e descrição.
Fontes
- SAP Help Portal: ABAP CDS — Feature Tables (release availability of CDS language elements)
- SAP Help Portal: ABAP CDS — DDIC-Based Entities (Obsolete)
- SAP Help Portal: CDS View Entities compared with CDS DDIC-based views (ABAP platform)
- SAP Help Portal: Stability Contract for System-Internal Use (C1), SAP S/4HANA
- SAP Help Portal: Virtual Data Model — view types and layers (SAP S/4HANA)
- Aplica-se a
- SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition
- Última revisão