O que é uma mesa interna?
INTERNAL TABLE são usados para obter dados de uma estrutura fixa para uso dinâmico em ABAP. Cada linha da tabela interna possui a mesma estrutura de campo. O principal uso das tabelas internas é armazenar e formatar dados de uma tabela de banco de dados em um programa.
Neste tutorial, você aprenderá:
- O que é uma mesa interna?
- O que é uma área de trabalho?
- Diferença entre mesa interna e área de trabalho?
- Tipos de tabelas internas
- Criação de tabelas internas
- Preenchendo tabelas internas
- Copiando tabelas internas
- Leitura Interna
- Excluindo Tabelas Internas
O que é uma área de trabalho?
As áreas de trabalho são linhas únicas de dados. Eles devem ter o mesmo formato que qualquer uma das tabelas internas. Ele é usado para processar os dados em uma tabela interna, uma linha por vez.
Diferença entre mesa interna e área de trabalho?
Uma imagem diz mil palavras :-)
Tipos de tabelas internas
Existem dois tipos de tabelas internas.
- Tabelas internas com linha HEADER
- Tabelas internas sem linha HEADER.
Tabelas internas com linha de cabeçalho
- Aqui, o sistema cria automaticamente a área de trabalho.
- A área de trabalho possui o mesmo tipo de dados da tabela interna.
- Esta área de trabalho é chamada de linha HEADER.
- É aqui que todas as alterações ou qualquer ação no conteúdo da tabela são feitas. Como resultado disso, os registros podem ser inseridos diretamente na tabela ou acessados diretamente da tabela interna.
Tabelas internas sem linha de cabeçalho :
- Aqui não há área de trabalho associada à mesa.
- A área de trabalho deve ser especificada explicitamente quando precisamos acessar tais tabelas.
- Portanto, essas tabelas não podem ser acessadas diretamente.
Criação de tabelas internas
Existem muitas maneiras de criar uma Tabela Interna. Vamos examiná-los um por um -
1. Usando a instrução Type
Vamos agora criar uma tabela interna itab usando a instrução TYPE.
A sintaxe é -
Tipos: início da linha,coluna1 tipo I,coluna 2 tipo I,fim da linha.
Exemplo:
TIPOS: início da linha,empno tipo I,empname (20) tipo c,fim da linha.
A instrução TYPES cria uma linha de estrutura conforme definido.
Para realmente criar uma tabela interna itab use o seguinte comando-
A linha do tipo itab de dados ocorre 10.
Uma tabela interna itab é criada com a estrutura de line. Além de declarar a estrutura de uma tabela interna, a cláusula OCCURS também define quantas entradas da tabela são mantidas no armazenamento principal (neste caso, 10). Registros extras são gravados na área de paginação e podem afetar o desempenho
2. Referindo-se a outra Tabela
Você pode criar uma tabela interna referindo-se a uma tabela existente. A tabela existente pode ser uma tabela SAP padrão, uma tabela Z ou outra tabela interna.
Sintaxe-
Dados[com linha de cabeçalho].
Exemplo-
DATA itab TYPE line OCORRE em 10 com a linha de cabeçalho.
Aqui, uma tabela interna itab é criada do tipo line com uma linha de cabeçalho. Observe que "com linha de cabeçalho" é opcional
3. Por referir-se à
sintaxe de estrutura existente-
DadosLIKE ocorre n [com linha de cabeçalho].
Exemplo-
DADOS itab COMO sline OCORRE EM 10.
Aqui, uma tabela itab é criada com uma estrutura igual à de sline
4. Ao criar uma nova estrutura
Vamos agora criar uma tabela interna com uma estrutura própria. Aqui, a tabela é criada com uma linha de cabeçalho, por padrão .
Sintaxe -
Dados: Início deocorre , , ...,Fim de .
Exemplo -
Dados: o início do itab ocorre em 10,coluna1 tipo I,coluna 2 (4) tipo C,coluna 3 como mara-ernam,Fim do itab.
A tabela interna itab é criada
Preenchendo tabelas internas
Agora que criamos com sucesso algumas tabelas internas, vamos ver como podemos preenchê-las com alguns registros. Existem vários métodos disponíveis para preencher as tabelas 1. Anexar dados linha por linha O primeiro método disponível é o uso da instrução APPEND.Usando a instrução APPEND, podemos adicionar uma linha de outra área de trabalho à tabela interna ou podemos adicionar uma linha inicial à tabela interna ...
Sintaxe -
ANEXAR [Aqui, a área de trabalhoA / LINHA INICIAL A] .
A variável de sistema SY-TABIX contém o índice da linha anexada.
Exemplo:
Dados: o início do itab ocorre em 10,col1 tipo C,col2 tipo I,fim do itab.Anexe a linha inicial a itab.
Resultados: '' '0'
Linhas iniciais adiciona à tabela uma linha inicializada com o valor correto para seu tipo. Aqui, col1 é um caractere e col2 é um número inteiro. Em seguida, APPEND linha inicial, adiciona uma linha inicializada em relação ao tipo de dados das colunas, ou seja, espaço para col1 e 0 para col2. 2. Usar a instruçãoCOLLECT COLLECT é outra forma de instrução usada para preencher as tabelas internas. Geralmente, COLLECT é usado ao inserir linhas em uma tabela interna com chave padrão exclusiva.
Sintaxe-
COLETE [INTO] .
No caso de tabelas com linha de cabeçalho, a opção INTO é omitida. Suponha que já exista uma entrada com uma chave igual à que você está tentando anexar, então uma nova linha não é adicionada à tabela, mas os campos numéricos de ambas as entradas são adicionados e apenas uma entrada correspondente à chave está presente . O valor de SY-TABIX é alterado para a linha da entrada original. Caso contrário, COLLECT atua de forma semelhante a APPEND e SY-TABIX contém o índice da linha processada. 3 . Usando a instrução INSERT A instruçãoINSERT adiciona uma linha / área de trabalho à tabela interna. Você pode especificar a posição na qual a nova linha deve ser adicionada usando a cláusula INDEX com a instrução INSERT.
Sintaxe
INSERT [Aqui, a área de trabalhoINTO / INITIAL LINE INTO] [index ].
Copiando tabelas internas
O conteúdo de uma tabela interna pode ser copiado para outra usando a instrução APPEND LINES ou INSERT LINES. Uma maneira mais simples é usar qualquer uma das seguintes sintaxes.MOVEpara .OU = .
Isso copia o conteúdo de ITAB1 para ITAB2. No caso de tabelas internas com linha de cabeçalho, temos que usar [] inorder para distinguir da área de trabalho. Então, para copiar o conteúdo das tabelas internas com a linha de cabeçalho, a sintaxe se torna,
itab1 [] = itab2 [].
Leia as tabelas internas
Agora estamos familiarizados com a criação de tabelas internas e seu preenchimento com dados. Agora veremos como realmente usamos os dados ou recuperamos os dados das tabelas internas. 1. Usando Loop -EndloopUma das maneiras de acessar ou ler a tabela interna é usando LOOP-ENDLOOP.Sintaxe
LOOP AT[INTO ]… ENDLOOP.
Aqui, quando você diz LOOP AT ITABLE, a tabela interna ITABLE é lida linha por linha. Você pode acessar os valores das colunas dessa linha durante qualquer parte da estrutura LOOP-ENDLOOP. O valor de SY-SUBRC é definido como 0 , mesmo se apenas um registro for lido. 2. Usando READO outro método de leitura da tabela interna é usando a instrução READ.
Sintaxe-
LEIA A TABELA[INTO ] ÍNDICE .
Esta instrução lê a linha ou linha atual conforme especificado pelo índice
Excluindo Tabelas Internas
Existem muitas maneiras de excluir linhas de uma tabela interna. 1. Excluindo linhas em um loop.Esta é a maneira mais simples de excluir linhas.
Sytax
DELETE.
Esta instrução funciona apenas dentro de um loop. Exclui a linha atual. Você pode excluir as linhas em um loop condicionalmente, adicionando a cláusula WHERE. 2. Excluindo linhas usando o índice.
Isso é usado para excluir uma linha da tabela interna em qualquer índice conhecido.
Sintaxe
DELETEA linha com o índiceINDEX .