Utilização de anotações ABAP em visões CDS

Objectives

After completing this lesson, you will be able to:
  • Use anotações ABAP em visões CDS.
  • Trabalhar com textos traduzíveis no CDS.

Anotações ABAP para visões CDS

As anotações da SAP são anotações CDS criadas e fornecidas pela SAP. Dependendo da avaliação, distinguimos dois grupos de anotações SAP: anotações ABAP e anotações específicas do framework.

Anotações ABAP

Anotações ABAP definem atributos técnicos e semânticos de um objeto CDS. Eles são avaliados quando o objeto definido no texto fonte CDS é ativado ou quando o objeto é usado no ambiente de tempo de execução ABAP. Anotações ABAP podem modificar o comportamento de instruções ABAP SQL que acessam um objeto CDS.

Anotações específicas do framework

As anotações específicas do framework definem as características técnicas e semânticas de objetos CDS necessários para componentes de software específicos, como ODATA, IU, análises, etc. Eles são avaliados pelos frameworks dos componentes de software correspondentes usando um API adequado e não são relevantes para ativações e o ambiente de tempo de execução ABAP.

Dependendo do escopo, distinguimos cinco grupos de anotações:

Anotações de entidade

Anotações para visões CDS e entidades de visão CDS. Colocadas antes da instrução DEFINE VIEW ou da instrução DEFINE VIEW ENTITY.

Anotações de elemento
Anotações para um elemento da lista SELECT de uma visão CDS. Colocadas na frente do elemento.
Anotações de parâmetro
Anotações para um parâmetro de uma visão CDS. Colocado antes do parâmetro.
Anotações de extensão
Anotações para uma extensão de visão CDS. Colocadas antes da instrução EXTEND VIEW ou da instrução DEFINE VIEW ENTITY.
Anotações de função
Anotações para uma função de tabela CDS. Colocadas antes da instrução DEFINE TABLE FUNCTION.

Anotações ABAP importantes para entidades de visão CDS

Para entidades de visão CDS, existem as seguintes anotações ABAP importantes:

AbapCatalog.dataMaintenance

Pode ser usado para restringir a visualização de dados para uma entidade de visão CDS.

ABAPCatalog.viewEnhancementCategory

Indica como a entidade de visão é ampliada usando ampliações de visão CDS. Uma lista de valores separados por vírgulas pode ser especificada entre colchetes da matriz de anotação.

AccessControl.authorizationCheck

Define o controle de acesso implícito quando o ABAP SQL é usado para acessar a visão CDS.

ObjectModel.usageType.<...>

Caracterizar entidades de visão CDS em relação às respectivas características relevantes para a performance.

AbapCatalog.entityBuffer.definitionAllowed

Pode ser utilizado para ativar ou desativar o armazenamento em buffer de tabela para uma entidade de visão CDS.

Anotações ABAP para elementos de visão

A maioria das anotações semânticas são apenas isso: informações semânticas a serem avaliadas pelos frameworks que constroem no topo do CDS.

Existem apenas algumas anotações na categoria Semântica, que são anotações ABAP.

Em entidades de visão CDS, é obrigatório usar a anotação @Semantics.amount.currencyCode para ligar elementos de montante (tipo de dicionário predefinido CURR) a um elemento de código de moeda (tipo de dicionário predefinido CUKY). Da mesma forma, é obrigatório usar a anotação @Semantics.quantity.unitOfMeasure para vincular elementos de quantidade (tipo de dicionário predefinido QUAN) a um elemento de unidade (tipo de dicionário predefinido UNIT). Sem essas anotações, um usuário da entidade CDS terá dificuldades em interpretar e processar corretamente os valores fornecidos nesses campos.

Anotações agrupadas

As anotações da mesma categoria de anotação podem ser agrupadas para torná-la visível de que pertencem juntas. No exemplo, existem três anotações da categoria ObjectModel. Todos pertencem à subcategoria ObjectModel.usageType. No exemplo de código inferior, você encontra um grupo que começa com @ObjectModel: seguido por um par de chaves. Dentro dos parênteses, geralmente há uma lista de anotações separadas por vírgulas, sem a primeira parte (ObjectModel). Em nosso exemplo, há apenas um subgrupo que começa com usageType: e que tem três anotações em sua lista separada por vírgulas.

Dica

Se você preferir essa sintaxe, pode defini-la como padrão ao inserir anotações por preenchimento automático. No menu ADT, vá para Janela→Preferências. Vá para Desenvolvimento ABAP→Editores→Editores de texto fonte→Conclusão de código→CDS e, em Inserção de anotações CDS, selecione Estruturado (várias linhas com todos os parênteses).

Anotações ABAP para textos traduzíveis

Anotações ABAP que começam com EndUserText são usadas para definir textos semânticos traduzíveis para objetos CDS.

EndUserText.label está disponível como anotação de visão ou anotação de elemento. O valor é limitado a um comprimento de 60 caracteres.

EndUserText.quickinfo só está disponível como anotação de elemento. O valor é armazenado como uma cadeia e pode ter um comprimento arbitrário.

Nota

Quando um elemento de visão é baseado em um elemento de dados Dictionary, o framework CDS deriva uma etiqueta e uma informação rápida das etiquetas de campo que são atualizadas no elemento de dados. Para esses campos, as anotações de texto só são necessárias, caso você pretenda substituir os textos provenientes do elemento de dados.

Visão de anotações ativas

A visão Anotações ativas resume as informações semânticas da entidade CDS e seus elementos. Ela lista todas as anotações de entidade e elemento contidas na definição de dados. Ele também lista informações semânticas que são derivadas (herdadas) de outros objetos do repositório, por exemplo, definições de tabela Dictionary e elementos de dados.

Para abrir a visão Anotações ativas, proceda da seguinte forma:

  1. Clique com o botão direito em Definição de dados. (Na janela do editor ou no Project Explorer.)
  2. Selecione Abrir com→anotações ativas.

Na configuração padrão da perspectiva ABAP, a visão Anotações ativas é exibida em uma nova guia na ficha abaixo da visão do editor.

No exemplo acima, você pode ver que o elemento AnnualSalary da entidade de visão CDS Z00_R_Employee tem uma etiqueta Salário anual que não está definida na definição de dados CDS. Esta etiqueta é derivada (herdada) do campo de origem na tabela de banco de dados Z00_EMPLOYEE e tem origem no elemento de dados Z00_SALARY, com o qual o campo de tabela é tipificado.

Como utilizar anotações ABAP em visões CDS

Assista ao vídeo para ver como usar anotações ABAP em visões CDS.

Usar anotações em definições de dados

Você quer enriquecer sua entidade de visão CDS com metadados. Em uma primeira etapa, você define e atualiza anotações ABAP para todos os elementos de visão e de visão individual.

Modelo:

  • /LRN/R_EMPLOYEE (Definição de dados)

Solução:

  • /LRN/R_EMPLOYEE_ANN (definição de dados)

Tarefa 1: Copiar modelo (opcional)

Copie a definição de dados do modelo. Se você concluiu o exercício anterior, pode ignorar esta tarefa e continuar processando sua definição de dados Z##_EMPLOYEE.

Etapas

  1. Copie a definição de dados /LRN/R_EMPLOYEE para uma definição de dados em seu próprio pacote (nome sugerido: Z##_EMPLOYEE, onde ## representa seu número de grupo).

    1. Na visão Explorador de projetos, clique com o botão direito do mouse na definição de dados /LRN/R_EMPLOYEE para abrir o menu de contexto.

    2. No menu de contexto, selecione Duplicar ....

    3. Insira o nome do seu pacote no campo Pacote. No campo Nome, insira o nome para a entidade da visão CDS (Z##_Employee, onde ## representa seu número de grupo).

    4. Ajuste a descrição e selecione Seguinte.

    5. Confirme a ordem de transporte e selecione Concluir.

  2. Ative a cópia.

    1. Pressione Ctrl + F3 para ativar a definição de dados.

Tarefa 2: Atualizar anotações de visão

Em sua definição de dados, atualize as anotações de visão. Adicione uma anotação que pode ser usada para restringir a visualização de dados para uma entidade de visão CDS e ajustar os valores das anotações ObjectModel.usageType.

Etapas

  1. No início da definição de dados, use code-completion para adicionar a anotação @ABAPCatalog.dataMaintenance com seu valor padrão.

    1. Posicione o cursor no início da primeira linha de código e pressione Enter para inserir uma nova linha vazia.

    2. Na linha vazia, insira @A e pressione Ctrl + espaço para chamar code-completion.

    3. Na lista de sugestões, selecione @ABAPCatalog: { } (annotation.

    4. Insira um sinal de ponto (.) e pressione Ctrl + espaço novamente.

    5. Selecione dataMaintenance: #RESTRICTED (anotação).

  2. Agrupe as anotações de entidade que começam com @ABAPCatalog.

    Dica

    Você pode usar a sintaxe do grupo de anotações @ObjectModel.usageType como blueprint.
    1. Ajuste o código da seguinte forma:

      Code Snippet
      123456789
      // @AbapCatalog.dataMaintenance: #RESTRICTED // @AbapCatalog.viewEnhancementCategory: [#NONE] @AbapCatalog: { dataMaintenance: #RESTRICTED, viewEnhancementCategory: [#NONE] } @AccessControl.authorizationCheck: #NOT_REQUIRED
  3. Exiba a documentação para as anotações @ObjectModel.usageType e atualize os valores.

    Nota

    Você deve garantir que os valores de anotação correspondem às configurações de tabela técnica da sua tabela de banco de dados para dados do empregado.
    1. Posicione o cursor em @ObjectModele pressione F1 para abrir a ajuda de linguagem ABAP.

    2. Na visão Ajuda de linguagem ABAP que é aberta abaixo do editor, selecione@ObjectModel, anotações de visão CDS, entidade de visão.

    3. Para a anotação serviceQuality, selecione #D porque a visão não suporta o processamento transacional.

    4. Para a anotação sizeCategory, escolha #M porque esperamos menos de 100.000 conjuntos de dados.

    5. Para a anotação dataClass, selecione #MASTER porque os dados do empregado são dados mestre.

Tarefa 3: Atualizar anotações de elemento

Na sua definição de dados, adicione a anotação de elemento obrigatória para estabelecer a ligação entre o salário anual e o código da moeda. Utilize a visão Anotações ativas para analisar as etiquetas de elemento derivadas de elementos de dados e fornecer uma etiqueta alternativa para o elemento CurrencyCode.

Etapas

  1. Na lista de elementos, remova o comentário dos elementos AnnualSalary e CurrencyCode.

    1. Selecione as duas linhas de código e pressione Ctrl + Shift + < para remover os sinais de comentário do início de cada linha.

  2. Adicione a anotação de elemento obrigatória que identifica o elemento AnnualSalary como um montante e vincula-o ao elemento CurrencyCode.

    Nota

    Você pode precisar adicionar essa anotação manualmente com o suporte de preenchimento de código. No momento da escrita, o editor para definições de dados não oferece uma correção rápida para este erro. (O editor para definições de tabela de banco de dados faz.)
    1. Ajuste o código da seguinte forma:

      Code Snippet
      123456
      department_id as DepartmentId, @Semantics.amount.currencyCode: 'CurrencyCode' annual_salary as AnnualSalary, currency_code as CurrencyCode,
  3. Abra a Visão de anotações ativas e analise os valores da anotação EndUserText.Label para os diferentes elementos de visão.

    1. Clique com o botão direito do mouse em qualquer lugar no texto fonte da definição de dados e selecione Abrir com→anotações ativas.

      Resultado

      A visão Anotações ativas é exibida como uma nova aba abaixo da visão do editor. A origem dos textos do usuário final é listada na coluna Tipo de dados de origem.
  4. Retorne ao texto fonte de sua definição de dados e adicione a anotação de elemento EndUSerText.label para o elemento de visão CurrencyCode. Modifique a etiqueta de Moeda para Código da moeda.

    1. Ajuste o código da seguinte forma:

      Code Snippet
      123456
      @Semantics.amount.currencyCode: 'CurrencyCode' annual_salary as AnnualSalary, @EndUserText.label: 'Currency Key' currency_code as CurrencyCode,
  5. Ative a definição de dados.

    1. Pressione Ctrl + F3 para ativar o objeto de desenvolvimento.

  6. Retorne à visão Anotações ativas, atualize a exibição e confirme que agora a nova etiqueta está ativa.

    Dica

    Para encontrar uma anotação específica mais facilmente, você pode primeiro comprimir toda a árvore e, em seguida, expandir o elemento e a anotação principal em que está interessado.
    1. Na barra de ferramentas da visão Anotações ativas, selecione Atualizar (F5). Como alternativa, posicione o cursor em qualquer lugar na visão e pressione F5.

    2. Na barra de ferramentas da visão Anotações ativas, selecione Comprimir tudo.

    3. Expanda Z##_R_EMPLOYEE→CurrencyCode→@EndUserText.