
Na última seção, você viu como adicionar elementos completamente novos à lista de elementos de uma visão CDS usando ampliações de visão CDS. No entanto, quando você quer adicionar anotações a elementos existentes ou sobregravar valores de anotação, a criação de uma ampliação de visão CDS não é a abordagem correta. Para adicionar e sobregravar anotações, você deve criar uma ampliação de metadados CDS. A definição de uma ampliação de metadados CDS começa com a palavra-chave ANNOTATE VIEW seguida pelo nome da entidade de destino.
Vejamos um exemplo: a entidade de visão CDS /DMO/C_AgencyTP à esquerda, define, entre outros, um elemento AgencyID.
A ampliação de metadados CDS à direita repete esse nome de elemento AgencyID em sua lista de elementos, ou seja, dentro do par de chaves, e adiciona a anotação @EnduserText.label: 'Customer Text'na frente dela.
As seguintes restrições se aplicam a ampliações de metadados:
- Não é possível definir novos elementos em ampliações de metadados. Você só pode abordar elementos existentes da entidade de destino e adicionar anotações aos mesmos.
- Nem todas as anotações são suportadas em ampliações de metadados. A lista de anotações permitidas contém principalmente anotações específicas de framework relacionadas à funcionalidade de desenvolvimento, análise e pesquisa da IU.
Como pré-requisito para criar uma ampliação de metadados CDS, o proprietário da entidade de destino permite explicitamente isso adicionando @Metadata.allowExtensions: true à definição.
Em uma ampliação de metadados, é obrigatório especificar um valor para a anotação @Metadata.layer. Esta anotação permite criar várias ampliações de metadados para a mesma entidade CDS. Ele é usado para controlar a prioridade, caso os valores de anotação das diferentes ampliações de metadados se contradigam. Vamos dar uma olhada mais de perto.

Quando existe mais de uma ampliação de metadados para a mesma entidade CDS, a verificação de sintaxe garante que elas contêm valores diferentes para a anotação @Metadata.layer. Por outras palavras, como cinco valores diferentes são suportados no momento, você pode definir um máximo de cinco ampliações de metadados para a mesma entidade de base. A prioridade é a seguinte:
- #CUSTOMER sobregrava todas as outras camadas.
- #PARTNER sobregrava todas as outras camadas, exceto #CUSTOMER.
- #INDUSTRY sobregrava #LOCALIZAÇÃO e #CORE.
- #LOCALIZATION sobregrava somente #CORE e
- #CORE tem a prioridade mais baixa. Os metadados na camada #CORE podem ser sobregravados em qualquer outra ampliação de metadados.
Nota
No modelo de programação de aplicativos ABAP RESTful, é uma prática recomendada colocar os metadados relacionados à IU em uma extensão de metadados da camada #CORE. Isso abre uma forma elegante de soluções setoriais, parceiros e clientes ajustarem (sobregravarem) a configuração IU às suas necessidades.
