Tabela interna SAP ABAP: criar, ler, preencher, copiar & Excluir

Índice:

Anonim

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.

  1. Tabelas internas com linha HEADER
  2. 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-

Dados  LIKE  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 de  ocorre ,, ...,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 [ A / LINHA INICIAL A] .
Aqui, a área de trabalho ou a linha inicial é anexada à tabela interna .
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 [ INTO / INITIAL LINE INTO]  [index ].
Aqui, a área de trabalho ou LINHA INICIAL é inserida na tabela interna no índice .

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.
MOVE  para .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 . O valor de SY-TABIX é o índice da linha lida. Se uma entrada com o índice especificado for encontrada, SY-SUBRC será definido como 0. Se o índice especificado for menor que 0, ocorrerá um erro em tempo de execução. Se o índice especificado exceder o tamanho da tabela, SY-SUBRC será definido como 4.

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
DELETE  INDEX .
A linha com o índice é excluída. O índice da linha a seguir é diminuído em 1.