Dados e serviços

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 ▾
Onde se encaixa: L5 · Lógica de negócio e modelo de dadosCamada: Lógica de negócio e modelo de dados.L1L2L3L4L5L6BTP

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:

  1. 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.
  2. 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.
  3. 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.
  4. Os consumidores leem a view: ABAP SQL em programas, serviços OData construídos com RAP, queries analíticas e APIs liberadas.
  5. 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 entityCDS view DDIC-based
InstruçãoDEFINE VIEW ENTITYDEFINE VIEW com um nome de SQL view
View adicional no ABAP DictionaryNenhumaÉ gerada uma view DDIC gerenciada pelo CDS
Disponível on-premiseABAP 7.55 (SAP S/4HANA 2020)ABAP 7.40 SP05
Disponível na nuvemSAP BTP ABAP environment e Public Edition 2005Não recomendada; use view entities
StatusRecomendadaObsoleta: 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:

  1. 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.
  2. SAP Fiori elements lê as anotações de UI desse serviço e renderiza um list report ou object page.
  3. Apps analíticos consomem CDS analytical queries, definidas como transient view entities nas releases recentes e com a anotação obsoleta @Analytics.query nas 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?

  1. Criar novas views DDIC-based. Elas são obsoletas; comece com view entities.
  2. Construir sobre views SAP não liberadas. Funciona até que um upgrade altere a view. Verifique antes o contrato de liberação.
  3. 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.
  4. 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.
  5. 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 CDSCAP CDS
Executa emA plataforma ABAP (SAP S/4HANA, SAP BTP ABAP environment)Runtime CAP Node.js ou Java, principalmente no SAP BTP
Torna-seViews de banco de dados gerenciadas pelo repositório ABAPTabelas e views de banco de dados mais definições de serviço, geradas pelo compilador CAP
Comportamento transacionalAcrescentado com behavior definitions do RAPHandlers genéricos do CAP mais código customizado
Ciclo de vidaTransportes ABAPBuilds e implantações do projeto (por exemplo, multi-target applications)
Uso típicoModelos de dados dentro do SAP S/4HANA e extensões ABAPAplicaçõ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

Aplica-se a
SAP S/4HANA on-premise · SAP S/4HANA Cloud Private Edition · SAP S/4HANA Cloud Public Edition
Última revisão

SAP, SAP Fiori, SAPUI5, SAP S/4HANA, SAP BTP e os demais produtos e serviços SAP mencionados são marcas comerciais ou marcas registradas da SAP SE (ou de uma empresa afiliada da SAP) na Alemanha e em outros países. Este guia é independente e não é afiliado, patrocinado nem endossado pela SAP SE.