Objectives
After completing this lesson, you will be able to:
- Crie uma tabela de banco de dados.
- Gere os objetos de desenvolvimento para um serviço de IU OData.
Criação do modelo de dados
Exemplo de modelo de dados
O modelo de dados neste exemplo é muito simples - existe uma única tabela de banco de dados que contém detalhes de conexões de voo - uma companhia aérea, número do voo, detalhes do aeroporto de partida e do destino.
Nota
Os campos adicionais que o tempo de execução necessita para administrar o controle de processamento paralelo não estão incluídos na figura. Olharemos para eles um pouco mais tarde.
Criar uma tabela de banco de dados
Primeiro, vamos ver como criar uma tabela de banco de dados.
Definição de atributos básicos de tabela
Veremos agora como definir atributos básicos de tabela.
Adicionar definição de tabela
O vídeo a seguir mostra como adicionar uma definição de tabela.
Se você não utilizar um tipo ABAP Dictionary integrado para indicar o tipo de uma coluna de tabela, utilize, em vez disso, um elemento de dados. Os elementos de dados são objetos ABAP Dictionary que definem o tipo de um campo individual, como UUID ou código da companhia aérea. Os elementos de dados contêm não só uma descrição de tipo técnico, mas também informações semânticas, como denominadores de campo. Se você usar elementos de dados para definir os tipos das colunas de tabela, o sistema pode usar os denominadores de campo automaticamente na interface do usuário gerada.
O elemento de dados na figura Elemento de dados descreve o campo companhia aérea. É um campo de caracteres com comprimento 3; o sistema utilizará os denominadores de campo automaticamente na IU gerada.
Para criar um novo elemento de dados, selecione Arquivo→Novo→Outro e, em seguida, digite o elemento de dados no campo Filtrar texto. Insira um nome de pacote e o nome do elemento de dados e, em seguida, selecione Seguinte. Selecione uma ordem de transporte e, em seguida, Concluir.
Em seguida, você deve indicar um tipo de dados para o elemento de dados. Este deve ser um domínio - o exemplo reutiliza o domínio existente /DMO/CITY. Considere que os dois elementos de dados usam o mesmo domínio. Isso significa que se alguém modificar posteriormente o comprimento do domínio, a modificação se aplica a todos os elementos de dados que o utilizam.
Por fim, você insere denominadores de campo breves, médios e longos e uma etiqueta que é utilizada para títulos de coluna. Mais tarde, quando você gerar o app Elementos Fiori, o sistema usará esses textos automaticamente.
Cada tabela que você define deve ter uma chave primária. Esta é uma sequência de campos no início da descrição da tabela que identifica cada entrada na tabela de forma única.
O primeiro campo na tabela (e, portanto, também o primeiro campo na definição de chave) deve ser o campo de mandante, e este deve ter a categoria de dados abap.clnt. Além disso, é conveniente para o nosso exemplo usar um UUID para a chave única. Se você usar o elemento de dados sysuuid_x16 para indicar o tipo deste campo, pode permitir que o tempo de execução atribua o UUID automaticamente quando cria um novo registro.
Por motivos de rastreabilidade, é recomendado armazenar algumas informações administrativas com os dados, como, por exemplo, o usuário que criou ou modificou os dados e registros da hora para a criação e a última modificação. A tabela de banco de dados que você cria deve conter os campos exibidos na figura.
Nota
Esses campos são obrigatórios para o gerador que usaremos mais tarde. Para que esse gerador funcione adequadamente, os campos também devem ser definidos com os tipos de dados listados aqui.
Em especial, fieldslocal_last_changed_at e last_changed_at não são somente campos administrativos. No modelo de programação de aplicativos ABAP RESTful, eles também são usados para controle de concorrência.
Uma vez que as aplicações RESTful são sem status, a consistência dos dados não pode ser garantida somente por bloqueios exclusivos. O modelo de programação de aplicativo ABAP RESTful usa uma mistura de bloqueios exclusivos e ETags para evitar inconsistências de dados. Um ETag é um campo que modifica seu valor sempre que um conjunto de dados é atualizado. Ao comparar o valor do campo ETag, o framework pode garantir que um conjunto de dados não foi modificado desde que foi lido pela última vez. Os registros da hora da última modificação tornam os campos ETag perfeitos.
Quando você ativa uma tabela de banco de dados no ADT, o sistema cria a tabela física correspondente no banco de dados. Depois de fazer isso, você poderá gerar automaticamente os objetos adicionais necessários para seu app.
Como criar elementos de dados
Como criar uma tabela de banco de dados
Copiar uma tabela de banco de dados
Nos exercícios desta unidade, você criará um serviço de IU OData. Este serviço de IU irá formar a base para uma aplicação que permite a você modificar o preço de voos. Primeiro, você cria um pacote dedicado para os objetos de desenvolvimento necessários. Em seguida, você copia uma tabela de banco de dados e preenche a mesma com dados.
Tarefa 1: Criar subpacote
Crie um novo subpacote em seu próprio pacote ZS4D400_## (onde ## representa seu número de grupo).
O subpacote deve ter os seguintes atributos:
| Atributo | Valor |
|---|
| Nome | ZS4D400_##_RAP, onde ## representa seu número de grupo |
| Descrição | Objetos para serviço de IU OData |
| Adicionar a pacotes favoritos | Verificado |
| Superpacote | ZS4D400_##, onde ## representa seu número de grupo |
Etapas
Crie um subpacote em seu próprio pacote ZS4D400_## (onde ## representa seu número de grupo).
No Explorador de projetos, clique com o botão direito do mouse em seu pacote ABAP ZS4D400_## e selecione Novo→pacote ABAP.
Insira o nome do pacote ZS4D400_##_RAP, onde ## representa seu número de grupo.
Insira a descrição Objetos para serviço de IU OData.
Marque o campo de seleção Adicionar a pacotes favoritos.
Certifique-se de que o campo Superpackage contenha o nome do seu pacote já existente.
Selecione Avançar.
Certifique-se de que o componente de software está definido como ZSTUDENTS.
Selecione Avançar.
Confirme a ordem de transporte e selecione Concluir.
Tarefa 2: Copiar tabela de banco de dados
No novo pacote, crie uma cópia da tabela de banco de dados /LRN/S4D400_APT. Nomeie a nova tabela de banco de dados Z##FLIGHT, onde ## representa seu número de grupo.
Etapas
Copie a tabela de banco de dados /LRN/S4D400_APT para seu próprio pacote ZS4D400_##_RAP, onde ## representa seu número de grupo.
Abra a definição da tabela de banco de dados /LRN/S4D400_APT.
Vincule a visão Explorador de projetos ao editor.
Na visão Project Explorer, clique com o botão direito do mouse na tabela de banco de dados /LRN/S4D400_APT para abrir o menu de contexto.
No menu de contexto, selecione Duplicar....
Insira o nome do seu pacote ZS4D400_##_RAP no campo Pacote. No campo Nome, insira Z##FLIGHT, em que ## representa seu número de grupo.
Selecione Avançar.
Confirme a ordem de transporte e selecione Concluir.
Ative a definição de tabela de banco de dados.
Pressione Ctrl + F3 para ativar o objeto de desenvolvimento.
Tarefa 3: Preencher tabela de banco de dados
Em seu pacote ZS4D400_##, crie uma cópia da classe global /LRN/CL_S4D400_APT_COPY (nome sugerido: ZCL_##_COPY). Nesta cópia, modifique o valor da constante table_name para o nome da sua própria tabela de banco de dados. Em seguida, execute a classe como um aplicativo de console. Isso preencherá sua tabela de banco de dados com dados.
Etapas
Copie a classe /LRN/CL_S4D400_APT_COPY para uma classe em seu próprio pacote ZS4D400_##.
Abra o texto fonte da classe global /LRN/CL_S4D400_APT_COPY.
Se necessário, vincule a visão do Explorador de projetos ao editor.
Na visão Explorador de projetos, clique com o botão direito do mouse na classe /LRN/CL_S4D400_APT_COPY para abrir o menu de contexto.
No menu de contexto, selecione Duplicar....
Insira ZS4D400_## no campo Pacote. No campo Nome, insira ZCL_##_COPY, onde ## representa seu número de grupo.
Selecione Avançar.
Confirme a ordem de transporte e selecione Concluir.
Na cópia, ajuste o texto fonte do método IF_OO_ADT_CLASSRUN~MAIN. Modifique o valor da constante table_name para o nome da sua própria tabela de banco de dados.
Certifique-se de que o valor da constante é igual ao nome da sua tabela de banco de dados.
Ative e execute a classe como um aplicativo de console.
Pressione Ctrl + F3 para ativar a classe.
Pressione F9 para executar a classe.
Verifique a visão Console. A última saída lida: <...> foi preenchida com dados. Se a saída lê <...> não é uma tabela do tipo correto. Certifique-se de que uma tabela de banco de dados desse nome existe, está ativa e é uma cópia exata da tabela de modelo.
O gerador de objetos
Gerar objetos adicionais
Acabamos de definir uma tabela de banco de dados para armazenar nossos dados, mas o app que vamos criar precisa de mais objetos do que apenas esta tabela. Podemos gerar esses objetos usando um assistente no ADT.
Os objetos gerados contêm todas as informações necessárias para fornecer um app de trabalho com a capacidade de criar, ler, atualizar e excluir. Mais tarde, também ajustaremos e ampliaremos alguns desses objetos para modificar a aparência da interface do usuário e implementar algumas verificações e cálculos.
Assista a este vídeo para saber como gerar objetos adicionais.
Como gerar os objetos adicionais
Visualização do serviço de IU OData
Publicar e visualizar o serviço
Usando sua tabela de banco de dados e o gerador de objetos, você pode gerar todos os objetos de que precisa para obter um app de elementos Fiori em funcionamento. A única etapa manual é publicar o serviço.
Você deve publicar o serviço antes de poder testar o app. Para isso, abra a ligação de serviço e selecione Publicar. Depois de fazer isso, a entidade que você criou (neste caso, Conexão) é exibida na lista de entidades. Marque e selecione Visualizar para testar o app.
Testar o app
Quando você seleciona Visualizar, uma janela do navegador é aberta e você pode criar uma nova conexão de voo. No entanto, o app não implementa verificações diferentes das verificações de tipo (por exemplo, só são permitidos dígitos no campo Número do voo).
Gerar e visualizar um serviço de IU OData
Neste exercício, você gera os objetos do repositório para um serviço da IU OData e visualiza o serviço como um app SAP Fiori.
Pré-requisitos
Você concluiu o exercício anterior. Você criou a tabela de banco de dados Z##FLIGHT (em que ## é o seu número de grupo) e a tabela de banco de dados contém dados.
Tarefa 1: Usar o gerador
Use o gerador Serviço de IU OData→do modelo de programação de aplicativos ABAP RESTful para gerar os objetos de desenvolvimento necessários em seu subpacote ZS4D400_##_RAP. Para isso, indique os seguintes valores no assistente:
| Campo | Valor |
|---|
| Objeto referenciado→geral | Z##FLIGHT |
| Nome do projeto→geral | <vazio> |
| Prefixo de artefatos→gerais | <vazio> |
| Sufixo de artefatos→gerais | <vazio> |
| | |
| Nome da entidade CDS→do modelo de dados do→business object | ZR_##Voo |
| Alias de entidade CDS→de modelo de dados de→business object | Voo |
| Classe de implementação de comportamento de→comportamento de→business object | ZBP_R_##FLIGHT |
| Nome de tabela de esboço→de comportamento de→business object | Z##FLIGHT_D |
| | |
| Nome entidade CDS→entidade projeção serviço→projeção | ZC_##Voo |
| Classe→implementação comportamento→projeção serviço projeção serviço | ZBP_C_##FLIGHT |
| | |
| Definição de serviço empresarial→→Definição de serviço Nome da definição de serviço | ZUI_##FLIGHT_O4 |
| Nome ligação serviço comercial→ligação→serviço | ZUI_##FLIGHT_O4 |
| Tipo de ligação→de ligação de serviço→empresarial | OData V4 - IU |
Etapas
Inicie o gerador de objetos para sua tabela de banco de dados Z##FLIGHT (em que ## é seu número de grupo).
No Explorador de projetos, expanda o seguinte caminho: Pacotes favoritos→ZS4D400_##→ZS4D400_##_RAP→Dictionary→Tabelas de banco de dados (em que ## é seu número de grupo). Como alternativa, abra a definição da tabela de banco de dados Z##FLIGHT e, se necessário, vincule a visão do Explorador de projetos ao editor.
Na visão Explorador de projetos, clique com o botão direito do mouse na tabela de banco de dados Z##FLIGHT para abrir o menu de contexto.
No menu de contexto, selecione Gerar objetos do repositório ABAP....
Na caixa de diálogo, selecione o gerador.
No lado esquerdo da caixa de diálogo, selecione ABAP RESTful Application Programming Model→Serviço de IU OData.
Selecione Seguinte para navegar para a próxima etapa.
Certifique-se de que os objetos de desenvolvimento foram criados em seu subpacote ZS4D400_##_RAP.
Quando a janela ler Inserir pacote na parte superior, certifique-se de que o campo Pacote contenha ZS4D400_##_RAP.
Selecione Seguinte para navegar para a próxima etapa.
Configure o gerador com os dados da tabela.
Cuidado
Não selecione Seguinte antes de inserir todos os dados.
Selecione os itens no lado esquerdo da caixa de diálogo, um a um, e preencha os campos correspondentes no painel direito. Os valores necessários estão listados na tabela acima.
Depois de inserir todos os dados, selecione Seguinte.
Verifique os objetos do repositório que serão gerados e gere os objetos.
Nota
Seja paciente. A geração dos objetos demora algum tempo. No final do processo de geração, aparece uma caixa de diálogo perguntando se você deseja abrir a ligação de serviço gerada no editor. Confirme esta caixa de diálogo clicando em Abrir.
Verifique a lista de objetos do repositório que são exibidos.
Quando tiver certeza de que inseriu todos os nomes corretamente, selecione Seguinte.
Confirme a ordem de transporte e selecione Concluir.
Confirme a caixa de diálogo no final do processo de geração selecionando Abrir.
Analise a saída do gerador no Explorador de projetos.
No Explorador de projetos, posicione o cursor em seu subpacote ZS4D400_##_RAP e pressione F5 para recarregar o conteúdo do pacote.
Expanda todos os subnós do pacote para ver os nomes dos objetos de desenvolvimento gerados.
Tarefa 2: Visualizar o app
Publique o serviço de IU OData e visualize o resultado como um app SAP Fiori.
Etapas
Publique o ponto de acesso de serviço local.
Nota
A publicação do serviço pode demorar algum tempo.
Se ainda não tiver feito isso, abra a ligação de serviço ZUI_##FLIGHT_O4 gerada.
Se a ligação de serviço estiver inativa, pressione Ctrl + F3 para ativá-la.
Para publicar o serviço, selecione Publicar no centro do editor.
Visualize o serviço IU OData como um app SAP Fiori.
Na seção Detalhes da versão do serviço no lado direito, selecione Voo e, em seguida, Visualizar....
Resultado
É aberta uma janela do browser com uma aplicação SAP Fiori. Se solicitado, efetue o logon na aplicação com seu usuário do sistema ABAP.
Exiba a lista de voos.
Selecione Ir para exibir a lista de voos armazenados em sua tabela de banco de dados Z##FLIGHT.
Para um dos voos, navegue para a visão detalhada.
Selecione uma das entradas da lista para navegar para a página do objeto com detalhes desse voo.
Para este voo, mude para o modo de modificação.
Selecione Processar.
Insira algum texto no campo Preço do voo, por exemplo, um.
Insira um valor negativo para o preço do voo.