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

Analisar um business object

Objective

After completing this lesson, you will be able to analisar um business object.

Business objects

No modelo de programação de aplicação ABAP RESTful, um business object define uma determinada entidade, como uma agência de viagens. Sua definição tem duas partes; uma ou mais visões CDS, que definem a estrutura do objeto ou, em outras palavras, os campos que ele contém, e uma definição de comportamento, que descreve o que você pode fazer com o business object.

A definição de comportamento indica quais das operações padrão, criar, atualizar, eliminar são permitidas. Ele também pode conter a definição de validações, determinações e ações. As validações verificam se os dados estão corretos quando você cria ou atualiza um registro. As determinações modificam instâncias de business objects com base em condições de acionamento. As ações são operações não padrão que você usa para fornecer comportamento personalizado, específico da lógica empresarial. Aprovar um pedido ou cancelar um voo são atividades que você implementaria como uma ação.

A implementação de comportamento é composta por uma ou mais classes ABAP. Aqui, as validações, determinações e ações são implementadas. Quando se trata de operações padrão, o modelo distingue dois cenários de implementação: no cenário de implementação não administrada, criar, atualizar e excluir são implementados na implementação de comportamento. No cenário de implementação administrado, o tempo de execução cuida deles.

Os business objects são normalmente utilizados para fornecer a lógica transacional para apps de elementos Fiori ou APIs da Web. No entanto, você também pode acessá-los a partir da codificação ABAP usando a Entity Manipulation Language (EML). Este é um conjunto de instruções ABAP que permite a você criar, ler, atualizar e excluir dados usando business objects.

Nota

O EML também pode acessar os dados da aplicação a partir da implementação de comportamento de um business object.

Neste capítulo, você criará uma classe que utiliza um business object para modificar dados da agência de viagens. A entidade de visão contém o campo-chave AgencyID e vários outros campos que contêm informações sobre a agência de viagens.

Definição e implementação de comportamento

Existem duas partes do comportamento de um business object: a definição de comportamento e a implementação de comportamento. A definição de comportamento contém informações sobre o que o business object pode efetuar, enquanto a implementação de comportamento contém a codificação real que o sistema executa.

A implementação de comportamento é uma classe ABAP. Você declara a classe na definição de comportamento na instrução managed implementation in class <class> unique. A codificação real da implementação de comportamento está contida em uma classe local dentro da classe global que você indica.

Uma definição de comportamento é um componente essencial de um business object. Ele descreve quais das operações padrão são permitidas, por exemplo, criar, atualizar, excluir. Ele também define verificações (validações) que são executadas quando você cria ou modifica dados.

O exemplo aqui é a definição de comportamento para a agência de viagens. No início da definição, você pode ver o nome da visão CDS que acabamos de ver e que há um alias definido para ela. Isso é importante, uma vez que é o nome do alias que é usado para abordar a entidade com EML.

A definição de comportamento também liga a entidade CDS à tabela de banco de dados na qual os dados são armazenados. Neste caso, o business object utiliza duas tabelas: uma para dados ativos e uma para esboços (dados que estão incompletos e não foram verificados). Também existem informações relevantes para bloquear os dados, verificações de autorização e controle de processamento paralelo. Não vamos analisar essas informações em profundidade - você só precisa saber que o tempo de execução pode cuidar desses problemas. Você também pode gerar entidades CDS e definições de comportamento com base na definição de uma tabela de banco de dados e, neste caso, o bloqueio, as verificações de autorização e os controles simultâneos são tratados automaticamente.

A classe global da implementação de comportamento (também conhecida como pool de comportamento) é somente uma definição de classe vazia com o suplemento especial FOR BEHAVIOR OF seguido pelo nome da definição de comportamento. A implementação real da definição de comportamento é uma classe local dentro da definição de classe global. Você acessa a classe clicando na guia Tipos locais.

A implementação de comportamento contém um código específico do business object, por exemplo, a implementação para validações, determinações e ações. Se ele também contém código para as operações padrão (criar, atualizar, excluir e bloquear) depende dos detalhes da definição de comportamento. A implementação de comportamento para o nosso business object não contém o código para as operações padrão. Isso ocorre porque o business object usa o tipo de implementação administrada no qual o tempo de execução lida com as operações padrão.

Uma validação é uma verificação que o tempo de execução executa quando os dados são modificados. Aqui, a validação é sempre executada quando um novo registro é criado (acionador create;) Se um registro existente for modificado, a validação só é executada se o campo Nome tiver sido modificado (acionador field Name;).

As validações são definidas na definição de comportamento. Para cada validação, existe um método correspondente na implementação de comportamento.

Como analisar um business object

Projeções BO e interfaces BO

No modelo de programação de aplicação ABAP RESTful, existem duas formas importantes de utilizar um business object:

  • Por meio de um serviço empresarial, por exemplo, um serviço de IU OData para uma aplicação SAP Fiori.
  • A partir do código ABAP, utilizando a Entity Manipulation Language (EML).

Embora tecnicamente possível, um business object não deve ser consumido diretamente. Em vez disso, os consumidores devem acessar as projeções de business object (projeções BO) e as interfaces de business object (interfaces BO) da seguinte forma:

Projeção BO

Os serviços empresariais devem sempre definir uma projeção específica do serviço do business object. A projeção BO indica que subconjunto dos dados e operações do business object estão disponíveis mediante este serviço. Uma projeção BO também pode conter a definição e implementação de dados e comportamento específicos do serviço.

Nota

Uma projeção BO é baseada diretamente no business object ou em uma interface BO.

Interface BO

Uma interface de business object fornece acesso estável aos dados e operações de um business object. As interfaces BO são normalmente liberadas para utilização em outros componentes de software. Se existir uma interface BO para um determinado business object, a codificação ABAP que utiliza EML deve ser sempre utilizada para acessar a interface BO.

Como um business object, uma projeção BO consiste em duas partes: uma ou mais entidades de visão CDS (definidas em Definições de dados) e uma Definição de comportamento. O mesmo é válido para interfaces BO. Eles também consistem em uma ou mais visões CDS e uma definição de comportamento.

A maneira mais fácil de identificar projeções e interfaces é olhando para suas definições de comportamento: Definições de comportamento para projeções começam com a palavra-chave projection, definições de comportamento para interfaces começam com a palavra-chave interface.

As visões CDS de projeções de BO e as visões CDS de interfaces BO são sempre visões de projeção CDS. Isso significa que suas definições contêm a adição as projection on onde as definições de visões CDS comuns usam as select from. Em releases mais recentes, o caso de utilização de uma visão de projeção é indicado utilizando o suplemento provider contract após o nome da entidade de visão da seguinte forma:

  • provider contract transactional_interface para interfaces BO
  • provider contract transactional_query para projeções BO

Dica

Para desenvolvimentos SAP, aplica-se a seguinte convenção de nomes:

  • <namespace>C_<…> para projeções de BO
  • <namespace>I_<…> para interfaces BO
  • <namespace>R_<…> para definições de BO

Analisar um business object

Neste exercício, você analisa a interface do business object /DMO/I_AgencyTP para descobrir sua estrutura e as operações de manipulação de dados que ele oferece.

Tarefa 1: Analisar o comportamento da interface

Analisar a definição de comportamento da interface do business object /DMO/I_AGENCYTP.

Etapas

  1. Abra a definição de comportamento /DMO/I_AGENCYTP no editor.

  2. Analise o texto fonte. Abra a ajuda de linguagem ABAP para encontrar mais informações.

Tarefa 2: Analisar a estrutura de dados

Analisar a entidade de visão CDS que define a estrutura de dados da interface do business object. Navegue para a respectiva fonte de dados até você alcançar uma entidade de visão CDS que não seja uma projeção.

Etapas

  1. Navegue para a entidade de visão CDS /DMO/I_AgencyTP e analise o texto fonte.

    1. Vá para a instrução define behavior for /DMO/I_AgencyTP.

    2. Pressione a tecla Ctrl e clique com o botão esquerdo do mouse em /DMO/I_AgencyTP. Em alternativa, posicione o cursor em /DMO/I_AgencyTP e pressione F3.

  2. Navegue para a fonte de dados da entidade de visão CDS /DMO/I_AgencyTP e analise o texto fonte.

    1. Vá para o fragmento de código as projection on /DMO/R_AgencyTP.

    2. Pressione a tecla Ctrl e clique com o botão esquerdo do mouse em /DMO/R_AgencyTP. Em alternativa, posicione o cursor em /DMO/R_AgencyTP e pressione F3.

Tarefa 3: Analisar o comportamento do business object

Analise a definição de comportamento do business object /DMO/R_AGENCYTP que se encontra na interface do business object /DMO/I_AGENCYTP.

Etapas

  1. Abra a definição de comportamento /DMO/R_AGENCYTP no editor.

  2. Analise o texto fonte. Abra a ajuda de linguagem ABAP para encontrar mais informações.

Tarefa 4: Analisar a implementação de comportamento

Analise a implementação de comportamento do business object /DMO/R_AGENCYTP.

Etapas

  1. Navegue para a classe ABAP /DMO/BP_R_AGENCYTP que contém a implementação de comportamento do business object /DMO/R_AGENCYTP.

    1. Vá para a instrução managed implementation in class /dmo/bp_r_agencytp unique;.

    2. Pressione a tecla Ctrl e clique com o botão esquerdo do mouse em /dmo/bp_r_agencytp. Em alternativa, posicione o cursor em /dmo/bp_r_agencytp e pressione F3.

  2. Vá para a classe local lhc_agency e analise a definição.

    1. Vá para a guia Tipos locais. Como alternativa, expanda o nó raiz /DMO/BP_R_AGENCYTP na visão Estrutura e selecione LHC_AGENCY.