Exploração do ABAP Core Data Services

Objectives

After completing this lesson, you will be able to:
  • Descreva as tarefas básicas do ABAP Core Data Services.
  • Nomeie os objetos ABAP CDS mais importantes.

Funcionalidade CDS ABAP

ABAP Core Data Services (ABAP CDS)

Assista ao vídeo para saber mais sobre o ABAP Core Data Services (ABAP CDS).

Vejamos mais de perto essas tarefas.

Durante muito tempo, os desenvolvedores ABAP definiram visões no ABAP Dictionary, da mesma forma que definem tabelas de banco de dados. Essas visões de dicionário eram muito limitadas em termos de lógica SQL. Eles só suportavam inner joins, uma seleção de campos (projeção) e condições de filtro simples. Considere que a definição de visões Dictionary não é suportada em ambientes ABAP baseados na nuvem.

Um dos motivos pelos quais a SAP introduziu o Core Data Services no ABAP foi a demanda pela execução da lógica no banco de dados. Como você aprenderá mais tarde neste treinamento, as visões CDS ABAP suportam uma grande variedade de expressões e funções SQL para empurrar a lógica para o banco de dados.

Existem dois tipos de visões CDS.

Visões baseadas em CDS DDIC (obsoleto)

Este tipo obsoleto de visões CDS usa uma visão Dictionary gerada como representação técnica para o objeto de banco de dados. As visões baseadas em CDS DDIC são definidas com a instrução DEFINE VIEW.

Entidades de visão CDS

Esta nova geração de visões CDS é definida com a instrução DEFINE VIEW ENTITY. As entidades de visão CDS definem o objeto do banco de dados diretamente, sem gerar um objeto Dictionary, primeiro.

Nota

Neste treinamento, abordaremos apenas entidades de visão CDS. Para os tipos de visão mais antigos, consulte a documentação de palavra-chave ABAP.

O CDS ABAP não só suporta a definição técnica de objetos de banco de dados. Ele também permite que você enriqueça as definições técnicas com informações semânticas.

Vejamos um exemplo.

A entidade de visão CDS Z00_C_Employee é definida com uma instrução define view entityem uma definição de dados CDS. Esta é a definição técnica da visão e é utilizada para criar uma visão com o nome Z00_C_EMPLOYEE no banco de dados. Além da instrução define view entity, o texto fonte contém anotações. Anotações são elementos de código que enriquecem a definição de visão técnica com informações semânticas. As anotações começam com um sinal de arroba (@).

Somente algumas anotações são avaliadas pelo sistema ABAP. O resto é simplesmente transferido para os consumidores da entidade CDS, ou seja, os frameworks que utilizam a entidade CDS para ler dados. Os consumidores decidem por suas próprias anotações que avaliam e quais ignoram.

Os consumidores mais importantes de entidades CDS ABAP são tecnologias de IU modernas, como as funções analíticas integradas do SAP Fiori e do SAP S/4HANA.

O coração do modelo de programação de aplicativos RESTful ABAP é o business object.

A estrutura do business object é modelada com uma ou mais entidades de visão CDS. Uma definição de comportamento CDS é utilizada para adicionar a lógica transacional. A lógica transacional é implementada em um pool de comportamento ABAP, uma classe ABAP na biblioteca de texto fonte ABAP.

Os business objects são frequentemente consumidos por serviços empresariais, por exemplo, serviços OData. Mas você também pode acessá-los na codificação ABAP, usando a Entity Manipulation Language (EML).

Nota

Os detalhes de modelagem, implementação e uso da Business Objects não fazem parte deste treinamento. Eles são discutidos em um curso dedicado sobre o ABAP RESTful Application Programming Model.

Objetos CDS ABAP

Os objetos de desenvolvimento CDS importantes são os seguintes:

Definição de dados CDS

Uma definição de dados CDS contém a definição de uma entidade CDS. As entidades CDS mais importantes são as entidades de visão CDS e seus precedentes, as visões baseadas em DDIC agora obsoletas.

Mas existem muitos outros tipos de entidade CDS que você pode definir em uma definição de dados:

  • As visões de projeção CDS são baseadas em uma visão CDS e projetam um subconjunto de seus elementos.
  • Entidades abstratas CDS descrevem somente características de tipo e para as quais não estão instanciados objetos de banco de dados.
  • As funções de tabela CDS são implementadas em funções de banco de dados e retornam um conjunto de resultados tabelar.
  • As entidades personalizadas CDS são implementadas manualmente, por exemplo, na codificação ABAP.
  • As hierarquias CDS definem hierarquias SQL de uma fonte SQL.

Nota

Neste treinamento, vamos nos concentrar em entidades de visão CDS. Para obter detalhes sobre outras entidades CDS, consulte a documentação do ABAP.

Controle de acesso CDS

Os controles de acesso CDS contêm a definição de uma função CDS. Quando as entidades CDS SQL atribuídas a uma função CDS são acessadas, as condições de acesso adicionais são avaliadas por padrão.

Ampliação de metadados CDS

As ampliações de metadados CDS são usadas para armazenar anotações CDS para uma entidade CDS fora de sua definição de dados.

Definição de comportamento CDS

As definições de comportamento CDS definem o comportamento transacional de um business object.

 

No Project Explorer das ferramentas de desenvolvimento ABAP, você encontra os objetos CDS no pacote de desenvolvimento, em um nó dedicado Core Data Services.

Analisar dicionário e objetos CDS

Você quer aprender como definir objetos no ABAP Dictionary e no ABAP Core Data Services. Na primeira etapa, você prepara o ambiente de desenvolvimento ABAP, cria um novo pacote e analisa alguns objetos existentes.

Pré-requisitos

Se você quiser fazer os exercícios conforme descrito nesta jornada de aprendizagem, precisa acessar um sistema prático dedicado. Se você já reservou um sistema para uma das outras partes da jornada de aprendizagem, pode continuar utilizando esse sistema para a terceira parte. Se você ainda não reservou um sistema de prática, siga este link para obter detalhes: https://learning.sap.com/practice-systems/data-modelling-in-abap-dictionary-and-abap-core-data-services

Além do URL da instância de serviço ABAP, que você receberá durante o processo de reserva, você precisa de uma instalação local do Eclipse IDE com o plug-in de ferramentas de desenvolvimento ABAP instalado acima. Siga este link para obter uma instrução passo a passo https://developers.sap.com/tutorials/abap-install-adt.html.

Tarefa 1: Preparar o projeto

No Eclipse, crie um projeto ABAP Cloud e adicione o pacote /LRN/S4D430_EXERCISE à lista de pacotes favoritos. No projeto ABAP Cloud, crie um novo pacote no superpacote ZLOCAL (nome sugerido: ZS4D430_##, em que ## é seu número de grupo) e adicione-o também aos pacotes favoritos.

Etapas

  1. Abra o Eclipse, mude para a perspectiva ABAP e crie um projeto ABAP Cloud.

    Nota

    Se você acabou de concluir o curso Deepening Your ABAP Programming Knowledge e já tiver seu projeto do ABAP Cloud aberto no Eclipse, pode ignorar esta etapa.
    1. Abra o Eclipse.

    2. Escolha Janela→Perspectiva→Abrir perspectiva→Outro...

    3. Na caixa de diálogo, clique duas vezes em ABAP.

    4. Selecione Arquivo→Novo→Projeto ABAP Cloud.

    5. Proceda da seguinte forma na caixa de diálogo Novo projeto ABAP Cloud que é exibida:

      Se você tiver recebido o URL da instância de serviço ABAP:

      1. Copie e cole esse URL no campo correspondente no diálogo.
      2. Selecione Avançar.

      Se você tiver recebido um arquivo contendo a chave de serviço:

      1. Selecione o link Extrair na caixa de diálogo.
      2. Selecione Importar... e selecione o arquivo com a chave de serviço.
      3. Após a importação, clique em Copiar para clipboard para copiar o URL da instância de serviço.
      4. Selecione Fechar.
      5. Na parte superior da caixa de diálogo no campo URL da instância de serviço ABAP:*, cole o URL da instância de serviço ABAP com a combinação de teclas Ctrl + V.
      6. Selecione Avançar.
    6. Selecione Abrir página de logon no browser.

    7. Você será solicitado a efetuar logon no sistema.

      Insira o usuário e a senha que você usou para se registrar no SAP Learning Hub.

    8. Quando você vir a mensagem, você foi conectado com êxito, feche a janela do navegador e retorne ao Eclipse.

    9. Para concluir a criação do projeto, selecione Concluir.

  2. Adicione o pacote /LRN/S4D430_EXERCISE à lista de pacotes favoritos.

    1. No Explorador de projetos à esquerda, expanda seu projeto na nuvem ABAP e, em seguida, subnó Pacotes favoritos.

    2. Clique com o botão direito em Pacotes favoritos e selecione Adicionar pacote ....

    3. No campo de pesquisa, insira /LRN/S4D430.

    4. A partir da lista de itens correspondentes, selecione /LRN/S4D430_EXERCISE e, em seguida, selecione OK.

  3. Em seu projeto ABAP Cloud, crie um novo pacote com os atributos listados na tabela. Quando for solicitado um transporte, selecione a ordem de transporte na qual você está envolvido. Se nenhuma ordem de transporte estiver listada, crie uma nova ordem.

    CampoValor
    NomeZS4D430_##, em que ## é seu número de grupo
    DescriçãoModelagem no ABAP
    Adicionar a pacotes favoritosVerificado
    SuperpacoteZLOCAL
    Tipo de pacoteDesenvolvimento
    Componente de softwareZLOCAL
    Componente de aplicaçãoDeixe este campo em branco
    Camada de transporteDeixe este campo em branco
    1. No Explorador de projetos, clique com o botão direito do mouse em seu projeto ABAP Cloud e selecione Novo→Pacote ABAP.

    2. Insira o nome do pacote ZS4D430_##, em que ## é seu número de grupo.

    3. Insira a descrição Modelagem no ABAP.

    4. Marque o campo de seleção Adicionar a pacotes favoritos

    5. Insira o superpacote ZLOCAL.

    6. Certifique-se de que o Tipo de pacote está definido como Desenvolvimento.

    7. Selecione Avançar.

    8. Certifique-se de que o componente de software esteja definido como ZLOCAL.

    9. Certifique-se de que o componente de aplicação está vazio.

    10. Certifique-se de que a camada de transporte está vazia.

    11. Selecione Avançar.

    12. Verifique se existe uma ordem de transporte listada na opção Selecionar de ordens nas quais estou envolvido. Se for esse o caso, selecione esta opção. Se a lista estiver vazia, selecione a opção Criar uma nova solicitação e insira uma descrição da solicitação, por exemplo, Exercícios ABAP.

    13. Selecione Concluir.

Tarefa 2: Analisar objetos

Analise o conteúdo do pacote /LRN/S4D430_INTRO.

Nota

O pacote /LRN/S4D430_INTRO é um subpacote do pacote /LRN/S4D430_EXERCISE.

Etapas

  1. Na visão Explorador de projetos, expanda /LRN/S4D430_EXERCISE→/LRN/S4D430_INTRO→Dictionary e analise o conteúdo.

  2. Da mesma forma, expanda /LRN/S4D430_EXERCISE→/LRN/S4D430_INTRO→Core Data Services e analise o conteúdo.

Tarefa 3: Explorar utilização no ABAP

Crie uma classe ABAP que implemente a interface IF_OO_ADT_CLASSRUN (nome sugerido: ZCL_##_INTRO, onde ## representa seu número de grupo). Use o code completion para explorar quais objetos do pacote /LRN/S4D430_INTRO você pode utilizar como tipos de dados e como fonte de dados em uma instrução SELECT.

Etapas

  1. Em seu pacote, crie uma nova classe ABAP (nome sugerido: ZCL_##_INTRO, onde ## representa seu número de grupo).

    1. Na visão Explorador de projetos, clique com o botão direito do mouse em seu pacote Z##_S4D430 para abrir o menu de contexto.

    2. No menu de contexto, selecione Nova→classe ABAP.

    3. Confirme que o campo Pacote contém o nome do seu pacote. Insira o nome da nova classe no campo Nome e Analisar dicionário e CDS no campo Descrição.

    4. Selecione Adicionar....

    5. Na caixa de diálogo, insira IF_OO_ADT_CLASSRUN e selecione OK.

    6. Volte para a janela anterior, selecione Seguinte.

    7. Confirme a ordem de transporte e selecione Concluir.

  2. No método IF_OO_ADT_CLASSRUN~MAIN, declare uma variável do tipo cadeia (nome proposto: var).

    1. Ajuste o código da seguinte forma:

      Code Snippet
      1234567
      METHOD if_oo_adt_classrun~main. DATA var TYPE string. ENDMETHOD.
  3. Substitua o tipo string por um objeto do pacote /LRN/S4D430_INTRO. Use o code completion para descobrir quais dos objetos você pode usar como tipos de dados.

    Nota

    Todos os objetos no pacote /LRN/S4D430_INTRO têm um nome que começa com /LRN/S4D430_IND.
    1. Remova string.

    2. Insira /LRN/S4D430_IND e pressione Ctrl + espaço para chamar a conclusão de código.

  4. Implemente uma instrução SELECT que leia da tabela de banco de dados /LRN/S4D430_IND.

    Dica

    Para simplificar, leia todos os campos (FIELDS *), todas as linhas (sem a cláusula WHERE) e utilize uma declaração inline na cláusula INTO TABLE.
    1. Adicione o seguinte código:

      Code Snippet
      12345
      SELECT FROM /lrn/s4d430_ind FIELDS * INTO TABLE @DATA(result).
  5. Substitua /lrn/S4D430_ind na cláusula FROM por outro objeto do pacote /LRN/S4D430_INTRO. Utilize a conclusão de código para descobrir quais dos objetos você pode utilizar como fonte de dados.

    Nota

    Todos os objetos no pacote /LRN/S4D430_INTRO têm um nome que começa com /LRN/S4D430_IND.
    1. Na cláusula FROM, posicione o cursor imediatamente após /LRN/S4D430_IND.

    2. Pressione Ctrl + espaço para chamar a conclusão de código.