Utilização de objetos Dictionary como tipos de dados

Objective

After completing this lesson, you will be able to descreva a utilização de objetos Dictionary como tipos de dados.

Objetos Dictionary como tipos de dados

No capítulo anterior deste curso, foi mostrado como utilizar objetos Dictionary do tipo Tabela de banco de dados para definir tabelas no banco de dados. Também foi exibido como os elementos de dados são usados para indicar as propriedades técnicas e semânticas de campos de tabela. Por fim, um objeto Dictionary do tipo Estrutura foi criado e incluído na lista de campos de uma tabela de banco de dados.

Todos os três tipos de objeto Dictionary, Elemento de dados, Tabela de banco de dados e Estrutura, também podem servir como tipos de dados para variáveis, parâmetros de método, etc.

Nota

Não é possível utilizar domínios como tipos de dados. Os domínios são usados apenas como base para elementos de dados.

Os objetos Dictionary do tipo Tipo de tabela não estão relacionados à definição de tabelas de banco de dados. O seu único objetivo é ser usado como tipos de dados na codificação ABAP.

A natureza dos tipos de dados é bastante óbvia. Um Elemento de dados é um tipo escalar, uma Estrutura é um tipo de estrutura e um Tipo de tabela é o tipo de uma tabela interna. A única surpresa pode ser a natureza das Tabelas de Banco de Dados.

Quando usadas como tipos de dados, as tabelas de banco de dados são tipos de estrutura. Evite usar diretamente tabelas de banco de dados como tipos de dados.

No passado, os desenvolvedores ABAP usavam frequentemente objetos Dictionary como tipos de dados. Isso ocorreu principalmente porque não existiam alternativas reais para tipos de dados globais, ou seja, tipos de dados que estão disponíveis em qualquer codificação ABAP no sistema. Isso foi modificado quando se tornou possível definir tipos em classes e interfaces globais. Os tipos públicos de uma classe global e os tipos em interfaces têm a mesma visibilidade que os tipos de dicionário. Eles também têm uma vantagem: os tipos em classes e interfaces vêm com o contexto da classe ou da interface. Os tipos de dicionário só têm o pacote ao qual pertencem.

Nota

Evite definir novos objetos Dictionary que só servem como tipos de dados, a menos que você dependa de recursos do dicionário, como extensibilidade ou semântica adicional. Em vez disso, utilize tipos em classes e interfaces.

Teste: objetos Dictionary como tipos de dados

  1. Crie uma nova classe global que implemente a interface IF_OO_ADT_CLASSRUN.
  2. Copie o seguinte snippet de código para a parte de implementação do método if_oo_adt_classrun~main( ):
    Code Snippet
    123456789101112
    * Declarations * DATA travel TYPE /dmo/travel_id. * DATA travel TYPE /dmo/s_travel_key. * DATA travel TYPE /dmo/travel. * DATA travel TYPE /dmo/t_travel. * Assignments travel = '123'. "elementary travel = VALUE #( travel_id = '123' ). "structure travel = VALUE #( ( travel_id = '123' ) ). "table

    Nesta codificação, as declarações comentadas do objeto de dados Viagem utilizam diferentes objetos Dictionary como categoria de dados.

  3. Remova o comentário de uma das declarações DATA. Quais das três avaliações causam erros de sintaxe? O que isso informa sobre a natureza do objeto de dados?
  4. Na declaração DATA, posicione o cursor na categoria de dados e utilize a descrição de informação rápida (tecla de função F2) para descobrir que tipo de objeto Dictionary é.
  5. Repita com as outras declarações DATA, por sua vez.

Elementos de dados como tipos de dados

Todos os elementos de dados que são utilizados em definições de tabela de banco de dados também podem ser utilizados como tipos de dados. Isso não é válido ao contrário. Existem as seguintes exceções:

Elementos de dados com um tipo de referência

Tecnicamente, não é possível digitar o campo de uma tabela de banco de dados com um tipo de referência. Elementos de dados que utilizam um tipo de referência não são permitidos nas definições de tabela de banco de dados.

Elementos de dados com um tipo predefinido

Ao definir uma tabela de banco de dados, é vivamente recomendada a utilização de elementos de dados que se referem a um domínio. Os elementos de dados que usam diretamente um tipo predefinido não devem ser usados em definições de tabela de banco de dados, embora tecnicamente isso seja possível.