SAP ABAP - Criação de tabelas internas

A instrução DATA é usada para declarar uma tabela interna. O programa deve ser informado onde a mesa começa e termina. Portanto, use a instrução BEGIN OF e, em seguida, declare o nome da tabela. Depois disso, a adição OCCURS é usada, seguida por um número, aqui 0. OCCURS informa ao SAP que uma tabela interna está sendo criada, e o 0 indica que não conterá nenhum registro inicialmente. Em seguida, ele se expandirá à medida que for preenchido com dados.

A seguir está a sintaxe -

DATA: BEGIN OF <internal_tab> Occurs 0,

Vamos criar os campos em uma nova linha. Por exemplo, crie 'nome' que é declarado como LIKE ZCUSTOMERS1-name. Crie outro campo chamado 'dob', LIKE ZCUSTOMERS1-dob. É útil inicialmente dar aos nomes de campo em tabelas internas os mesmos nomes de outros campos que foram criados em outro lugar. Finalmente, declare o fim da tabela interna com “END OF <internal_tab>.” conforme mostrado no código a seguir -

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

Aqui, 'itab01' é uma abreviação comumente usada ao criar tabelas temporárias no SAP. A cláusula OCCURS é usada para definir o corpo de uma tabela interna, declarando os campos da tabela. Quando a cláusula OCCURS é usada, você pode especificar uma constante numérica 'n' para determinar a memória padrão adicional, se necessário. O tamanho padrão da memória usado pela cláusula OCCUR 0 é de 8 KB. A estrutura da tabela interna foi criada e o código pode ser escrito para preenchê-la com registros.

Uma tabela interna pode ser criada com ou sem o uso de uma linha de cabeçalho. Para criar uma tabela interna com uma linha de cabeçalho, use a cláusula BEGIN OF antes da cláusula OCCURS ou a cláusula WITH HEADER LINE após a cláusula OCCURS na definição da tabela interna. Para criar uma tabela interna sem uma linha de cabeçalho, use a cláusula OCCURS sem a cláusula BEGIN OF.

Você também pode criar uma tabela interna como um tipo de dados local (um tipo de dados usado apenas no contexto do programa atual) usando a instrução TYPES. Esta instrução usa a cláusula TYPE ou LIKE para se referir a uma tabela existente.

A sintaxe para criar uma tabela interna como um tipo de dados local é -

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

Aqui, o <internal_tab_type> especifica um tipo de tabela para uma tabela interna <internal_tab> e <line_type_itab> especifica o tipo de uma linha de uma tabela interna. Na instrução TYPES, você pode usar a cláusula TYPE para especificar o tipo de linha de uma tabela interna como um tipo de dados e a cláusula LIKE para especificar o tipo de linha como um objeto de dados. Especificar uma chave para uma tabela interna é opcional e se o usuário não especificar uma chave, o sistema SAP define um tipo de tabela com uma chave arbitrária.

INITIAL SIZE <size_number> cria um objeto de tabela interna alocando uma quantidade inicial de memória para ele. Na sintaxe anterior, a cláusula INITIAL SIZE reserva um espaço de memória para as linhas da tabela size_number. Sempre que um objeto de tabela interna é declarado, o tamanho da tabela não pertence ao tipo de dados da tabela.

Note - Muito menos memória é consumida quando uma tabela interna é preenchida pela primeira vez.

Exemplo

Step 1- Abra o Editor ABAP executando o código de transação SE38. A tela inicial do Editor ABAP é exibida.

Step 2 - Na tela inicial, digite um nome para o programa, selecione o botão de rádio Código fonte e clique no botão Criar para criar um novo programa.

Step 3- Na caixa de diálogo 'ABAP: Atributos do programa', insira uma breve descrição para o programa no campo Título, selecione a opção 'Programa executável' no menu suspenso Tipo na caixa de grupo Atributos. Clique no botão Salvar.

Step 4 - Escreva o seguinte código no editor ABAP.

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'.

Step 5 - Salve, ative e execute o programa normalmente.

Neste exemplo, mytable é uma tabela interna e uma chave exclusiva é definida no campo Cust_ID.

O código acima produz a seguinte saída -

The mytable is an Internal Table.