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.