As anotações ABAP CDS documentam ou influenciam o comportamento da entidade em ferramentas e frameworks consumidores. Algumas são informativas, outras mudam como dados são interpretados ou extraídos. Aplicar anotações por hábito, sem conhecer sua finalidade, é uma fonte frequente de erros.
1. Anotações por responsabilidade
@EndUserText.label: descrição compreensível do objeto.@AccessControl.authorizationCheck: comportamento esperado de verificação de autorização CDS, em conjunto com as regras DCL.@Semantics.currencyCodee@Semantics.amount.currencyCode: ligação entre valores monetários e a moeda.@Semantics.unitOfMeasuree@Semantics.quantity.unitOfMeasure: ligação entre quantidades e unidades.@Analytics.dataExtraction.enabled: marcação de um objeto como potencial fonte de extração, dentro dos requisitos do cenário.
2. Código didático com semântica
Em uma CDS view entity sobre itens de venda, não basta trazer o montante ou a quantidade isoladamente. O consumidor também precisa conhecer a unidade ou moeda associada.
@EndUserText.label: 'Itens de venda com semantica'
@AccessControl.authorizationCheck: #NOT_REQUIRED
define view entity ZI_DEMO_SALES_ITEM
as select from vbap as I
inner join vbak as H
on H.vbeln = I.vbeln
{
key I.vbeln as SalesDocument,
key I.posnr as SalesDocumentItem,
@Semantics.unitOfMeasure: true
I.vrkme as SalesUnit,
@Semantics.quantity.unitOfMeasure: 'SalesUnit'
I.kwmeng as OrderQuantity,
@Semantics.currencyCode: true
H.waerk as DocumentCurrency,
@Semantics.amount.currencyCode: 'DocumentCurrency'
I.netwr as NetAmount
}
Os identificadores SalesUnit e DocumentCurrency usados nas anotações correspondem exatamente aos aliases expostos na mesma CDS. Esse detalhe evita um erro clássico de ativação.
3. E quanto a @VDM, @OData e @Analytics?
Essas famílias têm objetivos diferentes: organizar um modelo virtual de dados, disponibilizar contratos de serviço ou expor recursos analíticos e de extração. Não é necessário adicionar todas a todas as views. Uma camada Basic pode ser interna; uma interface para consumo pede decisões de segurança e contrato. Use a combinação que o seu release e a arquitetura exigem.
4. Checklist antes de ativar
- Existe referência de unidade para cada quantidade do tipo QUAN?
- Existe referência de moeda para cada montante do tipo CURR?
- A anotação de autorização atende à política do projeto?
- A entidade tem finalidade de leitura, serviço, análise ou extração bem definida?
- O framework consumidor realmente suporta as anotações utilizadas?