SAP – Data Objects – Abap

Publicado: 17 de setembro de 2014 em Abap

Apesar do nome Data Objects não ter haver com a clássica programação orientada a objeto, os objetos de dados também fazem parte do ABAP OO, permitindo criar ou referenciar objetos de dados dentro de Objetos Abap, parece confuso não é? Mas é que o conceito de Data Objects antecede o conceito de Objetos Abap.

Os objetos de dados contêm os dados com os quais os programas ABAP trabalham em tempo de execução. Eles não são persistentes, mas apenas existem enquanto durar o programa. Antes que você possa processar dados persistentes, tais como dados de uma tabela de banco de dados ou de um arquivo sequencial, você deve primeiro lê-los em objetos de dados. Por outro lado, se você quiser manter o conteúdo de um objeto de dados para além do final do programa, você deve salvá-lo de uma forma persistente.

Nos já vimos vários objetos de dados ao longo dos posts na categoria Abap, agora vamos ver como utiliza-los de uma forma diferente, utilizando tipos de dados e tipos de Objeto de dados simultaneamente e fazendo interação complexas entre eles.

Dinamic Data Objects

Dinamic Data Objects

 

Objetos de Dados

  • Literais – são objetos de texto, que não são criados através da declaração DATA.
  • Text Symbols – são ponteiros de textos criados através de literais, exemplo: ‘textoliteral'(###).
  • Variables – são variáveis declaradas através das instruções: DATA, CLASS-DATA, STATICS, PARAMETERS, SELECT-OPTIONSRANGES.
  • Anonymous Data Objects – são objetos de dados declarados dinamicamente, utilizando a instrução CREATE DATA, que podem ser endereçados através de referencias.
  • System-Defined Data Objects – são objetos de dados do sistema, que não precisam ser declarados e pois já existem em tempo de execução, exemplo: sy-subrc ou a referencia me-> dentro de métodos de classes.
  • Interface Work Areas – são nomes especiais de objetos de dados que são utilizados para passar dados entre telas e programas Abap, porem estes são obsoletos e existem apenas a nível de compatibilidade.

 

Exemplo:

Neste exemplo utilizamos tipos de dados e objetos de dados, que são criados estaticamente e dinamicamente e utilizados através de referencias entre os vários Data Objects existentes no programa.

Abap

*&---------------------------------------------------------------------*
*& Report  ZOBJETODADOS
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Objeto de dados
*&---------------------------------------------------------------------*

REPORT  ZOBJETODADOS.

* Para entender este exemplo
* primeiro você precisa saber como funciona
* os campos de símbolo em ABAP

TYPES:
  BEGIN OF estrutura,
    coluna1 TYPE c LENGTH 6,
    coluna2 TYPE c LENGTH 6,
  END OF estrutura.

DATA: referencia1 TYPE REF TO data,
      referencia2 TYPE REF TO data.

* declara campos de simbolo (ponteiros)
FIELD-SYMBOLS: <simbolo1> TYPE estrutura,
               <simbolo2> TYPE c.

* Cria uma variável de dados dinamicamente
CREATE DATA referencia1 TYPE estrutura.

* aponta referencia ao simbolo
ASSIGN referencia1->* TO <simbolo1>.

* Alimenta dados no simbolo
<simbolo1>-coluna1 = 'Dados1'.
<simbolo1>-coluna2 = 'Dados2'.

* Lembre-se referenciando o ponteiro você também
* faz referencia a variável ou vice-versa
referencia2 = referencia1.

ASSIGN referencia2->* TO <simbolo2> CASTING.
WRITE : / 'Imprime valores do Simbolo 2:',
        / <simbolo2>, /.

* O simbolo1 faz referencia ao objeto de dados dinâmico (referencia1)
* deste modo é possível recuperar sua referencia.
GET REFERENCE OF <simbolo1>-coluna2 INTO referencia2.

ASSIGN referencia2->* TO <simbolo2>.
WRITE : / 'Re-imprime valores do Simbolo 2:',
        / <simbolo2>.

 

Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s