exemplo de aplicação

Objective

After completing this lesson, you will be able to desenvolva uma extensão para o SAP S/4HANA com o SAP BTP, ambiente ABAP

Cenário de ampliação

Para entender melhor o procedimento de uma ampliação lado a lado, esta lição implementa um exemplo correspondente. O ponto não é entender os conceitos e modelos de programação utilizados em detalhes. Em vez disso, o quadro geral de uma extensão lado a lado será fornecido.

A figura explica de onde vêm os dados exibidos em um aplicativo.

Primeiro, uma aplicação de base é criada no ambiente ABAP do SAP Business Technology Platform (BTP), que deve ser usado para gerenciar reclamações de fatura de cliente. Como base para isso, uma tabela correspondente é criada no banco de dados SAP HANA do ambiente ABAP do SAP BTP com campos adequados. Os campos ID da fatura, ID do cliente e Nome do cliente são utilizados para armazenar os dados da fatura para os quais é criada uma reclamação.

No entanto, as faturas de cliente existentes são administradas no sistema SAP S/4HANA on-premise. Para isso, um business object personalizado correspondente foi criado em um exercício anterior. Para poder selecionar os dados da fatura para uma reclamação, devem ser oferecidas entradas possíveis na IU SAP Fiori da aplicação na nuvem, por meio da qual os dados da fatura existentes do sistema SAP S/4HANA on-premise são exibidos.

A figura visualiza as explicações fornecidas abaixo.

Os dados da fatura no sistema On-Premise são acessados por meio do serviço OData que foi gerado para o business object personalizado. Isso significa que o serviço OData no sistema On-Premise é chamado a partir da aplicação em nuvem baseada em ABAP com a ajuda do serviço Conectividade SAP BTP e do Cloud Connector.

Como conectar ferramentas de desenvolvimento ABAP ao ambiente ABAP SAP BTP e criar um pacote ABAP

Para as etapas e os dados desta demonstração, consulte o exercício Conectar ferramentas de desenvolvimento ABAP ao ambiente ABAP SAP BTP e Criar um pacote ABAP.

Conectar as ferramentas de desenvolvimento ABAP ao ambiente ABAP do SAP BTP e criar um pacote ABAP

Neste exercício, você criará um projeto na nuvem ABAP nas ferramentas de desenvolvimento ABAP (ADT) para conectar o ambiente de desenvolvimento à instância de serviço ABAP no ambiente ABAP do SAP BTP. Para conectar à instância de serviço ABAP utilizada neste curso, você utilizará uma chave de serviço que já foi configurada para a instância de serviço ABAP. Em seguida, você cria um pacote ABAP na instância de serviço ABAP. Todos os objetos do repositório a serem criados nos exercícios a seguir serão atribuídos a este pacote.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Etapas

  1. Conecte o ADT à instância de serviço ABAP utilizando a chave de serviço fornecida pelo instrutor.

    1. Se o Eclipse ainda não tiver sido iniciado, abra-o via EclipseEclipse IDE no menu Iniciar do Windows.

    2. Certifique-se de que a perspectiva ABAP é exibida. Para abrir a perspectiva ABAP, selecione o ícone Abrir perspectiva na barra de ferramentas do Eclipse. Na caixa de diálogo exibida, selecione a perspectiva ABAP e clique em Abrir.

    3. No menu, selecione ArquivoNovoABAP Cloud Project.

      Resultado

      A primeira página do assistente de criação Novo projeto na nuvem ABAP é aberta.
    4. Selecione o botão de rádio Utilizar uma chave de serviço e selecione Seguinte.

      Resultado

      A página do assistente Conexão do sistema utilizando uma chave de serviço é aberta.
    5. Copie a chave de serviço fornecida pelo instrutor e cole-a na caixa de texto Chave de serviço em formato JSON.

    6. Selecione Avançar.

      Resultado

      A página do assistente Efetuar login no sistema SAP Cloud é aberta.
    7. Selecione o botão Abrir página de logon no browser para efetuar o logon no sistema ABAP. Como resultado, o browser padrão é aberto e exibe uma mensagem informando que você efetuou o logon com êxito.

      Nota

      A autenticação é executada no browser.

      Nota

      Se você não tiver efetuado logon automaticamente, clique no link <xxxxxxxxx>.accounts.ondemand.com exibido na página do navegador exibida. Se solicitado, insira seu endereço de e-mail seguido pela senha nos campos de entrada relevantes no browser. Você receberá o endereço de e-mail e a senha necessários do instrutor. Por fim, selecione o botão Efetuar logon para efetuar o logon no sistema ABAP.
    8. Encerre o navegador. A página do assistente Conexão da instância de serviço é aberta. Para adaptar o idioma de logon, insira a abreviatura relevante.

    9. Selecione Avançar.

      Resultado

      A página do assistente Nome do projeto e pacotes favoritos é aberta.
    10. Para criar o projeto ABAP Cloud, selecione Concluir.

    Resultado

    O projeto ABAP Cloud é criado e adicionado ao Explorador de projetos.
  2. Crie um novo pacote ABAP do tipo Desenvolvimento chamado ZS4D425_##_CLD no pacote gerado ZLOCAL.

    1. No ADT, expanda a pasta Pacotes favoritos em sua pasta ABAP Cloud Project no Explorador de projetos.

    2. Clique com o botão direito do mouse em ZLOCAL e selecione Novopacote ABAP.

    3. No diálogo Novo pacote ABAP exibido, insira ZS4D425_##_CLD como Nome e Extensão lado a lado como Descrição. Certifique-se de que ZLOCAL esteja inserido como Superpacote e que Desenvolvimento esteja selecionado como Tipo de pacote. Clique em Adicionar aos pacotes favoritos e selecione Seguinte.

    4. Na tela Selection of Transport Request, selecione a opção Create a new request e insira Student ## como Request Description.

    5. Pressione Concluir.

    Resultado

    Seu novo pacote ABAP ZS4D425_##_CLD é exibido no Explorador de projetos em Pacotes favoritos.

Importar pacote ZS4D425_SOL_CLD do Github para o ambiente ABAP do SAP BTP

Em preparação para os próximos exercícios, importe o pacote ZS4D425_SOL_CLD do Github para o ambiente ABAP do SAP BTP.

O pacote ZS4D425_SOL_CLD contém soluções de exemplo e modelos de cópia.

Nota

Uma vez que o Git ABAP não suporta todos os tipos de objeto, o pacote ZS4D425_SOL_CLD não contém uma implementação executável do cenário do exercício. Os seguintes objetos do repositório, que são criados de modo correspondente pelos estudantes em seus pacotes, não estão incluídos no pacote ZS4D425_SOL_CLD:
  • ZSC_D425_INVOICES_98 (modelo de consumo de serviços)
  • Z_COMPLAINT_98 (aplicação BSP)
  • Z_COMPLAINT_98_UI5R (item do descritor do app Fiori Launchpad)
  • ZD425_COMPLAINT_IAM_98_EXT (app IAM)
  • ZD425_COMPLAINT_BC_98 (catálogo empresarial IAM)

Etapas

  1. Crie um novo pacote ABAP do tipo Desenvolvimento no componente de software ZLOCAL com o nome ZS4D425_SOL_CLD.

    1. No ADT, clique com o botão direito do mouse em seu ABAP Cloud Project e selecione Novopacote ABAP no menu de contexto.

    2. Na caixa de diálogo Pacote ABAP, insira ZS4D425_SOL_CLD como nome e Extensão lado a lado como descrição. Marque a caixa de seleção Adicionar aos pacotes favoritos e certifique-se de que Desenvolvimento esteja selecionado como o Tipo de pacote. Em seguida, pressione Seguinte.

    3. Insira ZLOCAL como Componente de software e pressione Seguinte.

    4. Na caixa de diálogo Seleção de ordem de transporte, selecione a ordem de transporte que você criou na demonstração anterior e pressione Concluir.

  2. Ligue o repositório abapGit com o URL https://github.com/s4d425/ZS4D425_SOL_CLD.git ao pacote ZS4D425_SOL_CLD e chame o conteúdo deste repositório.

    Nota

    Se os objetos importados não forem exibidos no pacote ZS4D425_SOL_CLD no Explorador de projetos, abra o menu de contexto para o pacote no Explorador de projetos e selecione o item Atualizar.
    1. Abra a visão Repositórios abapGit. Selecione JanelaMostrar visão geralOutros…Repositórios abapGit. A visão será aberta na parte inferior da tela

    2. Na visão abapGit Repositories, selecione o ícone + na barra de ferramentas (Vincular novo repositório abapGit...).

    3. Na caixa de diálogo exibida Link abapGit Repository, insira o URLhttps://github.com/s4d425/ZS4D425_SOL_CLD.git e pressione Seguinte.

    4. Na etapa Ramificação e seleção de pacote, insira ZS4D425_SOL_CLD como pacote. Certifique-se de que a ramificação refs/heads/main esteja selecionada e marque o campo de seleção Pull after link. Em seguida, pressione Seguinte.

    5. Na etapa Seleção da ordem de transporte, selecione Concluir.

    6. Aguarde até que o valor Pulled com êxito seja exibido na coluna Status na visão abapGit Repositories para a ação pull acionada. Para isso, atualize a exibição por meio do ícone Atualizar na barra de ferramentas da visão Repositórios abapGit.

  3. Ative todos os objetos puxados.

    1. Selecione o ícone Ativar objetos de desenvolvimento ABAP inativos na barra de ferramentas Eclipse ou pressione Ctrl+Shift+F3.

    2. Na caixa de diálogo exibida, certifique-se de que todos os objetos puxados estão selecionados e pressione Ativar.

Como criar uma tabela de banco de dados no ambiente ABAP do SAP BTP

Para as etapas e os dados desta demonstração, consulte o exercício Criar uma tabela de banco de dados no ambiente ABAP do SAP BTP.

Criar uma tabela de banco de dados no ambiente ABAP do SAP BTP

No cenário do exercício de extensibilidade lado a lado, criamos uma aplicação no ambiente ABAP do SAP BTP. Esta aplicação é utilizada para administrar reclamações de fatura de cliente. As reclamações são armazenadas em uma tabela de banco de dados no ambiente ABAP do SAP BTP.

Após a criação da aplicação de base, vamos ampliá-la para integrar um serviço OData do sistema SAP S/4HANA on-premise usado no curso de treinamento. Para isso, chamaremos o serviço OData de fatura de cliente no sistema on-premise a partir da aplicação de base em execução no ambiente ABAP do SAP BTP. Este serviço OData foi criado por meio de um business object personalizado em um exercício anterior. Vamos integrar os dados que este serviço OData fornece do back-end para nossa aplicação base como entradas possíveis.

Na primeira etapa, criaremos agora a tabela de banco de dados no ambiente ABAP do SAP BTP que será usado para armazenar as reclamações na nuvem.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Solução modelo:Z425_COMPLAINT98 (tabela de banco de dados)

Etapas

  1. Crie uma tabela de banco de dados com o nome Z425_COMPLAINT## em seu pacote ZS4D425_##_CLD com a descrição Reclamações do cliente sobre faturas.

    1. No ADT, clique com o botão direito do mouse em seu pacote ZS4D425_##_CLD e selecione Novooutro objeto do repositório ABAP.

    2. Na caixa de diálogo que é aberta, procure Tabela de banco de dados, selecione-a e clique em Avançar.

    3. Na tela Nova tabela de banco de dados, insira Z425_COMPLAINT## como Nome e Reclamações do cliente sobre faturas como Descrição. Em seguida, selecione Seguinte.

    4. Na etapa Seleção de ordem de transporte, certifique-se de que a opção Selecionar de ordens nas quais estou envolvido esteja selecionada. Selecione a ordem de transporte que você criou no último exercício e selecione Concluir.

    Resultado

    É aberto um editor com a definição da nova tabela de banco de dados. Ele contém o seguinte código:
    Code Snippet
    123456789
    @EndUserText.label : 'Customer complaints about invoices' @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE @AbapCatalog.tableCategory : #TRANSPARENT @AbapCatalog.deliveryClass : #A @AbapCatalog.dataMaintenance : #RESTRICTED define table z425_complaint## { key client : abap.clnt; }
  2. Crie os seguintes campos para a tabela:

    NomeTipoComprimentoKeyNão nulo
    clienteabap.clnt XX
    UUIDsysuuid_x16 XX
    queixaint_idabap.numc10 X
    invoice_idabap.numc10  
    customer_idabap.numc8  
    customer_nameabap.char25  
    motivoAbap.char256  
    açãoAbap.char256  
    fechouabap_boolean   
    local_created_byabp_creation_user   
    local_created_atabp_creation_tstmpl   
    local_last_changed_byabp_locinst_lastchange_user   
    local_last_changed_atabp_locinst_lastchange_tstmpl   
    last_changed_atabp_lastchange_tstmpl   

    Nota

    Para os exercícios seguintes, é importante que os campos de tabela sejam definidos exatamente como indicado acima.
    1. Defina os campos da tabela de banco de dados da seguinte forma:

      Code Snippet
      123456789101112131415161718192021
      @EndUserText.label : 'Customer complaints about invoices' @AbapCatalog.enhancement.category : #NOT_EXTENSIBLE @AbapCatalog.tableCategory : #TRANSPARENT @AbapCatalog.deliveryClass : #A @AbapCatalog.dataMaintenance : #RESTRICTED define table z425_complaint## { key client : abap.clnt not null; key uuid : sysuuid_x16 not null; complaint_id : abap.numc(10) not null; invoice_id : abap.numc(10); customer_id : abap.numc(8); customer_name : abap.char(25); reason : abap.char(256); action : abap.char(256); closed : abap_boolean; local_created_by : abp_creation_user; local_created_at : abp_creation_tstmpl; local_last_changed_by : abp_locinst_lastchange_user; local_last_changed_at : abp_locinst_lastchange_tstmpl; last_changed_at : abp_lastchange_tstmpl; }
  3. Grave e ative seu trabalho.

    1. Para salvar sua entrada, você pode usar o atalho do teclado Ctrl+S.

    2. A ativação pode ser feita por meio do atalho do teclado Ctrl+F3.

Aplicação base

A aplicação de base utiliza um serviço OData para acessar a tabela de banco de dados criada no último exercício. Na etapa seguinte, este serviço OData é implementado utilizando o ABAP RESTful Application Programming Model.

Uma vez que o modelo de programação de aplicação ABAP RESTful não é o tópico deste curso de treinamento, um gerador é utilizado para criar o serviço OData baseado no modelo de programação de aplicação ABAP RESTful necessário.

Os gráficos seguintes fornecem uma breve síntese de RAP. Detalhes sobre o modelo de programação de aplicação ABAP RESTful podem ser encontrados na documentação, bem como em cursos de treinamento separados.

O ABAP RESTful Application Programming Model define a arquitetura para o desenvolvimento ponta a ponta de serviços OData otimizados para SAP HANA. Ele suporta o desenvolvimento de todos os tipos de aplicativos Fiori, bem como a publicação de APIs da Web. Ele é baseado em tecnologias e frameworks, como Core Data Services (CDS) para definir modelos de dados semanticamente ricos e uma infraestrutura de modelo de serviço para criar serviços OData com ligações a um protocolo OData e serviços de aplicação baseados em ABAP para lógica personalizada e interfaces de usuário baseadas em SAPUI5.

O ABAP RESTful Application Programming Model está disponível nos seguintes produtos:

  • Ambiente ABAP SAP BTP
  • SAP S/4HANA Cloud
  • Servidor de aplicação ABAP 7.55 SP03
Consulte a descrição abaixo.

O diagrama acima estrutura o desenvolvimento de um serviço OData de uma perspectiva de tempo de design. Por outras palavras, ele exibe os principais artefatos de desenvolvimento com os quais você deve lidar durante a criação de um serviço OData com o modelo de programação RESTful ABAP. O diagrama tem uma abordagem bottom-up que se assemelha ao fluxo de desenvolvimento. As principais tarefas de desenvolvimento podem ser categorizadas em três camadas, modelagem e comportamento de dados, provisionamento de serviços empresariais e consumo de serviços.

Consulte a descrição abaixo.

O diagrama acima fornece uma perspectiva de tempo de execução do modelo de programação RESTful ABAP. Os objetos de tempo de execução são componentes necessários para executar uma aplicação. Esta pilha de tempo de execução é ilustrada em uma abordagem top-down. Um client OData envia uma solicitação que é depois transferida para os frameworks de tempo de execução genéricos. Esses frameworks preparam uma solicitação consumível para código ABAP e a enviam para o componente de lógica empresarial relevante. A solicitação é executada pelo business object (BO) quando os dados são modificados ou pela consulta se os dados só forem lidos da fonte de dados.

Como gerar o serviço OData para a aplicação base

Para as etapas e dados desta demonstração, consulte o exercício Gerar o serviço OData para a aplicação base.

Gerar o serviço OData para a aplicação base

No cenário do exercício para a ampliação lado a lado, implementamos uma aplicação no ambiente ABAP do SAP BTP. Para isso, uma tabela de banco de dados foi criada no ambiente ABAP do SAP BTP no exercício anterior, que pode ser usada para salvar de forma persistente reclamações sobre faturas de cliente.

Neste exercício, é gerado um serviço OData que permite o acesso de leitura e escrita à tabela de banco de dados. Para criar o serviço OData, usamos um business object administrado com base no ABAP RESTful Application Programming Model (RAP).

Utilizamos o chamado Gerador de objetos do repositório ABAP para gerar os objetos do repositório ABAP RAP necessários para nós.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Etapas

  1. Para criar o serviço da IU OData e todos os objetos subjacentes, chame o Gerador de repositório do ABAP Objects com referência à sua tabela de banco de dados Z425_COMPLAINT##. Use o gerador Serviço de IU OData. Para configurar o gerador, use os seguintes valores:

    Valores para serviço IU OData gerador

    CategoriaCaracterísticaValor
    GeralObjeto referenciadoZ425_COMPLAINT##
    DescriçãoReclamação ##
    Business object; modelo de dadosNome da entidade CDSZR_425_COMPLAINT##
    Nome do aliasReclamação
    Business object; comportamentoClasse de implementação de comportamentoZBP_R_425_COMPLAINT##
    Nome da tabela de esboçoZ425_COMPL##D
    Projeção de serviço; entidade de projeção de serviçoNome da entidade CDSZC_425_COMPLAINT##
    Projeção de serviço; comportamento de projeção de serviçoClasse de implementação de comportamentoZBP_C_425_COMPLAINT##
    Serviço empresarial; definição de serviçoNome da definição de serviçoZUI_425_COMPLAINT##_O4
    Serviço empresarial; ligação de serviçoNome da ligação de serviçoZUI_425_COMPLAINT##_O4
    Tipo de ligaçãoOData V4 - IU
    1. Posicione o cursor em sua tabela de banco de dados Z425_COMPLAINT##.

    2. Pressione a tecla do mouse secundária e chame a função Gerar objetos do repositório ABAP.

    3. Na tela Selecionar gerador, selecione Serviço IU OData Modelo de programação de replicação ABAP RESTful. Pressione Seguinte.

    4. Na tela seguinte, no campo Pacote, insira seu pacote ZS4D425_##_CLD e pressione Seguinte.

    5. Na tela Configurar gerador, insira os valores para cada categoria e propriedade, como indicado na tabela acima. Modifique os valores propostos, se necessário. Pressione Seguinte.

    6. Na tela seguinte, verifique a visualização. Pressione Seguinte.

    7. Na tela seguinte, selecione sua ordem de transporte e pressione Concluir. Em seguida, os artefatos serão gerados.

  2. Atualize a exibição de seu pacote ZS4D425_##_CLD no Explorador de projetos para mostrar os objetos gerados em seu pacote.

    1. Clique com o botão direito do mouse em seu pacote ZS4D425_##_CLD no Explorador de projetos e selecione Atualizar no menu de contexto. Como alternativa, você pode pressionar F5.

  3. Examine a visão de interface gerada ZR_425_COMPLAINT_##.

    De onde essa visão lê seus dados?

    _____________________________________________________________________________

    A visão define nomes de alias em CamelCase para os nomes de campo de tabela. Quais são os nomes de alias dos seguintes campos de tabela?

    Nome do campo da tabelaNome do alias
    COMPLAINT_ID 
    INVOICE_ID 
    CUSTOMER_ID 
    CUSTOMER_NAME 
    1. Para abrir a visão de interface ZR_425_COMPLAINT## no editor, expanda os seguintes nós em seu pacote no Explorador de projetos: ZS4D425_##_CLDCore Data Services Definições de dados. Em seguida, clique duas vezes em ZR_425_COMPLAINT##.

    2. A visão lê seus dados da tabela de banco de dados Z425_COMPLAINT##.

    3. Ele define os seguintes nomes de alias:

      Nome do campo da tabelaNome do alias
      COMPLAINT_IDID reclam.
      INVOICE_IDInvoiceID
      CUSTOMER_IDCustomerID
      CUSTOMER_NAMECustomerName
  4. Examine a visão de projeção gerada ZC_425_COMPLAINT##.

    De onde essa visão lê seus dados?

    _____________________________________________________________________________

    1. Para abrir a visão de projeção ZC_425_COMPLAINT## no editor, expanda os seguintes nós em seu pacote no Explorador de projetos: ZS4D425_##_CLDCore Data Services Definições de dados. Em seguida, clique duas vezes em ZC_425_COMPLAINT##.

    2. A visão lê seus dados a partir da visão de interface ZR_425_COMPLAINT_##.

  5. Examine a definição de comportamento gerada ZR_425_COMPLAINT## para a visão de interface ZR_425_COMPLAINT##, que define o comportamento do business object RAP.

    Qual é o nome da classe global utilizada para implementar o comportamento?

    _____________________________________________________________________________

    Que operações transacionais estão definidas na definição de comportamento para o business object RAP?

    _____________________________________________________________________________

    1. Para abrir a definição de comportamento ZR_425_COMPLAINT## no editor, expanda os seguintes nós em seu pacote no Project Explorer: ZS4D425_##_CLDCore Data ServicesBehavior Definitions. Em seguida, clique duas vezes em ZR_425_COMPLAINT##.

    2. O nome da classe global utilizada para implementar o comportamento é ZBP_R_D425_Complaint##.

    3. As operações transacionais criar, atualizar e excluir são definidas para o business object RAP.

  6. Examine a definição de comportamento de projeção gerada ZC_425_COMPLAINT_## para a visão de projeção ZC_425_COMPLAINT_##, que expõe um subconjunto dos elementos da definição de comportamento de base subjacente ZR_425_COMPLAINT_##.

    Quais operações transacionais para o business object RAP definido na definição do comportamento básico subjacente ZR_425_COMPLAINT_## são reutilizadas na definição do comportamento de projeção?

    _____________________________________________________________________________

    1. Para abrir a definição de comportamento de projeção ZC_425_COMPLAINT## no editor, expanda os seguintes nós sob seu pacote no Project Explorer: ZS4D425_##_CLDCore Data ServicesBehavior Definitions. Em seguida, clique duas vezes em ZC_425_COMPLAINT##.

    2. A definição do comportamento de projeção reutiliza as operações criar, atualizar e eliminar da definição de comportamento de base.

  7. Examine a definição de serviço gerada ZUI_425_COMPLAINT##_O4.

    Que entidade CDS é exposta por meio desta definição de serviço para o serviço empresarial?

    _____________________________________________________________________________

    Que nome do alias está definido para esta entidade CDS?

    _____________________________________________________________________________

    1. Para abrir a definição de serviço ZUI_425_COMPLAINT##_O4 no editor, expanda os seguintes nós em seu pacote no Explorador de projetos: ZS4D425_##_CLDDefinições de serviçode serviços empresariais. Em seguida, clique duas vezes em ZUI_425_COMPLAINT##_O4.

    2. A definição de serviço expõe a entidade CDS ZC_425_COMPLAINT##.

    3. O nome do alias Reclamação está definido para esta entidade CDS.

  8. Examine a ligação de serviço gerada ZUI_425_COMPLAINT##_O4.

    Em qual definição de serviço essa ligação de serviço é baseada?

    _____________________________________________________________________________

    Que tipo de ligação é implementado com esta ligação de serviço?

    _____________________________________________________________________________

    1. Para abrir a ligação de serviço ZUI_425_COMPLAINT##_O4 no editor, expanda os seguintes nós em seu pacote no Project Explorer: ZS4D425_##_CLDBusiness ServicesService Bindings . Em seguida, clique duas vezes em ZUI_425_COMPLAINT##_O4.

    2. A ligação de serviço é baseada na definição de serviço ZUI_425_COMPLAINT##_O4.

    3. O tipo de ligação OData V4 - IU é implementado com a ligação de serviço.

  9. Publique a ligação de serviço ZUI_425_COMPLAINT##_O4.

    1. Abra a ligação de serviço ZUI_425_COMPLAINT##_O4 no editor se ainda não estiver aberta.

    2. Clique no botão Publicar no editor de ligação de serviço para publicar a ligação de serviço.

      Nota

      Seja paciente, publicar a vinculação do serviço leva um pouco de tempo.
  10. Abra a visualização do app de elementos SAP Fiori para o conjunto de entidades Reclamação.

    1. Abra a ligação de serviço ZUI_425_COMPLAINT##_O4 no editor se ainda não estiver aberta.

    2. Selecione o conjunto de entidades Reclamação na seção Conjunto de entidades e associação do editor de ligação de serviço.

    3. Clique no botão Visualizar....

      Nota

      Se você não estiver conectado automaticamente, clique no link <xxxxxxxxx>.accounts.ondemand.com exibido na página do navegador exibida. Se solicitado, insira seu endereço de e-mail seguido pela senha nos campos de entrada relevantes no browser. Você receberá o endereço de e-mail e a senha necessários do instrutor. Por fim, selecione o botão Efetuar logon para efetuar o logon no sistema ABAP.
  11. Crie uma nova reclamação por meio da visualização do app de elementos do SAP Fiori. Em seguida, atualize a reclamação gravada e elimine a mesma novamente.

    Nota

    Por meio da visualização gerada do app de elementos do SAP Fiori, as reclamações não só podem ser exibidas, mas também criadas, atualizadas e excluídas. Isso se deve ao fato de terem sido definidas operações de criação, atualização e eliminação para o business object RAP (ver acima).

    1. Utilize os elementos de IU correspondentes da visualização do app de elementos SAP Fiori para executar as operações de criação, atualização e eliminação.

Resultado

A visualização do app de elementos do SAP Fiori fornece uma IU quase completa com recursos de pesquisa e filtragem, além de criar, atualizar e excluir reclamações.

Contudo, não são fornecidas entradas possíveis na aplicação. Posteriormente, forneceremos entradas possíveis para o ID da fatura, que também preencherão os campos de ID do cliente e de nome do cliente com valores. Para isso, utilizaremos o serviço OData de fatura de cliente do sistema SAP S/4HANA on-premise, que criamos em um exercício anterior por meio de um business object personalizado. Vamos integrar este serviço OData como entradas possíveis por meio de uma ampliação lado a lado na aplicação no ambiente ABAP.

Para o campo de tabela Fechado, a etiqueta Valor verdadeiro é usada na visualização do app de elementos do SAP Fiori. Este e alguns outros rótulos serão ajustados no próximo exercício.

Como ajustar as etiquetas do aplicativo SAP Fiori Elements

Para as etapas e os dados desta demonstração, consulte o exercício Ajustar as etiquetas do aplicativo de elementos do SAP Fiori.

Ajustar as etiquetas da aplicação de elementos SAP Fiori (opcional)

No último exercício, você testou o serviço OData para a aplicação base por meio da visualização do app de elementos do SAP Fiori. As etiquetas exibidas na aplicação de elementos SAP Fiori são indicadas por meio de uma chamada ampliação de metadados gerada pelo gerador RAP.

Neste exercício, você ajustará uma das etiquetas no aplicativo de elementos do SAP Fiori por meio desta ampliação de metadados gerada.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Solução modelo:ZC_425_Complaint98 (ampliação de metadados)

Etapas

  1. Abra a ampliação de metadados gerada ZC_425_Complaint##.

    1. Para abrir a ampliação de metadados ZC_425_Complaint## no editor, expanda os seguintes nós em seu pacote no Project Explorer: ZS4D425_##_CLDCore Data ServicesMetadata Extensions. Em seguida, clique duas vezes em ZC_425_Reclamação##.

  2. Na ampliação de metadados ZC_425_Complaint##, ajuste as etiquetas para a tabela no relatório de lista e na página do objeto da seguinte forma:

    ElementoEtiqueta gerada para list report e página do objetoEtiqueta ajustada para relatório de lista e página do objeto
    EncerradoValor verdadeiroEncerrado
    ID reclam.ID reclam.ID da reclamação
    InvoiceIDInvoiceIDID da fatura
    CustomerIDCustomerIDID do cliente
    CustomerNameCustomerNameNome do cliente

    Em seguida, ative sua ampliação de metadados ZC_425_Complaint##.

    1. Na ampliação de metadados, procure as seguintes anotações para o elemento Closed:

      Code Snippet
      123456789101112
      @UI.identification: [ { position: 80 , label: 'Truth value' } ] @UI.lineItem: [ { position: 80 , label: 'Truth value' } ] @UI.selectionField: [ { position: 80 } ] Closed;

      Ajuste-os da seguinte forma:

      Code Snippet
      12345678910
      @EndUserText.label: 'Closed' @UI.identification: [ { position: 80 } ] @UI.lineItem: [ { position: 80 @UI.selectionField: [ { position: 80 } ] Closed;
    2. Repita isso para os outros elementos.

    3. Para ativar a ampliação de metadados, você pode utilizar o atalho do teclado Ctrl+F3.

  3. Teste seus ajustes por meio da visualização do app de elementos SAP Fiori para o conjunto de entidades Reclamação.

    1. Abra a ligação de serviço ZUI_425_COMPLAINT##_O4 no editor se ainda não estiver aberta.

    2. Selecione o conjunto de entidades Reclamação na seção Conjunto de entidades e associação do editor de ligação de serviço.

    3. Selecione Visualizar....

      Nota

      Se você não estiver conectado automaticamente, clique no link <xxxxxxxxx>.accounts.ondemand.com exibido na página do navegador exibida. Se solicitado, insira seu endereço de e-mail seguido pela senha nos campos de entrada relevantes no browser. Você receberá o endereço de e-mail e a senha necessários do instrutor. Por fim, selecione o botão Efetuar logon para efetuar o logon no sistema ABAP.
    4. Verifique se as etiquetas ajustadas são exibidas na tabela Report de lista e na página de objeto do app.

Como calcular a chave semântica

Para as etapas e os dados desta demonstração, consulte o exercício Calcular a chave semântica.

Calcular a chave semântica (opcional)

Para fornecer automaticamente um valor ao campo-chave semântico ComplaintID, implementaremos uma chamada determinação neste exercício.

Nota

Fisicamente, o campo UUID é o campo-chave da definição de comportamento ZR_425_COMPLAINT##. Mas o campo ComplaintID semanticamente (isto é, legível por humanos) é como um campo-chave.

Uma determinação é uma parte opcional do comportamento do business object que modifica instâncias de business objects com base em condições de acionamento. Aqui, é implementada uma determinação para calcular o ID de uma reclamação que é legível pelo usuário da aplicação. Assim que o usuário criar uma nova reclamação, a determinação é executada e calcula o valor correspondente para o campo-chave semântico.

A implementação da determinação é efetuada em uma classe local chamada LHC_COMPLAINT, que faz parte da classe de implementação de comportamento global ZBP_R_425_COMPLAINT##. Esta classe global e a classe local já foram criadas pelo gerador. Por isso, só é necessário implementar o método CALCULATECOMPLAINTID na classe local LHC_COMPLAINT. Para simplificar, neste exercício, copie a classe local LHC_COMPLAINT da solução de amostra e adapte-a ao seu business object.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Soluções de amostra:

Classe global ZBP_R_425_COMPLAINT98

Definição de comportamento ZR_425_COMPLAINT98

Ampliação de metadados ZC_425_COMPLAINT98

Etapas

  1. Defina o campo ComplaintID como readonly na definição de comportamento ZR_425_COMPLAINT##.

    1. Abra a definição de comportamento ZR_425_COMPLAINT##.

    2. Procure o campo (somente leitura).

    3. Adicione ComplaintID à lista de campos somente leitura.

    A cláusula field (readonly ) deve ser lida:

    Code Snippet
    123456
    field ( readonly ) UUID, LastChanged, LocalLastChanged;

  2. Adicione uma determinação à definição de comportamento ZR_425_COMPLAINT##.

    1. Abra a definição de comportamento ZR_425_COMPLAINT##.

    2. Procure a linha antes da última linha:

    Procurar por

    Code Snippet
    12345678
    mapping for z425_complaint## { UUID = uuid; ... LastChanged = last_changed; } }

    Adicione esta codificação (antes da última chave):

    Code Snippet
    1
    determination CalculateComplaintID on save { create; }

    No total, é necessário ler:

    Code Snippet
    123456789
    mapping for z425_complaint## { UUID = uuid; ... LastChanged = last_changed; } }

    Nota

    Você pode ignorar as mensagens exibidas. Eles desaparecerão após a próxima etapa.
  3. Ative a definição de comportamento.

    1. Selecionar a função Ativar.

  4. Copie da implementação do método CalculateComplaintID da classe local LHC_ZR_425_COMPLAINT98 da classe global ZBP_R_425_COMPLAINT98.

    1. Selecione o ícone Abrir objeto de desenvolvimento ABAP na barra de ferramentas do Eclipse ou pressione Ctrl+Shift+A.

    2. No diálogo Abrir objeto de desenvolvimento ABAP, insira ZBP_R_425_COMPLAINT98 como cadeia de pesquisa. Selecione ZBP_R_425_COMPLAINT98 na área Itens correspondentes e clique em OK.

    3. Na parte inferior do editor que é aberto, selecione a aba Tipos locais.

    4. Marque a codificação completa da implementação do método CalculateComplaintID da classe LHC_ZR_425_COMPLAINT98, que agora é exibida (por exemplo, via CTRL+A) e, em seguida, copie-a (por exemplo, via CTRL+C).

  5. Substitua a implementação do método CalculateComplaintID da classe local LHC_ZR_425_COMPLAINT## em sua classe global ZBP_R_425_COMPLAINT## pela codificação copiada.

    1. Para abrir a classe global ZBP_R_425_COMPLAINT## no editor, expanda os seguintes nós em seu pacote no Project Explorer: ZS4D425_##_CLDSourceCode Library ClassesZBP_R_425_COMPLAINT##. Em seguida, clique duas vezes em LHC_ZR_425_COMPLAINT##.

    2. No editor que é aberto, substitua a codificação da implementação do método CalculateComplaintID da classe LHC_ZR_425_COMPLAINT##, que é exibida, pelo código copiado.

  6. Ajuste o código copiado nos três locais seguintes para corresponder ao seu número de grupo:

    Código copiadoCódigo ajustado
    READ ENTITIES OF zr_425_complaint_98IN LOCAL MODEREAD ENTITIES OF zr_425_complaint_##IN LOCAL MODE
    SELECT SINGLE FROM z425_complaint98FIELDS MAX( complaint_id ) INTO @DATA(max_complaint).SELECT SINGLE FROM z425_complaint##FIELDS MAX( complaint_id ) INTO @DATA(max_complaint).
    MODIFY ENTITIES OF zr_425_complaint_98IN LOCAL MODEMODIFY ENTITIES OF zr_425_complaint_##IN LOCAL MODE

    Em seguida, ative sua classe ZBP_R_425_COMPLAINT##.

    Nota

    Para simplificar, a implementação de determinação seleciona do banco de dados o ID de reclamação mais alto atribuído até o momento. O valor selecionado é então incrementado para gerar mais chaves semânticas que podem ser lidas pelo usuário. Em uma aplicação produtiva, é preferível utilizar um intervalo de numeração.
    1. Ajuste a codificação copiada para corresponder ao seguinte:

      Code Snippet
      1234567891011121314151617181920212223242526272829303132333435363738
      CLASS lhc_zr_425_complaint## DEFINITION INHERITING FROM cl_abap_behavior_handler. PRIVATE SECTION. METHODS: calculatecomplaintid FOR DETERMINE ON SAVE IMPORTING keys FOR Complaint~CalculateComplaintID . ENDCLASS. CLASS lhc_zr_425_complaint## IMPLEMENTATION. METHOD calculatecomplaintid. "Ensure idempotence READ ENTITIES OF zr_425_complaint_ IN LOCAL MODE ENTITY Complaint FIELDS ( ComplaintID ) WITH CORRESPONDING #( keys ) RESULT DATA(complaints). DELETE complaints WHERE ComplaintID IS NOT INITIAL. CHECK complaints IS NOT INITIAL. "Get max complaintID SELECT SINGLE FROM z425_complaint FIELDS MAX( complaint_id ) INTO @DATA(max_complaint). "update involved instances MODIFY ENTITIES OF zr_425_complaint_ IN LOCAL MODE ENTITY Complaint UPDATE FIELDS ( ComplaintID ) WITH VALUE #( FOR complaint IN complaints INDEX INTO i ( %tky = complaint-%tky ComplaintID = max_complaint + i ) ) REPORTED DATA(lt_reported). "fill reported reported = CORRESPONDING #( DEEP lt_reported ). ENDMETHOD. ENDCLASS.
    2. Para ativar a classe, você pode usar o atalho do teclado Ctrl+F3.

  7. Modifique as informações do título para a ampliação de metadados ZC_425_COMPLAINT##. Modifique as anotações para título e descrição. Você também pode copiar a peça alterada da extensão de metadados da solução ZC_425_COMPLAINT98.

    AnotaçãoValor antigoNovo valor
    @UI.headerInfo.title.value:'Uuid''ID de reclamação'
    @UI.headerInfo.description.value:'Uuid''CustomerName'

    Ative a ampliação de metadados.

    1. Abra a ampliação de metadados ZC_425_COMPLAINT##.

    2. Na ampliação de metadados, procure as seguintes anotações para o elemento Closed:

      Code Snippet
      12345678
      @Metadata.layer: #CORE @UI.headerInfo.title.type: #STANDARD @UI.headerInfo.title.value: 'Uuid' @UI.headerInfo.description.type: #STANDARD @UI.headerInfo.description.value: 'Uuid'

      Ajuste-os da seguinte forma:

      Code Snippet
      12345678
      @Metadata.layer: #CORE @UI.headerInfo.title.type: #STANDARD @UI.headerInfo.title.value: 'ComplaintId' @UI.headerInfo.description.type: #STANDARD @UI.headerInfo.description.value: 'CustomerName'
    3. Ative a ampliação de metadados.

  8. Teste a implementação da determinação por meio da visualização do app de elementos do SAP Fiori para o conjunto de entidades Reclamação. Teste a nova aparência do título e da descrição.

    1. Abra a ligação de serviço ZUI_425_COMPLAINT##_O4 no editor se ainda não estiver aberta.

    2. Selecione o conjunto de entidades Reclamação na seção Conjunto de entidades e associação do editor de ligação de serviço.

    3. Selecione Visualizar....

      Nota

      Se você não estiver conectado automaticamente, clique no link <xxxxxxxxx>.accounts.ondemand.com exibido na página do navegador exibida. Se solicitado, insira seu endereço de e-mail seguido pela senha nos campos de entrada relevantes no browser. Você receberá o endereço de e-mail e a senha necessários do instrutor. Por fim, selecione Efetuar logon para efetuar o logon no sistema ABAP.
    4. No app de elementos SAP Fiori exibido, pressione o botão Criar.

    5. Preencha o formulário e pressione Criar.

      Resultado

      Verifique a numeração para a chave semântica: o campo ID da reclamação deve agora mostrar um 1.

      Verifique o título e a descrição. Por título, o ID da reclamação deve ser exibido. Para descrição, consulte o Nome do cliente.

Integração back-end

A figura ilustra o modelo de consumo de serviços, descrito abaixo.

Para consumir o serviço OData do sistema SAP S/4HANA on-premise no ambiente ABAP do SAP BTP, você precisa de uma representação local do serviço remoto. Com a ajuda de um modelo de consumo de serviço, você pode importar os metadados OData do serviço remoto para o ambiente ABAP SAP BTP e criar artefatos proxy para o serviço remoto. O assistente que cria os artefatos proxy necessita de um documento XML CSDL do serviço externo como base para o modelo de consumo de serviço. As entidades abstratas geradas espelham o modelo de dados do serviço remoto.

A figura visualiza o cenário de consumo, descrito abaixo.

O modelo de dados para as entradas possíveis é definido em uma entidade personalizada CDS. Ou seja, a entidade personalizada define os elementos a serem usados nas entradas possíveis e os digita.

Ao contrário das visões CDS, as entidades personalizadas não têm uma instrução SELECT para recuperar os dados de uma fonte de dados. O tempo de execução de uma entidade personalizada deve ser implementado em uma classe ABAP relacionada, que deve ser referenciada usando a anotação @ObjectModel.query.implementedBy.

Esta chamada classe de implementação de consulta deve implementar o método select da interface IF_RAP_QUERY_PROVIDER para processar solicitações de consulta pelo cliente. Na implementação deste método, os dados da fatura são selecionados mediante o serviço remoto utilizando o proxy do mandante gerado.

Como criar um modelo de consumo de serviços para o serviço OData on-premise

Para as etapas e dados desta demonstração, consulte o exercício Criar um modelo de consumo de serviços para o serviço OData on-premise.

Criar um modelo de consumo de serviços para o serviço OData on-premise

Nos exercícios anteriores, o serviço OData da aplicação de base foi implementado. Na visualização do app de elementos SAP Fiori associado, pode-se ver que esta aplicação não fornece entradas possíveis na IU para administrar reclamações.

Usando uma ampliação lado a lado, agora queremos adicionar essas entradas possíveis para o ID da fatura. Para isso, utilizamos o serviço OData de fatura de cliente do sistema on-premise, que foi criado por meio de um business object personalizado em um exercício anterior. Este serviço OData fornecerá os dados para as entradas possíveis para o ID da fatura, que também preencherão os campos para o nome do cliente e o ID do cliente com valores.

Neste exercício, primeiro criaremos um modelo de consumo de serviços para o serviço OData de fatura de cliente, que depois usamos para chamar esse serviço no sistema on-premise a partir do aplicativo no ambiente ABAP do SAP BTP.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Etapas

  1. Salve o documento de metadados de serviço do serviço OData de fatura de cliente a partir do sistema on-premise em um arquivo local chamado $metadata.xml no diretório N:\Documents.

    Nota

    Você pode acessar o documento de metadados de serviço no browser utilizando o URL https://s4dhost.wdf.sap.corp:44310/sap/opu/odata/sap/ZZ1_CUSTOMERINVOICE##_CDS/$metadata.

    Nota

    O modelo de consumo de serviço usa a descrição de uma interface externa (atualmente OData, SOAP e RFC são suportados) como entrada. No caso de OData, o chamado documento de metadados de serviço OData fornece a descrição de interface correspondente. Com base nas informações no documento de metadados de serviço, os objetos proxy de consumo OData são gerados para o modelo de consumo de serviço. Com esses objetos, você pode escrever código ABAP que permite chamar serviços OData remotos.
    1. Se o navegador Chrome ainda não tiver sido iniciado, abra-o pelo menu Iniciar do Windows.

    2. Digite o seguinte URL e pressione ENTER: https://s4dhost.wdf.sap.corp:44310/sap/opu/odata/sap/ZZ1_CUSTOMERINVOICE##_CDS/$metadata

    3. Se solicitado, efetue logon no sistema S4D com seu usuário TRAIN-## e a senha associada.

      Resultado

      O documento de metadados de serviço é exibido no browser.
    4. Clique com o botão direito do mouse na janela do browser e selecione Gravar como... no menu de contexto exibido.

    5. Na caixa de diálogo exibida, selecione a pasta N:\Documents e digite $metadata.xml como Nome do arquivo. Em seguida, selecione Gravar.

  2. Com base no documento de metadados de serviço gravado, crie um modelo de consumo de serviço para o conjunto de entidades ZZ1_CUSTOMERINVOICE## do serviço OData de fatura de cliente em seu pacote ZS4D425_##_CLD. Utilize ZSC_D425_INVOICES_## como nome e Faturas de S4D como descrição para o modelo de consumo de serviço.

    1. No ADT, clique com o botão direito do mouse em seu pacote ZS4D425_##_CLD e selecione Novooutro objeto do repositório ABAP.

    2. Na caixa de diálogo que é aberta, procure Modelo de consumo de serviços, selecione-o e clique em Avançar.

    3. Na tela Modelo de consumo de serviços, insira ZSC_D425_INVOICES_## como Nome e Faturas de S4D como Descrição. Certifique-se de que OData esteja selecionado como Modo de consumo remoto. Em seguida, selecione Seguinte.

    4. Na caixa de diálogo exibida, clique em Procurar... para selecionar o arquivo N:\Documents\$metadata.xml que você criou na etapa anterior. Selecione Avançar.

    5. Na etapa Componentes do serviço OData, você vê todos os componentes do arquivo de metadados de serviço. Selecione Seguinte.

    6. Na etapa Suporte ETag, você não precisa modificar nada. Selecione Avançar.

    7. Na etapa Seleção de ordem de transporte, certifique-se de que a opção Selecionar de ordens nas quais estou envolvido esteja selecionada. Selecione a ordem de transporte que você criou em um exercício anterior e selecione Concluir.

      Resultado

      O modelo de consumo de serviços é gerado e exibido no editor.
  3. Examine o modelo de consumo de serviço gerado.

    Quais conjuntos de entidades de serviço podem ser acessados por meio do modelo de consumo de serviços?

    _____________________________________________________________________________

    Para quais operações o modelo de consumo de serviço fornece código-exemplo para acesso ao conjunto de entidades?

    _____________________________________________________________________________

    1. Se o modelo de consumo de serviços ainda não estiver aberto, abra-o da seguinte forma: Expanda os seguintes nós em seu pacote no Explorador de projetos: ZS4D425_##_CLDServiços empresariaisModelos de consumo de serviços. Em seguida, clique duas vezes em ZSC_D425_INVOICES_##. Os conjuntos de entidades de serviço que podem ser acessados por meio do modelo de consumo de serviço são exibidos na seção Conjuntos de entidades de serviço do editor: entre eles, você encontrará ZZ1_CUSTOMERINVOICE##. Selecione esta entrada com o mouse.

    2. Na seção Detalhes do conjunto de entidades de serviço do editor, os exemplos de código para o acesso ao conjunto de entidades podem ser encontrados. Para as seguintes operações, é fornecido o código-exemplo: Criar, Ler, Ler lista, Atualizar, Excluir.

Como criar um aplicativo de console para testar o modelo de consumo de serviços

Para as etapas e os dados desta demonstração, consulte o exercício Criar uma aplicação de console para testar o modelo de consumo de serviços.

Criar um aplicativo de console para testar o modelo de consumo de serviços

Neste exercício, você criará um pequeno aplicativo de console para testar o modelo de consumo de serviços. Dessa forma, você verificará se a chamada do serviço OData no sistema On-Premise a partir do ambiente ABAP do SAP BTP funciona. Encontrar quaisquer erros que possam ocorrer é muito mais fácil por meio de um aplicativo de console do que mais tarde, quando o modelo de consumo de serviços já foi integrado ao aplicativo base.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Solução modelo:ZCL_CE_D425_INVOICES_98 (classe global)

Etapas

  1. Crie uma classe global com o nomeZCL_CE_D425_INVOICES_## em seu pacote ZS4D425_##_CLD. Use a entidade personalizada de implementação de consulta como a descrição para a classe. Certifique-se de que a classe implementa a interface IF_OO_ADT_CLASSRUN.

    Nota

    A chamada do serviço OData no sistema On-Premise será posteriormente integrada à aplicação base por meio de uma chamada entidade personalizada. Para isso, a classe criada agora será reutilizada como uma implementação de consulta da entidade personalizada. Por isso, já selecionamos o nome da classe e a descrição adequadamente aqui. O CE no nome da classe indica que essa classe serve como uma implementação de consulta para uma entidade personalizada.
    1. No ADT, clique com o botão direito do mouse em seu pacote ZS4D425_##_CLD e selecione Novooutro objeto do repositório ABAP.

    2. No diálogo que é aberto, procure Classe ABAP, selecione a mesma e clique em Seguinte.

    3. Na tela Classe ABAP, insira ZCL_CE_D425_INVOICES_## como Nome e a entidade personalizada de implementação da consulta como Descrição.

    4. Ainda na tela Classe ABAP, pressione o botão Adicionar.... No diálogo Adicionar interface ABAP exibido, procure IF_OO_ADT_CLASSRUN, selecione-o e clique em OK. Em seguida, selecione Seguinte na tela Classe ABAP.

    5. Na etapa Seleção de ordem de transporte, certifique-se de que a opção Selecionar de ordens nas quais estou envolvido esteja selecionada. Selecione a ordem de transporte que você criou em um exercício anterior e selecione Concluir.

      Resultado

      A classe é gerada e exibida no editor de classes ABAP. Certifique-se de que a codificação seja semelhante à seguinte:
      Code Snippet
      1234567891011121314151617
      CLASS zcl_ce_d425_invoices_## DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_oo_adt_classrun. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_ce_d425_invoices_## IMPLEMENTATION. METHOD if_oo_adt_classrun~main. ENDMETHOD. ENDCLASS.
  2. Adicione a seguinte declaração de tipo à Seção pública de sua classe ZCL_CE_D425_INVOICES_##:

    Snippet de código

    Nota

    Os dados retornados pelo serviço OData chamado no sistema On-Premise são disponibilizados como tabela interna por meio do modelo de consumo de serviço. O tipo de dados criado aqui será utilizado posteriormente para criar tabelas internas correspondentes.
    1. Certifique-se de que a codificação seja semelhante à seguinte:

      Code Snippet
      123456789101112131415161718
      CLASS zcl_ce_d425_invoices_## DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_oo_adt_classrun. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_ce_d425_invoices_## IMPLEMENTATION. METHOD if_oo_adt_classrun~main. ENDMETHOD. ENDCLASS.
  3. Adicione a seguinte definição de método à seção Público de sua classe ZCL_CE_D425_INVOICES_##:

    Snippet de código

    Nota

    O método get_Invoices é usado para implementar o acesso ao serviço OData remoto. O método aceita condições de filtro (opção de consulta OData $filter) e valores para paginar os dados (opções de consulta OData $top e $skip) como parâmetros de importação opcionais. Esses parâmetros são transferidos posteriormente para o chamado serviço OData na implementação do método por meio do modelo de consumo de serviço. A interface de exportação do método get_Invoices retorna os dados correspondentes fornecidos pelo serviço OData.

    1. Certifique-se de que a codificação seja semelhante à seguinte:

      Nota

      Você pode ignorar o erro exibido de que a implementação para o método get_Invoices está em falta. A implementação será adicionada na etapa seguinte.
      Code Snippet
      1234567891011121314151617181920
      CLASS zcl_ce_d425_invoices_## DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_oo_adt_classrun. TYPES tt_business_data TYPE zsc_d425_invoices_##=>tyt_zz_1_customerinvoice_##_ty. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_ce_d425_invoices_## IMPLEMENTATION. METHOD if_oo_adt_classrun~main. ENDMETHOD. ENDCLASS.
  4. Implemente os dois métodos if_oo_adt_classrun~main e get_Invoices em sua classe ZCL_CE_D425_INVOICES_##. Para isso, copie as implementações de método correspondentes da solução modelo ZCL_CE_D425_INVOICES_98.

    Na implementação do método get_invoices, corresponda o código copiado ao seu número de grupo da seguinte forma.

    Na implementação do método if_oo_adt_classrun~main, não há nada a mudar. (Mas não se esqueça de copiá-lo.)

    Codificação copiada do método get_invoices:

    Code Snippet
    12345678910111213141516171819
    METHOD get_invoices. [...] DATA(lo_odata_client_proxy) = /iwbep/cl_cp_factory_remote=>create_v2_remote_proxy( EXPORTING is_proxy_model_key = VALUE #( repository_id = 'DEFAULT' proxy_model_id = 'ZSC_D425_INVOICES_98' proxy_model_version = '0001' ) io_http_client = lo_http_client iv_relative_service_root = '/sap/opu/odata/sap/ZZ1_CUSTOMERINVOICE98_CDS' ). " Navigate to the resource and create a request for the read operation DATA(lo_request) = lo_odata_client_proxy->create_resource_for_entity_set( 'ZZ_1_CUSTOMERINVOICE_98' )->create_request_for_read( ). [...] ENDMETHOD.

    Codificação ajustada do método get_invoices:

    Code Snippet
    123456789101112131415161718
    METHOD get_invoices. [...] DATA(lo_odata_client_proxy) = /iwbep/cl_cp_factory_remote=>create_v2_remote_proxy( EXPORTING is_proxy_model_key = VALUE #( repository_id = 'DEFAULT' proxy_model_id = 'ZSC_D425_INVOICES_##' proxy_model_version = '0001' ) io_http_client = lo_http_client iv_relative_service_root = '/sap/opu/odata/sap/ZZ1_CUSTOMERINVOICE##_CDS' ). " Navigate to the resource and create a request for the read operation DATA(lo_request) = lo_odata_client_proxy->create_resource_for_entity_set( 'ZZ_1_CUSTOMERINVOICE_##' )->create_request_for_read( ). [...] ENDMETHOD.

    Em seguida, ative sua classe ZCL_CE_D425_INVOICES_##.

    1. Selecione o ícone Abrir objeto de desenvolvimento ABAP na barra de ferramentas do Eclipse ou pressione Ctrl+Shift+A.

    2. No diálogo Abrir objeto de desenvolvimento ABAP, insira ZCL_CE_D425_INVOICES_## como cadeia de pesquisa. Selecione ZCL_CE_D425_INVOICES_98 na área Itens correspondentes e clique em OK.

    3. No editor de classes ABAP que é aberto, marque o código destacado abaixo e, em seguida, copie-o (por exemplo, via CTRL+C).

      A codificação completa:

      Code Snippet
      123456789101112131415161718192021222324252627282930
      CLASS zcl_ce_d425_invoices_## DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES: if_oo_adt_classrun. TYPES tt_business_data TYPE zsc_d425_invoices_##=>tyt_zz_1_customerinvoice_##_ty. METHODS get_invoices IMPORTING it_filter_cond TYPE if_rap_query_filter=>tt_name_range_pairs OPTIONAL iv_top TYPE i OPTIONAL iv_skip TYPE i OPTIONAL EXPORTING et_business_data TYPE tt_business_data RAISING /iwbep/cx_cp_remote /iwbep/cx_gateway cx_web_http_client_error cx_http_dest_provider_error. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_ce_d425_invoices_## IMPLEMENTATION. ENDCLASS.
    4. Volte para sua classe ZCL_CE_D425_INVOICES_##. Elimine o seguinte código da parte de implementação da classe:

      Snippet de código
    5. Em seguida, cole o código copiado na parte de implementação da classe. Modifique-o como descrito acima.

    6. Para ativar a classe, você pode usar o atalho do teclado Ctrl+F3.

  5. Execute sua classe ABAP ZCL_CE_D425_INVOICES_## como uma aplicação de console.

    Nota

    O código copiado assume que um Destino chamado S4D_100 foi criado, que é usado para estabelecer a conexão com o sistema SAP S/4HANA on-premise. Ajuste o nome do destino usado no código, se necessário.
    Code Snippet
    12345
    " Create http client DATA(lo_http_destination) = cl_http_destination_provider=>create_by_cloud_destination( i_name = '' i_authn_mode = if_a4c_cp_service=>service_specific ).

    Nota

    No método if_oo_adt_classrun~main, é definido um filtro que seleciona somente faturas com um ID superior ou igual a 1. Além disso, o resultado é limitado a 3 registros. Ajuste essas restrições aos seus dados, se necessário.
    Code Snippet
    123456789101112131415161718
    lt_ranges_table = . lt_filter_conditions = VALUE #( ( name = 'ID' range = lt_ranges_table ) ). TRY. me->get_invoices( EXPORTING it_filter_cond = lt_filter_conditions iv_top = iv_skip = IMPORTING et_business_data = lt_business_data ) . out->write( lt_business_data ). CATCH cx_root INTO DATA(lx_exception). out->write( cl_message_helper=>get_latest_t100_exception( lx_exception )->if_message~get_longtext( ) ). ENDTRY.
    1. Para executar sua classe ZCL_CE_D425_INVOICES_## como um aplicativo de console, clique com o botão direito do mouse no editor ABAP onde sua classe é exibida e selecione Executar como1 aplicativo ABAP (Console). Como alternativa, você pode pressionar F9.

    Resultado

    A visão Console exibe agora os registros retornados pelo serviço OData remoto. A saída deve ter o seguinte aspecto:

    Code Snippet
    1234
    Table SAP_UUID APPLYCUSTOMERDISCOUNT_AC APPLYCUSTOMERDISCOUNT_AC_VC ID ID_VC CUSTOMERID ... 005056044E851EDBBCA9087C5A80EF49 X 0000000815 99999999 005056044E851EDBBCEF851328D60939 X 0000004712 99999999 005056044E851EDBBCEFD06F059A6A5C X 0000004713 99999999

Como criar uma entidade personalizada

Para as etapas e dados desta demonstração, consulte o exercício Criar uma entidade personalizada.

Criar uma entidade personalizada

Para poder integrar o serviço OData do sistema SAP S/4HANA on-premise com a aplicação base por meio de entradas possíveis, você cria agora uma entidade personalizada. Esta entidade personalizada define o modelo de dados mediante o qual os dados do serviço OData remoto são disponibilizados para as entradas possíveis.

Ao contrário das visões CDS "normais", que leem dados de tabelas de banco de dados ou outras visões CDS, a obtenção de dados para entidades personalizadas é implementada manualmente. Ou seja, os dados para o modelo de dados definido por meio da entidade personalizada são selecionados com base no código por meio de uma classe ABAP que implementa a interface IF_RAP_QUERY_PROVIDER. Faremos a implementação da consulta correspondente para a entidade personalizada no próximo exercício. Para isso, reutilizaremos a classe criada no último exercício.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Solução de amostra:ZCE_D425_INVOICES_98 (definição de dados)

Etapas

  1. Crie uma entidade personalizada com o nomeZCE_D425_INVOICES_## e descriçãoEntidade personalizada para faturas de S4D em seu pacote ZS4D425_##_CLD. Use o modelo de definição de dadosDefinir entidade personalizada com parâmetros para esse fim.

    Nota

    Nenhum parâmetro é necessário para a entidade personalizada neste exercício. No entanto, não existe nenhum modelo para criar uma entidade personalizada sem parâmetros. Portanto, na próxima etapa, você excluirá o código gerado para os parâmetros.
    1. Clique com o botão direito do mouse em seu pacote ZS4D425_##_CLD e selecione Novooutro objeto do repositório ABAP.

    2. Na caixa de diálogo que é aberta, procure Definição de dados, selecione-a e clique em Seguinte.

    3. Na tela Definição de dados, insira ZCE_D425_INVOICES_## como Nome e Entidade personalizada para faturas de S4D como Descrição. Em seguida, selecione Seguinte.

    4. Na etapa Seleção de ordem de transporte, certifique-se de que a opção Selecionar de ordens nas quais estou envolvido esteja selecionada. Selecione a ordem de transporte que você criou em um exercício anterior e selecione Seguinte.

      Cuidado

      Não selecione Concluir nesta etapa. Caso contrário, você não irá para o diálogo onde pode selecionar o modelo.
    5. Na tela Modelos, selecione o modelo Definir entidade personalizada com parâmetros e clique em Concluir.

      Resultado

      A entidade personalizada é gerada e exibida no editor. Certifique-se de que a codificação seja semelhante à seguinte:
      Code Snippet
      1234567
      @EndUserText.label: 'Custom entity for invoices from S4D' define custom entity ZCE_D425_INVOICES_## with parameters parameter_name : parameter_type { key key_element_name : key_element_type; element_name : element_type; }
  2. Elimine a instrução with parameters parameter_name : parameter_type do texto fonte de sua entidade personalizada ZCE_D425_INVOICES_##. Remova também as duas linhas seguintes da definição da entidade personalizada:

    Code Snippet
    12
    key key_element_name : key_element_type; element_name : element_type;

    Nota

    Você pode ignorar o erro exibido. Ela desaparecerá quando os elementos forem adicionados à entidade personalizada na próxima etapa.
    1. Elimine as instruções acima do texto fonte. Certifique-se de que a sua implementação agora tem o seguinte aspecto:

      Code Snippet
      12345
      @EndUserText.label: 'Custom entity for invoices from S4D' define custom entity ZCE_D425_INVOICES_## { }
  3. Adicione os seguintes elementos à definição de sua entidade personalizada ZCE_D425_INVOICES_##:

    Code Snippet
    12345678
    key SAP_UUID : sysuuid_x16; ID : abap.numc( 10 ); Customer_ID : abap.numc( 8 ); Customer_Name : abap.char( 25 ); @Semantics.amount.currencyCode: 'Amount_C' Amount_V : abap.curr( 16, 3 ); @Semantics.currencyCode: true Amount_C : abap.cuky;

    Nota

    Para manter o modelo de dados simples, nem todos os campos do serviço OData remoto devem ser expostos por meio da entidade personalizada para as entradas possíveis. Por uma questão de simplicidade, nos limitaremos a alguns campos aqui.
    1. Para abrir o modelo de cópia ZD425_##_ZZ1_CUSTOMERINVOICE## no editor, expanda os seguintes nós em seu pacote no Explorador de projetos: ZS4D425_##_CLDCore Data ServicesDefinições de dados. Em seguida, clique duas vezes em ZD425_##_ZZ1_CUSTOMERINVOICE##.

    2. Um a um, copie os elementos acima do modelo de cópia e cole-os entre chaves em sua entidade personalizada. Certifique-se de que a definição de sua entidade personalizada tenha o seguinte aspecto:

      Code Snippet
      123456789101112
      @EndUserText.label: 'Custom entity for invoices from S4D' define custom entity ZCE_D425_INVOICES_## { key SAP_UUID : sysuuid_x16; ID : abap.numc( 10 ); Customer_ID : abap.numc( 8 ); Customer_Name : abap.char( 25 ); @Semantics.amount.currencyCode: 'Amount_C' Amount_V : abap.curr( 16, 3 ); @Semantics.currencyCode: true Amount_C : abap.cuky; }
  4. Ajuste o número de casas decimais para o campo Amount_V de 3 para 2 da seguinte forma:

    Code Snippet
    1
    Amount_V : abap.curr( 16, );

    Cuidado

    Só são suportados campos de montante com 2 casas decimais.
    1. Na definição de sua entidade personalizada ZCE_D425_INVOICES_##, efetue a modificação descrita acima. Certifique-se de que a definição agora tem o seguinte aspecto:

      Code Snippet
      123456789101112
      @EndUserText.label: 'Custom entity for invoices from S4D' define custom entity ZCE_D425_INVOICES_## { key SAP_UUID : sysuuid_x16; ID : abap.numc( 10 ); Customer_ID : abap.numc( 8 ); Customer_Name : abap.char( 25 ); @Semantics.amount.currencyCode: 'Amount_C' Amount_V : abap.curr( 16, ); @Semantics.currencyCode: true Amount_C : abap.cuky; }
  5. Agora, defina a classe ZCL_CE_D425_INVOICES_##, que você criou no último exercício, como a classe de implementação de consulta para sua entidade personalizada. Para isso, adicione a seguinte anotação na frente da instrução e defina a entidade personalizada ZCE_D425_INVOICES_## em sua entidade personalizada:

    Code Snippet
    1
    @ObjectModel.query.implementedBy: 'ABAP:ZCL_CE_D425_INVOICES_##'

    Nota

    No próximo exercício, você modificará a classe ZCL_CE_D425_INVOICES_## adequadamente.

    Em seguida, ative sua entidade personalizada ZCE_D425_INVOICES_##.

    1. Atualize a codificação de sua entidade personalizada como descrito acima. Certifique-se de que a definição da sua entidade personalizada agora tenha o seguinte aspecto:

      Code Snippet
      12345678910111213
      @EndUserText.label: 'Custom entity for invoices from S4D' define custom entity ZCE_D425_INVOICES_## { key SAP_UUID : sysuuid_x16; ID : abap.numc( 10 ); Customer_ID : abap.numc( 8 ); Customer_Name : abap.char( 25 ); @Semantics.amount.currencyCode: 'Amount_C' Amount_V : abap.curr( 16, 2 ); @Semantics.currencyCode: true Amount_C : abap.cuky; }
    2. Para ativar a entidade personalizada, você pode usar o atalho do teclado Ctrl+F3.

Como implementar a classe de implementação de consulta da entidade personalizada

Para as etapas e dados desta demonstração, consulte o exercício Implementar a classe de implementação de consulta da entidade personalizada.

Implementar a classe de implementação de consulta da entidade personalizada

No último exercício, você criou a entidade personalizada ZCE_D425_INVOICES_## e especificou a classe ZCL_CE_D425_INVOICES_## criada anteriormente como classe de implementação de consulta para essa entidade personalizada.

Neste exercício, você modificará a classe ZCL_CE_D425_INVOICES_## adequadamente. Para isso, você precisará implementar a interface IF_RAP_QUERY_PROVIDER na classe ZCL_CE_D425_INVOICES_##. Esta interface tem um método chamado select, que é utilizado para implementar a obtenção de dados para a entidade personalizada. Na implementação deste método, você delegará a obtenção de dados ao método get_Invoices que já existe na classe.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Solução modelo:ZCL_CE_D425_INVOICES_98 (classe global)

Etapas

  1. Implemente a interface IF_RAP_QUERY_PROVIDER em sua classe ZCL_CE_D425_INVOICES_## adicionando a seguinte instrução à seção Público da classe:

    Code Snippet
    1
    INTERFACES if_rap_query_provider.

    Nota

    Você pode ignorar a advertência exibida de que a implementação para o método if_rap_query_provider~select está em falta. A implementação será adicionada na etapa seguinte.
    1. Ajuste sua classe como descrito acima. Certifique-se de que a parte de definição da sua classe tem o seguinte aspecto:

      Code Snippet
      12345678910111213
      CLASS zcl_ce_d425_invoices_## DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_oo_adt_classrun. ... PROTECTED SECTION. PRIVATE SECTION. ENDCLASS.
  2. Implemente o método if_rap_query_provider~select em sua classe ZCL_CE_D425_INVOICES_##. Para isso, copie a implementação de método correspondente da solução modelo ZCL_CE_D425_INVOICES_98.

    Nota

    Na implementação do método select, o parâmetro de importação io_request deste método é utilizado para recuperar opções de consulta OData da chamada OData de entrada.

    As configurações relacionadas à paginação são consultadas por io_request->get_paging( )->get_page_size( ) (opção de consulta $top) e io_request->get_paging( )->get_offset( ) (opção de consulta $skip). Todos os filtros definidos (opção de consulta $filter) são recuperados via io_request->get_filter( )->get_as_ranges( ).

    As configurações de paginação e filtro são transferidas para o método get_Invoices existente, que retorna os dados apropriados do sistema SAP S/4HANA on-premise.

    No entanto, nem todas as opções de consulta OData são transferidas para o serviço OData no sistema SAP S/4HANA On-Premise. Por exemplo, qualquer ordenação solicitada dos dados (opção de consulta do sistema $orderby) não é considerada. Isso significa que não será possível ordenar os dados da fatura nas entradas possíveis.

    1. Se ainda não tiver feito isso, você pode abrir a solução modelo ZCL_CE_D425_INVOICES_98 no editor de classes ABAP da seguinte forma:

      Selecione o ícone Abrir objeto de desenvolvimento ABAP na barra de ferramentas do Eclipse ou pressione Ctrl+Shift+A. No diálogo Abrir objeto de desenvolvimento ABAP que é exibido, insira ZCL_CE_D425_INVOICES_98 como cadeia de pesquisa. Em seguida, selecione ZCL_CE_D425_INVOICES_98 na área Itens correspondentes e selecione OK.

    2. Na solução modelo ZCL_CE_D425_INVOICES_98, marque o código da implementação de método if_rap_query_provider~select e, em seguida, copie o mesmo (por exemplo, via CTRL+C).

      Code Snippet
      12345678910111213141516171819202122232425262728293031323334353637
      CLASS zcl_ce_d425_invoices_98 DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_oo_adt_classrun. ... METHODS get_invoices IMPORTING it_filter_cond TYPE if_rap_query_filter=>tt_name_range_pairs OPTIONAL iv_top TYPE i OPTIONAL iv_skip TYPE i OPTIONAL EXPORTING et_business_data TYPE tt_business_data RAISING /iwbep/cx_cp_remote /iwbep/cx_gateway cx_web_http_client_error cx_http_dest_provider_error. PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_ce_d425_invoices_98 IMPLEMENTATION. METHOD if_oo_adt_classrun~main. ... ENDMETHOD. METHOD get_invoices. ... ENDMETHOD. ENDCLASS.
    3. Cole o código copiado na parte de implementação de sua classe ZCL_CE_D425_INVOICES_##. Certifique-se de que sua classe agora tenha o seguinte aspecto:

      Code Snippet
      12345678910111213141516171819202122232425
      CLASS zcl_ce_d425_invoices_## DEFINITION PUBLIC FINAL CREATE PUBLIC . PUBLIC SECTION. INTERFACES if_oo_adt_classrun. INTERFACES if_rap_query_provider. ... . PROTECTED SECTION. PRIVATE SECTION. ENDCLASS. CLASS zcl_ce_d425_invoices_## IMPLEMENTATION. METHOD if_oo_adt_classrun~main. ... ENDMETHOD. METHOD get_invoices. ... ENDMETHOD. ENDCLASS.
  3. Ative sua classe ZCL_CE_D425_INVOICES_##.

    1. Para ativar a classe, você pode usar o atalho do teclado Ctrl+F3.

Como expor a entidade personalizada por meio da definição de serviço e integrá-la como entradas possíveis na aplicação base

Para as etapas e dados desta demonstração, consulte o exercício Expor a entidade personalizada por meio da definição de serviço e integrá-la como entradas possíveis na aplicação base.

Expor a entidade personalizada por meio da definição de serviço e integrá-la como entradas possíveis na aplicação base

Neste exercício, você exporá a entidade personalizada criada e implementada anteriormente por meio do serviço OData da aplicação base. Para isso, você adiciona a entidade personalizada à definição de serviço correspondente. Em seguida, você utilizará a entidade personalizada na aplicação de base para fornecer entradas possíveis para faturas de cliente. Por fim, você testará a aplicação usando a visualização do app de elementos do SAP Fiori.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Solução modelo:

  • ZUI_425_COMPLAINT98_O4 (definição de serviço)
  • ZC_425_COMPLAINT98 (visão de projeção CDS)

Etapas

  1. Exponha sua entidade personalizada ZCE_D425_INVOICES_## por meio da definição de serviço ZUI_425_COMPLAINT##_O4 adicionando a seguinte instrução à definição de serviço:

    Code Snippet
    1
    expose ZCE_D425_INVOICES_## as Invoice;
    1. Se ainda não tiver feito isso, você pode abrir a definição de serviço ZUI_425_COMPLAINT##_O4 no editor da seguinte forma:

      Selecione o ícone Abrir objeto de desenvolvimento ABAP na barra de ferramentas do Eclipse ou pressione Ctrl+Shift+A. No diálogo Abrir objeto de desenvolvimento ABAP que é exibido, insira ZUI_425_COMPLAINT##_O4 como cadeia de pesquisa. Em seguida, selecione ZUI_425_COMPLAINT##_O4 na área Itens correspondentes e selecione OK.

    2. Adicione a instrução acima à definição de serviço. Certifique-se de que a definição de serviço tem o seguinte aspecto:

      Code Snippet
      1234
      define service ZUI_425_COMPLAINT##_O4 { expose ZC_425_COMPLAINT## as Complaint; }
  2. Ative suas modificações.

    1. Para ativar a definição de serviço, você pode utilizar o atalho do teclado Ctrl+F3.

  3. Agora defina sua entidade personalizada ZCE_D425_INVOICES_## como entradas possíveis para o campo InvoiceID na aplicação de base adicionando a seguinte anotação a este campo na visão de projeção ZC_425_COMPLAINT##:

    Code Snippet
    1234567
    @Consumption.valueHelpDefinition: [{ entity : { name: 'ZCE_D425_INVOICES_##', element: 'ID' }, additionalBinding : [{ localElement: 'CustomerID', element: 'Customer_ID' }, { localElement: 'CustomerName', element: 'Customer_Name' }] }] InvoiceID, ...

    Nota

    A anotação additionalBinding garante que os valores dos campos CustomerID e CustomerName na aplicação de base são copiados para o diálogo de entradas possíveis quando as entradas possíveis são chamadas. De modo correspondente, quando uma fatura de cliente é selecionada nas entradas possíveis, esses campos são preenchidos com os valores dos campos com os mesmos nomes das entradas possíveis.
    1. Se ainda não tiver feito isso, você pode abrir a visão de projeção ZC_425_COMPLAINT## no editor da seguinte forma:

      Selecione o ícone Abrir objeto de desenvolvimento ABAP na barra de ferramentas do Eclipse ou pressione Ctrl+Shift+A. No diálogo Abrir objeto de desenvolvimento ABAP que é exibido, insira ZC_425_COMPLAINT## como cadeia de pesquisa. Em seguida, selecione ZC_425_COMPLAINT## na área Itens correspondentes e selecione OK.

    2. Adicione a anotação acima ao campo InvoiceID na visão de projeção. Certifique-se de que a visão de projeção tem o seguinte aspecto:

      Code Snippet
      123456789101112131415161718192021222324
      @AccessControl.authorizationCheck: #CHECK @Metadata.allowExtensions: true @EndUserText.label: 'Projection View for Complaint' @ObjectModel.semanticKey: [ 'ComplaintID' ] @Search.searchable: true define root view entity ZC_425_COMPLAINT## as projection on ZR_D425_COMPLAINT_## { key UUID, @Search.defaultSearchElement: true @Search.fuzzinessThreshold: 0.90 ComplaintID, InvoiceID, CustomerID, CustomerName, Reason, Action, Closed, CreatedBy, CreatedAt, LastChangedBy, LastChangedAt }
  4. Ative suas modificações.

    1. Para ativar a visão de projeção, você pode utilizar o atalho do teclado Ctrl+F3.

  5. Por fim, teste as entradas possíveis. Para isso, abra a visualização do app de elementos SAP Fiori para o conjunto de entidades Reclamação. Crie uma nova reclamação no app e chame as entradas possíveis agora disponíveis para o campo ID da fatura na página do objeto.

    1. Abra a ligação de serviço ZUI_425_COMPLAINT##_O4 no editor se ainda não estiver aberta.

    2. Selecione o conjunto de entidades Reclamação na seção Conjunto de entidades e associação do editor de ligação de serviço.

      Nota

      Além do conjunto de entidades Reclamação, o conjunto de entidades Fatura agora também é exibido nesta seção.
    3. Selecione Visualizar....

      Nota

      Se você não estiver conectado automaticamente, clique no link <xxxxxxxxx>.accounts.ondemand.com exibido na página do navegador exibida. Se solicitado, insira seu endereço de e-mail seguido pela senha nos campos de entrada relevantes no browser. Você receberá o endereço de e-mail e a senha necessários do instrutor. Por fim, selecione o botão Efetuar logon para efetuar o logon no sistema ABAP.
    4. No app exibido, selecione Criar.

    5. Na página do objeto, clique no ícone de entradas possíveis exibido para o campo ID da fatura para abrir as entradas possíveis.

      Resultado

      O diálogo de entradas possíveis é aberto exibindo as faturas de cliente selecionadas a partir do sistema SAP S/4HANA on-premise na tabela Itens.
    6. Selecione uma fatura na tabela Itens.

      Resultado

      O registro selecionado é transferido para a página do objeto, ou seja, os campos ID da fatura, ID do cliente e Nome do cliente são preenchidos com os valores correspondentes.

Integração do launchpad do SAP Fiori

Para disponibilizar a aplicação no ambiente ABAP do SAP BTP por meio do launchpad do SAP Fiori, as seguintes etapas devem ser implementadas: primeiro, é criada uma aplicação Página de objeto do list report utilizando o SAP Business Application Studio. Esta aplicação é implementada para a instância de serviço ABAP, que, entre outras coisas, cria um item de descritor de app Fiori Launchpad no ambiente ABAP.

A figura visualiza as explicações fornecidas abaixo.

Subsequentemente, é criado um app IAM via ADT, ao qual o item do descritor do app Fiori Launchpad está atribuído. Em seguida, é criado um catálogo empresarial IAM no ADT, ao qual, por sua vez, é atribuído o app IAM.

Por fim, uma função empresarial é criada por meio do launchpad do SAP Fiori, ao qual o catálogo empresarial IAM criado anteriormente é adicionado. Além disso, os usuários na empresa que devem ter acesso à aplicação também são adicionados à função na empresa.

Depois de isso ter sido configurado de modo correspondente, os usuários autorizados podem abrir a aplicação mediante o App Finder no launchpad do SAP Fiori.

Como criar uma aplicação de elementos SAP Fiori com base no serviço OData desenvolvido no SAP Business Application Studio

Para as etapas e os dados desta demonstração, consulte o exercício Criar um aplicativo de elementos do SAP Fiori com base no serviço OData desenvolvido no SAP Business Application Studio.

Criar uma aplicação de elementos SAP Fiori com base no serviço OData desenvolvido no SAP Business Application Studio (opcional)

Nos exercícios anteriores, você criou um aplicativo para gerenciar reclamações do cliente no ambiente ABAP do SAP BTP. Nesta aplicação, você integrou entradas possíveis por meio de uma ampliação lado a lado que obtém os respectivos dados por meio de um serviço OData chamado no sistema SAP S/4HANA On-Premise utilizado nesta classe.

A interface do usuário da aplicação foi disponibilizada até o momento por meio de uma visualização do app de elementos SAP Fiori, que pode ser chamada a partir das ferramentas de desenvolvimento ABAP para SAP NetWeaver. Os exercícios a seguir agora se concentrarão em criar a interface do usuário para a aplicação usando o SAP Business Application Studio e, em seguida, implementá-la no ambiente ABAP do SAP BTP.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Nota

Os dados a seguir são necessários no exercício para conectar o SAP Business Application Studio ao Cloud Foundry. Ele será fornecido pelo seu instrutor:
  • Endereço de e-mail
  • Senha
  • Organização

Etapas

  1. Abra seu espaço de desenvolvimento S4D425_## no SAP Business Application Studio. Execute o comando CF: Login no Cloud Foundry para conectar o SAP Business Application Studio ao Cloud Foundry.

    1. Abra o SAP Business Application Studio utilizando o URL que você recebeu de seu instrutor.

    2. Se você não tiver efetuado logon automaticamente, selecione o link <xxxxxxxxx>.accounts.ondemand.com que aparece na página do browser exibida. Se solicitado, insira seu endereço de e-mail seguido pela senha nos campos de entrada relevantes no browser. Você receberá o endereço de e-mail e a senha necessários do instrutor. Por fim, selecione o botão Logon para efetuar o logon no SAP Business Application Studio.

      Resultado

      O Dev Space Manager é exibido no navegador.
    3. Certifique-se de que seu espaço de desenvolvimento esteja no estado EM EXECUÇÃO. Se não estiver, inicie-o.

    4. Clique no nome S4D425_## de seu espaço de desenvolvimento assim que ele estiver no estado EM EXECUÇÃO.

      Resultado

      O SAP Business Application Studio é aberto em seu espaço de desenvolvimento SAP FioriS4D425_##.
    5. No menu SAP Business Application Studio, selecione o caminho Visualizarpaleta de comandos.

    6. Na paleta exibida, procure o comando CF: Login no Cloud Foundry e selecione-o.

      Resultado

      O assistente para logon Cloud Foundry foi iniciado.
    7. Na etapa de ponto de acesso Inserir Cloud Foundry, confirme o URL exibido com ENTER.

    8. Na etapa Inserir endereço de e-mail, insira o endereço de e-mail fornecido pelo instrutor e confirme sua entrada com ENTER.

    9. Na etapa Inserir senha, insira a senha fornecida pelo instrutor e confirme sua entrada pressionando ENTER.

    10. Na próxima etapa, selecione a Organização fornecida pelo instrutor.

    11. Na etapa Selecionar espaço, selecione o Espaço chamado dev. exibido.

      Resultado

      Você está agora conectado ao Cloud Foundry, Organização e Espaço foram definidos.
  2. Agora, crie um aplicativo SAP Fiori utilizando a planta baixa List Report Page no SAP Business Application Studio. A aplicação deve ser baseada no seu serviço OData desenvolvido no ADT. Para isso, use os seguintes valores nas respectivas etapas do assistente:

    Fonte de dados e seleção de serviços

      
    Fonte de dadosConectar a um sistema
    SistemaAmbiente ABAP no SAP Business Technology Platform
    Ambiente SAP ABAPdefault_abap
    Serviços

    ZUI_425_COMPLAINT##_O4(0001) - OData V4

    Seleção de entidade

      
    Entidade principalReclamação
    Adicionar colunas de tabela automaticamente?Sim

    Atributos do projeto

      
    Nome do módulos4d425_reclamaint_##
    Título da aplicaçãoReclamações
    Espaço de nomes de aplicação
    DescriçãoAdministrar reclamações
    Caminho da pasta do projeto/home/usuário/projetos
    Adicionar configuração de implementaçãoSim
    Adicionar configuração FLPSim
    Configurar opções avançadasNão

    Configuração de implementação

      
    Escolha o destinoABAP
    Destinoabap-cloud-default_abap-...
    Repositório ABAP SAPUI5 (comprimento máximo: 15 caracteres)Z_COMPLAINT_##
    PacoteZS4D425_##_CLD
    Ordem de transporte<sua ordem de transporte>
    Descrição da implementaçãoEstudante ##

    Nota

    Você pode pesquisar seu número de ordem de transporte da seguinte forma:

    1. Para Como você deseja inserir a ordem de transporte, selecione Selecionar a partir de existente.
    2. Em seguida, no campo Ordem de transporte, selecione por meio do menu drop-down sua solicitação ADT (por exemplo, H01K900008).

    Nota

    A configuração de implementação pode ser editada após a criação do projeto por meio do arquivo ui5-deploy.yaml no diretório do projeto.

    Configuração do launchpad do SAP Fiori

      
    Objeto semânticoReclamação
    Açãogerenciar##
    TítuloAdministrar reclamações
    Subtítulo (opcional)Estudante ##

    Nota

    A configuração do launchpad do SAP Fiori pode ser processada após a criação do projeto por meio do arquivo webapp/manifest.json no diretório de projetos.
    1. Selecione ArquivoNovo projeto do modelo no menu SAP Business Application Studio.

    2. No assistente Projeto a partir do modelo que é exibido, selecione o bloco da aplicação SAP Fiori e selecione Iniciar.

    3. Na etapa Seleção de planta, selecione Aplicação SAP Fiori como Tipo de aplicação, selecione o bloco Página de relatório de lista e pressione Seguinte.

    4. Na etapa Fonte de dados e seleção de serviços, insira os valores da tabela correspondente acima e selecione Seguinte.

    5. Na etapa Seleção de entidade, insira o valor da tabela correspondente acima e selecione Seguinte.

    6. Na etapa Atributos do projeto, insira os valores da tabela correspondente acima e selecione Seguinte.

    7. Na etapa Configuração de implementação, insira os valores da tabela correspondente acima e selecione Seguinte.

    8. Na etapa Configuração do launchpad do Fiori, insira os valores da tabela correspondente acima e selecione Concluir.

      Resultado

      Seu projeto de elementos do SAP Fiori é gerado e salvo para uso futuro.
  3. Abra o projeto s4d425_complaint_## que você acabou de criar em uma área de trabalho.

    1. Selecionar arquivoAbrir área de trabalho...no menu do SAP Business Application Studio.

    2. Na caixa de diálogo Abrir área de trabalho exibida, selecione a pasta s4d425_complaint_## e selecione Abrir.

      Resultado

      O projeto s4d425_complaint_## é aberto no SAP Business Application Studio.
  4. No próximo exercício, você implementará o aplicativo de elementos do SAP Fiori que acabou de criar no ambiente ABAP do SAP BTP. Antes disso, teste a aplicação nesta última etapa no SAP Business Application Studio.

    1. Clique com o botão direito do mouse na pasta webapp em seu projeto s4d425_complaint_## e selecione Visualizar aplicativo no menu de contexto que é exibido.

    2. Na paleta Opções de visualização, selecione iniciar (execução do Fiori …) no diálogo que é exibido.

      Resultado

      A aplicação será agora exibida em uma nova ficha de registro. A interface do usuário deve ser semelhante à exibida por meio da visualização do app de elementos SAP Fiori no ADT.
    3. Pressione Ir na página Relatório de lista exibida para visualizar os registros existentes.

    4. Selecione um registro da tabela para exibir a página do objeto associada.

Como implementar a aplicação de elementos do SAP Fiori no ambiente ABAP do SAP BTP

Para as etapas e os dados desta demonstração, consulte o exercício Implementar o aplicativo de elementos do SAP Fiori no ambiente ABAP do SAP BTP.

Implementar a aplicação de elementos do SAP Fiori no ambiente ABAP do SAP BTP (opcional)

Neste exercício, você implementará o aplicativo de elementos do SAP Fiori criado no SAP Business Application Studio no ambiente ABAP do SAP BTP. Em seguida, você verificará na ADT os objetos de desenvolvimento que foram criados pela implementação para o ambiente ABAP SAP BTP.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Etapas

  1. Implemente seu projeto s4d425_complaint_## do SAP Business Application Studio para o ambiente ABAP do SAP BTP. Para fazer isso, use o comando npm run deploy no terminal.

    1. Selecione TerminalNovo terminal no menu SAP Business Application Studio.

    2. No prompt de comando no terminal, insira o comando npm run deploy e pressione ENTER:

      Code Snippet
      1
      user: s4d425_complaint_## $

      Nota

      Certifique-se de que o terminal está aberto no diretório de projetos. O caractere $ deve ser precedido pelo usuário: s4d425_complaint_##.
    3. Quando solicitado, confirme a configuração de implementação exibida e pressione y.

      Resultado

      A implementação no ambiente ABAP do SAP BTP é agora executada. No final do processo de implementação, você deve ver a mensagem Implementação com êxito no terminal.
  2. Vários objetos de desenvolvimento foram criados no ambiente ABAP do SAP BTP por meio da implementação. Os dois objetos a seguir são particularmente importantes para o próximo exercício: O aplicativo SAPUI5 real foi armazenado como um aplicativo BSP com o nome Z_COMPLAINT_##. A configuração para integrar a aplicação no launchpad do SAP Fiori, por outro lado, foi gravada em um chamado item de descritor de app do launchpad do Fiori com o nome Z_COMPLAINT_##_UI5R.

    Verifique se esses dois objetos de desenvolvimento são exibidos no ADT em seu pacote. Para isso, atualize primeiro a exibição do seu pacote no ADT.

    Nota

    Nem a aplicação BSP nem o item Descritor de aplicação do launchpad do SAP Fiori podem ser abertos no ADT.
    1. Clique com o botão direito do mouse em ADT em seu pacote ZS4D425_##_CLD e selecione Atualizar no menu de contexto que é exibido. Como alternativa, você também pode utilizar a tecla de função F5.

    2. A aplicação BSP Z_COMPLAINT_## deve agora ser exibida no seguinte nó em seu pacote: ZS4D425_##_CLDBSP LibraryBSP Applications.

    3. O item de descritor de aplicação do launchpad do Fiori Z_COMPLAINT_##_UI5R deve aparecer no seguinte nó em seu pacote: ZS4D425_##_CLDFiori Launchpad App Descr Items.

Como integrar a aplicação de elementos do SAP Fiori no launchpad do SAP Fiori do ambiente ABAP do SAP BTP

Para as etapas e os dados desta demonstração, consulte o exercício Integrar o aplicativo de elementos do SAP Fiori no launchpad do SAP Fiori do ambiente ABAP do SAP BTP.

Integrar a aplicação de elementos do SAP Fiori no launchpad do SAP Fiori do ambiente ABAP do SAP BTP (opcional)

Neste exercício, você integrará o aplicativo de elementos do SAP Fiori que implementou no ambiente ABAP do SAP BTP no último exercício no launchpad do SAP Fiori. Para isso, você criará primeiro um app IAM no ADT. Para configurar o app IAM, você irá inserir o item de descritor de app do launchpad do SAP Fiori para a sua aplicação nas características do app IAM. Em seguida, você criará um catálogo empresarial IAM em ADT, ao qual você adicionará o app IAM por meio de um chamado app IAM à atribuição de catálogo. Em seguida, depois de publicar o app IAM e o catálogo empresarial IAM localmente, você criará finalmente uma função empresarial mediante o launchpad do SAP Fiori (do serviço Cloud ABAP) e atribuirá o catálogo empresarial IAM e o seu usuário à mesma.

Nota

Neste exercício, quando os valores incluírem ##, substitua ## por seu número de grupo.

Etapas

  1. No ADT, crie um app IAM com o nome ZD425_COMPLAINT_IAM_## e a descrição Reclamação app IAM.

    Nota

    O ambiente de desenvolvimento anexa automaticamente o sufixo _EXT ao nome do app IAM.

    Atribua seu item de descritor de app do launchpad do SAP Fiori existente Z_COMPLAINT_##_UI5R ao app IAM.

    Não se esqueça de salvar suas modificações.

    1. No ADT, clique com o botão direito do mouse em seu pacote ZS4D425_##_CLD e selecione Novooutro objeto do repositório ABAP.

    2. No diálogo que é aberto, procure o app IAM, selecione-o e clique em Seguinte.

    3. Insira ZD425_COMPLAINT_IAM_## como Nome e Reclamação do app IAM como Descrição. Certifique-se de que EXT - External App esteja selecionado como Application Type e pressione Next.

    4. Na etapa Seleção de ordem de transporte, certifique-se de que a opção Selecionar de ordens nas quais estou envolvido esteja selecionada. Selecione a ordem de transporte que você criou em um exercício anterior e selecione Concluir.

      Resultado

      O app IAM é gerado e exibido no editor.
    5. No campo ID do item de descrição do app do launchpad do Fiori, insira o valor Z_COMPLAINT_##_UI5R.

      Nota

      Você pode utilizar entradas possíveis para isso no campo, que podem ser chamadas por meio de Ctrl+Espaço.
    6. Por fim, grave o app IAM.

  2. Publique seu app IAM ZD425_COMPLAINT_IAM_##_EXT localmente.

    1. Certifique-se de que seu app IAM ZD425_COMPLAINT_IAM_##_EXT seja exibido no editor.

    2. Selecione Publicar localmente no canto superior direito do editor.

  3. Agora, crie um catálogo empresarial IAM com o nome ZD425_COMPLAINT_BC_## e a descrição Catálogo empresarial IAM de reclamações ##. Adicione seu app IAM ZD425_COMPLAINT_IAM_##_EXT a este catálogo.

    Nota

    Para esta etapa, utilize o link Criar um novo catálogo empresarial e atribua o app a ele, que é exibido no editor para seu app IAM ZD425_COMPLAINT_IAM_##_EXT.
    1. Certifique-se de que seu app IAM ZD425_COMPLAINT_IAM_##_EXT seja exibido no editor.

    2. Clique no link Criar um novo catálogo empresarial e atribua o app a ele.

    3. No diálogo Catálogo empresarial que é aberto, insira o nomeZD425_COMPLAINT_BC_## e a descriçãoCatálogo empresarial IAM de reclamações ## e pressione Seguinte.

    4. Na etapa Seleção de ordem de transporte, certifique-se de que a opção Selecionar de ordens nas quais estou envolvido esteja selecionada. Selecione a ordem de transporte que você criou em um exercício anterior e selecione Concluir.

      Resultado

      O diálogo Atribuição de app de catálogo empresarial é aberto.
    5. Certifique-se de que o diálogo exibe ZD425_COMPLAINT_BC_##_0001 como nome e atribuição do catálogo empresarial ao app IAM como descrição. Em seguida, pressione Seguinte.

    6. Na etapa Seleção de ordem de transporte, certifique-se de que a opção Selecionar de ordens nas quais estou envolvido esteja selecionada. Selecione a ordem de transporte que você criou em um exercício anterior e selecione Concluir.

  4. Publique localmente seu catálogo empresarial IAM ZD425_COMPLAINT_BC_##.

    1. Certifique-se de que seu catálogo empresarial IAM ZD425_COMPLAINT_BC_## é exibido no editor.

    2. Selecione Publicar localmente no canto superior direito do editor.

  5. Agora abra a aplicação Atualizar funções empresariais por meio do launchpad do SAP Fiori do SAP BTP, ambiente ABAP. Crie uma nova função empresarial com o ID da função empresarial ZD425_BR_## e a descrição da função empresarial S4D425 Estudante ##.

    Adicione seu catálogo empresarial IAM ZD425_COMPLAINT_BC_## e seu usuário na empresa à função empresarial recém-criada.

    Nota

    Para obter detalhes sobre o usuário empresarial atribuído a você, entre em contato com seu instrutor.
    1. Clique com o botão direito do mouse em seu ABAP Cloud Project no Explorador de projetos e selecione Propriedades no menu de contexto que é exibido.

    2. Na caixa de diálogo que é aberta, selecione Desenvolvimento ABAP no lado esquerdo e, em seguida, clique no URL do sistema que é exibido no lado direito.

    3. Se você não estiver conectado automaticamente, clique no link <xxxxxxxxx>.accounts.ondemand.com na página exibida no navegador para efetuar o logon. Se solicitado, insira seu endereço de e-mail seguido pela senha nos campos de entrada relevantes no browser. Você receberá o endereço de e-mail e a senha necessários do instrutor. Por fim, selecione Efetuar logon para efetuar o logon no sistema ABAP.

    4. Agora, selecione o bloco Atualizar funções empresariais na página Gerenciamento de identidade e acesso (na área Administração).

    5. Na aplicação Atualizar funções na empresa que é exibida, selecione Novo na barra de rodapé.

    6. No diálogo Nova função empresarial, insira ZD425_BR_## como ID da função empresarial e S4D425 Estudante ## como Descrição da função empresarial. Em seguida, selecione Criar.

    7. Na página exibida, selecione a guia Catálogos empresariais atribuídos.

    8. Selecione Adicionar na guia Catálogos empresariais atribuídos.

    9. No diálogo Adicionar catálogos empresariais, procure seu catálogo empresarial ZD425_COMPLAINT_BC_## (Catálogo empresarial IAM de reclamações ##), selecione-o e pressione OK.

    10. Agora, mude para a aba Usuários empresariais atribuídos.

    11. Pressione Adicionar na guia Usuários na empresa atribuídos.

    12. No diálogo Adicionar usuários na empresa, procure seu usuário na empresa, selecione-o e pressione OK.

    13. Na guia Detalhes gerais da função, defina o valor Sem restrição para o campo Categorias de acessoEscrever, Ler, Entradas possíveis. Para o campo Ler, as entradas possíveis também definem o valor De utilização livre.

    14. Por fim, grave sua função empresarial utilizando o botão Gravar. Confirme o popup que pode aparecer pressionando OK.

  6. Por fim, adicione a aplicação de elementos do SAP Fiori à página Administração de comunicação do espaço Administração do launchpad do SAP Fiori e teste a aplicação a partir do launchpad.

    Nota

    Para garantir que a configuração da função empresarial que você acabou de executar esteja ativa no sistema, pode ser necessário atualizar primeiro o launchpad do SAP Fiori no browser.
    1. Abra o Menu de ações do usuário por meio do botão no canto superior direito do launchpad do SAP Fiori e selecione a entrada Editar página atual.

    2. Para o grupo Gerenciamento de comunicação, selecione a função Adicionar seção.

    3. Para a nova seção, aplique S4D425 Funções como título. Mova a seção para cima até o topo.

    4. Selecione Adicionar bloco em sua nova seção.

    5. No lado esquerdo do App Finder, selecione seu catálogo empresarial Catálogo empresarial IAM de reclamações ##.

      Resultado

      No lado direito da tela, você verá agora o bloco Administrar reclamações - Estudante ##.
    6. Clique no alfinete no canto inferior direito do bloco.

    7. Agora, selecione Página inicial (o ícone SAP) no menu de navegação para retornar à página Processar página atual.

    8. Selecione Voltar para retornar à página inicial.

    9. Selecione o bloco Administrar reclamações - Aluno ## para iniciar a aplicação.

    10. Na página Report de lista exibida, selecione Ir para visualizar os registros disponíveis.

    11. Selecione um registro da tabela para chamar a página do objeto correspondente.