Guia de introdução
Aplicação de técnicas básicas e conceitos
Trabalhar com classes locais
Ler dados do banco de dados
Trabalhar com objetos de dados estruturados
Trabalhar com tabelas internas complexas
Implementar atualizações do banco de dados utilizando business objects
Descrição do modelo de programação de aplicativos ABAP RESTful

Trabalhar com visões CDS

Objectives

After completing this lesson, you will be able to:
  • Analisar uma definição de visão CDS.
  • Ler dados utilizando uma visão CDS.

Visões CDS

Visualizar definições no ABAP Core Data Services (ABAP CDS)

ABAP Core Data Services, ou ABAP CDS para abreviar, é uma infraestrutura para definir e consumir modelos de dados semanticamente ricos no ABAP. Eles usam um DDL de CDS para definir entidades CDS que implementam um modelo de dados semântico. As entidades de modelagem CDS mais importantes são as entidades de visão CDS.

A definição da Visão CDS contém lógica SQL reutilizável; às vezes, tão simples quanto uma projeção de campos de tabela e, às vezes, mais sofisticada com cálculos, agregações, junções, uniões e assim por diante.

Uma definição de visão CDS pode conter associações para refletir as relações do modelo de dados. Os consumidores da visão podem utilizar as associações para recuperar dados relacionados.

Por fim, as anotações são usadas para enriquecer semanticamente a definição de visão. Esses metadados são avaliados por frameworks que são criados na parte superior das definições de visão CDS. Uma dessas estruturas é o modelo de programação de aplicativos ABAP RESTful, para o qual discutiremos um exemplo mais adiante neste curso.

Vejamos exemplos de definições de visão CDS.

As definições de visão CDS estão contidas em objetos do repositório do tipo Definição de dados. Vejamos agora o texto fonte da definição de dados /DMO/I_CONNECTION.

A parte principal é a instrução DEFINE VIEW ENTITY. Ela contém o nome da entidade da visão CDS e, após a palavra-chave FROM, a fonte de dados. Em nosso exemplo, o nome da entidade de visão é /DMO/I_Connection e a fonte de dados é a tabela de banco de dados /dmo/connection. Adição opcional AS, define um nome de alias Conexão para abordar a fonte de dados dentro da definição de visão.

Nota

A fonte de uma entidade de visão CDS também pode ser outra visão CDS.

Um par de chaves contém a lista de elementos de visão. Em nosso exemplo, os elementos de visão são campos da tabela de banco de dados /dmo/connection. A palavra-chave Chave antes dos dois primeiros elementos define os mesmos como campos-chave da entidade Visão CDS. O suplemento opcional AS define um nome de alias para cada elemento de visão.

A adição association define uma relação com outra entidade de visão CDS. Em nosso exemplo, a visão relacionada é a entidade de visão CDS /DMO/I_Carrier e o nome da associação é _Airline.

Essa associação fica disponível para consumidores da visão adicionando-a à lista de elementos. Isso é referido como exposição da associação.

As anotações começam com arroba (@) e são utilizadas para enriquecer semanticamente a definição de visão para consumidores. Anotações antes da definição de visão são chamadas anotações de entidade. As anotações de entidade são utilizadas para definir metadados para a entidade de visão como um todo. Anotações entre as chaves são chamadas de anotações de elemento. As anotações de elemento são utilizadas para definir metadados para os diferentes elementos da visão.

Você já aprendeu a usar a ferramenta Visualização de dados para exibir e analisar o conteúdo de uma tabela de banco de dados. Esta ferramenta também está disponível para entidades de visão CDS.

Para abrir a Visualização de dados para uma determinada entidade CDS, clique com o botão direito do mouse em qualquer lugar na definição de dados e selecione Abrir comvisualização de dados. Como alternativa, posicione o cursor em qualquer lugar na definição de dados e pressione F8.

A ferramenta exibe os dados retornados pela entidade CDS. As mesmas funções estão disponíveis para ordenar ou filtrar os dados e ajustar a exibição.

Se a definição de visão contiver uma ou mais associações, você pode utilizá-las para exibir dados relacionados. Para isso, proceda da seguinte forma:

  1. Clique com o botão direito do mouse em uma linha na exibição.
  2. No menu de contexto, selecione Seguir associação.
  3. A partir da lista de associações disponíveis, selecione aquela na qual você está interessado.

Se você quiser encontrar todas as visões CDS com uma determinada tabela de banco de dados como fonte, pode usar a ferramenta Lista de utilizações do ADT. Para utilizar esta ferramenta, proceda da seguinte forma:

  1. Abra a definição da tabela de banco de dados.
  2. Clique com o botão direito do mouse em qualquer lugar no texto fonte e selecione Obter lista de utilizações no menu de contexto. Como alternativa, você pode pressionar Ctrl + Shift + G ou selecionar o botão da barra de ferramentas com o mesmo símbolo.
  3. A visão Procurar exibe uma lista de todos os objetos de desenvolvimento que utilizam diretamente a tabela de banco de dados.

Você pode aplicar filtros à lista de utilizações se, por exemplo, você só estiver interessado em objetos de determinados pacotes ou objetos do tipo de objeto específico. O exemplo ilustra como filtrar visões CDS que usam a tabela.

Como analisar uma visão CDS

Visões CDS no ABAP SQL

Quando você implementa uma instrução SELECT no ABAP, pode usar uma entidade de visão CDS como fonte de dados em vez de ler diretamente a partir da tabela de banco de dados. Isso tem várias vantagens.

  • Reutilização da lógica SQL contida na visão CDS
  • Leitura concisa e fácil de ler de dados relacionados usando as associações
  • Às vezes, os nomes de visões e elementos de visão são mais legíveis do que os nomes mais técnicos de tabelas de banco de dados e campos de tabela

A instrução SELECT no exemplo utiliza a entidade de visão CDS /DMO/I_Connection como fonte de dados.

Nota

Considere que os nomes usados na cláusula FIELDS e nas condições WHERE são os nomes de alias dos elementos de visão.

O terceiro elemento na cláusula FIELDS faz uso da associação exposta _Airline. Ele lê o elemento Name a partir da entidade de visão CDS associada /DMO/I_Carrier. Esse tipo de elemento é chamado de expressão de caminho. A barra invertida (\) é um prefixo obrigatório para nomes de associação.

Analisar e utilizar uma entidade de visão CDS

Neste exercício, você lê a partir de uma entidade de visão CDS em vez de diretamente da tabela de banco de dados. Isso lhe dá acesso confortável ao nome da companhia aérea também.

Modelo:

  • /LRN/CL_S4D400_DBS_SELECT (classe global)

Solução:

  • /LRN/CL_S4D400_DBS_CDS (classe global)

Tarefa 1: Copiar modelo (opcional)

Copie a classe modelo. Se você tiver concluído o exercício anterior, pode ignorar esta tarefa e continuar processando sua classe ZCL_##_SELECT.

Etapas

  1. Copie a classe /LRN/CL_S4D400_DBS_SELECT para uma classe em seu próprio pacote (nome sugerido: ZCL_##_CDS, onde ## representa seu número de grupo).

    1. Abra o texto fonte da classe global /LRN/CL_S4D400_DBS_SELECT.

    2. Vincule a visão Explorador de projetos ao editor.

    3. Na visão Explorador de projetos, clique com o botão direito do mouse na classe /LRN/CL_S4D400_DBS_SELECT para abrir o menu de contexto.

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

    5. Insira o nome do seu pacote no campo Pacote. No campo Nome, insira o nome ZCL_##_CDS, onde ## representa seu número de grupo.

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

    7. Confirme a ordem de transporte e selecione Concluir.

Tarefa 2: Analisar entidade de visão CDS

Analise a definição da entidade de visão CDS /DMO/I_Connection.

Etapas

  1. Abra o objeto de desenvolvimento que contém a definição da entidade de visão CDS /DMO/I_Connection.

    1. Na barra de ferramentas eclipse, selecione Abrir objeto de desenvolvimento ABAP ou pressione Ctrl + Shift + A.

    2. No campo de entrada, insira /DMO/I_Con como cadeia de pesquisa.

    3. Na lista de itens correspondentes, clique em /DMO/I_CONNECTION (Definição de dados) e selecione OK.

  2. Analisar a lista de elementos da entidade de visão CDS.

    1. Navegue para a lista separada por vírgulas entre o par de chaves ( { } ).

    2. Você encontra os nomes de alias após a palavra-chave AS.

  3. Abra as Informações do elemento (F2) para o destino da associação _Airline.

    1. Clique em /DMO/I_Carrier antes de as _Airline e pressione F2 para exibir as informações do elemento.

Tarefa 3: Declarar atributo adicional

Amplie a classe local lcl_connection com um atributo de instância privado carrier_name. Adicione algumas saídas para o novo atributo à implementação do método get_output( ).

Nota

O novo atributo ainda não está preenchido. Para preenchê-la, ajustaremos a instrução SELECT na próxima tarefa deste exercício.

Etapas

  1. Retorne à classe local lcl_connection em sua classe global.

    1. Na classe global, selecione Tipos locais.

  2. Adicione o seguinte atributo privado à definição de classe:

    Atributos

    Nome do atributoEscopoTipo de dados
    carrier_nameinstância/DMO/CARRIER_NAME
    1. Ajuste o código da seguinte forma:

      Code Snippet
      1234567891011
      PRIVATE SECTION. DATA carrier_id TYPE /dmo/carrier_id. DATA connection_id TYPE /dmo/connection_id. DATA airport_from_id TYPE /dmo/airport_from_id. DATA airport_to_id TYPE /dmo/airport_to_id. DATA carrier_name TYPE /dmo/carrier_name. ENDCLASS.
  3. Amplie a implementação do método get_output. Adicione o nome do agente de frete ao modelo de cadeia com a identificação do agente de frete.

    1. Navegue para a implementação do método get_output.

    2. Substitua a instrução APPEND |Carrier:     { carrier_id      }| TO r_output. pela seguinte instrução:

      Code Snippet
      123
        APPEND |Carrier:     { carrier_id } { carrier_name }| TO r_output.
  4. Ative a classe. Execute-o e analise a saída do console.

    1. Pressione Ctrl + F3 para ativar a classe.

    2. Pressione F9 para executar a classe.

Tarefa 4: Utilizar entidade de visão CDS

Na implementação do construtor de método, substitua a instrução SELECT que lê da tabela de banco de dados /dmo/connection por uma instrução SELECT que lê da entidade de visão CDS /DMO/I_Connection.

Etapas

  1. Na implementação do construtor de método, comente a instrução SELECT.

    1. Selecione todas as linhas que pertencem ao SELECT SINGLE ... ..

    2. Pressione Ctrl + < para adicionar um sinal de estrela (*) na frente de cada linha selecionada.

  2. Após o código comentado, adicione uma instrução SELECT que lê um único registro da visão CDS /DMO/I_Connection.

    1. Ajuste o código da seguinte forma:

      Code Snippet
      123456789101112
      * SELECT SINGLE * FROM /dmo/connection * FIELDS airport_from_id, airport_to_id * WHERE carrier_id = @i_carrier_id * AND connection_id = @i_connection_id * INTO ( @airport_from_id, @airport_to_id ). SELECT SINGLE FROM /DMO/I_Connection
  3. Implemente a cláusula FIELDS. Leia os elementos de visão DepartureAirport e DestinationAirport. Além disso, leia o elemento de visão Nome do destino da associação _Airline.

    Dica

    Use preenchimento automático (Ctrl + espaço) para inserir os nomes.
    1. Após FROM /DMO/I_Connection, insira FIELDS.

    2. Após um espaço em branco, pressione Ctrl + Espaço e selecione Aeroporto de partida.

    3. Após uma vírgula e um espaço em branco, pressione Ctrl + espaço novamente e selecione DestinationAirport.

    4. Após uma vírgula e um espaço em branco, digite uma barra invertida (\), pressione Ctrl + espaço e selecione _Airline.

    5. Imediatamente após _Airline, digite um sinal de traço (-), pressione Ctrl + espaço e selecione Nome.

    6. A cláusula FIELDS completa deve ter o seguinte aspecto:

      Code Snippet
      123
      FIELDS DepartureAirport, DestinationAirport, \_Airline-Name
  4. Implemente a condição WHERE. Restrinja os elementos-chave da entidade da visão CDS com os valores dos parâmetros de importação i_carrier_id e i_connection_id. Não se esqueça de escapar dos parâmetros com prefixo @.

    Dica

    Utilize o preenchimento automático (Ctrl + espaço) para inserir os nomes dos elementos e dos parâmetros.
    1. Adicione o seguinte código após a cláusula FIELDS:

      Code Snippet
      1234
      WHERE AirlineID = @i_carrier_id AND ConnectionID = @i_connection_id
  5. Implemente a cláusula INTO. Armazene o resultado SELECT nos atributos airport_from_id, airport_to_id e carrier_name. Não se esqueça de ignorar os atributos com o prefixo @.

    Dica

    Utilize o preenchimento automático (Ctrl + espaço) para inserir os nomes dos atributos.
    1. Ajuste o código da seguinte forma:

      Code Snippet
      12345
      WHERE AirlineID = @i_carrier_id AND ConnectionID = @i_connection_id INTO ( @airport_from_id, @airport_to_id, @carrier_name ).
    2. A instrução SELECT completa deve ter o seguinte aspecto:

      Code Snippet
      12345678
      SELECT SINGLE FROM /DMO/I_Connection FIELDS DepartureAirport, DestinationAirport, \_Airline-Name WHERE AirlineID = @i_carrier_id AND ConnectionID = @i_connection_id INTO ( @airport_from_id, @airport_to_id, @carrier_name ).
  6. Ative a classe. Execute-o e analise a saída do console. Verifique se a saída para o novo atributo exibe dados.

    1. Pressione Ctrl + F3 para ativar a classe.

    2. Pressione F9 para executar a classe.