A principal tarefa de qualquer programa, independente da linguagem, é trabalhar com dados. Cada linguagem possui as suas formas de criar e manipulá-los. ABAP utiliza tipos como base para criação dos dados que o programa manipulará.
Para criar algum objeto de dado no ABAP, você utiliza o comando DATA:
DATA v_texto(20) TYPE c VALUE ‘Objeto de Dados’.
Nessa declaração, é criado um objeto de dado (uma variável) v_texto, de comprimento 20 caracteres, com valor inicial “Objeto de Dados”.
Da mesma maneira para criar variáveis para operações matemáticas. Nesse caso, criamos variáveis do tipo numéricas, como no exemplo da listagem 1. A saída desse programa será:
Além dos tipos fundamentais da linguagem ABAP (veja mais na discussão desse post), podemos criar qualquer tipo de estrutura de dados, como por exemplo, workareas (área de trabalho) e internal tables (tabelas internas).
Veja a listagem 2. Esse programa irá calcular a diferença entre os campos SFLIGHT-SEATSMAX e SFLIGHT-SEATSOCC, de todo as linhas da tabela SFLIGHT. Como solução, criamos uma tabela interna que contenha as chaves da tabela SFLIGHT e também um o campo DIFF, quem contém a diferênça. Depois de todas as diferênças calculadas, imprimimos o resultado na saída do programa:
Na listagem 2, temos o uso da intrução TYPES, que é usada para criar tipos locais. Esses tipos somente podem ser utilizados no program no qual ele foi declarado, nesse caso ZTYPE1.
Como tipos locais, temos ty_s_sflight_dif, descreve uma estrutura de dados e ty_t_sflight_dif uma tabela interna com a estrutura de ty_s_sflight_dif. Para declararmos um tipo estruturado local, usando BEGIN OF / END OF.
Já os tipos globais podem ser provenientes do dicionário de dados do SAP. No programa ZTYPE1, usamos alguns tipos globais, como a tabela SFLIGH e alguns de seus campos, como sflight-carrid, sflight-connid etc. Os tipos globais podem ser usados (DATA… TYPE….) em qualquer programa o sistema, não há necessidade de nenhuma declaração no programa.
Quando usamos o TYPE com uma tabela transparente (tabela de banco de dados), o objeto de dado declarado será uma workarea, com a estrutura da tabela transparente. Por outro lado, quando usamos TYPE TABLE OF, estamos declarando uma tabela interna, com estrutura da tabela transparente.
Veja essa parte do programa ZTYPE1.
…
DATA: w_sflight TYPE sflight,mas
t_sflight TYPE TABLE OF sflight,
…
Temos uma workarea w_sflight e uma internal table t_sflight, com estrutura da tabela transparente SFLIGHT.
Por último, temos a seguinte declaração de variável:
DATA: v_diff LIKE w_sflight_dif-diff.
O LIKE indica que o objeto de dado declarado possui o mesmo tipo de outro objeto de dado já declarado, podendo este ser local ou global.
No caso acima, a variável v_diff, possui o mesmo tipo do campo da workarea w_sflight_dif-diff, ou seja, sflight-seatsmax.
Agora já sabemos quando usar TYPE, LIKE e BEGIN OF.
1 response so far ↓
1 Marcio Briller // Sep 25, 2007 at 4:10 pm
Legal Flávio,
Deu uma clareada nas idéias agora!!!
Obrigado
Um abraço
Leave a Comment