Internal Tables – Abap

Publicado: 20 de fevereiro de 2014 em Abap

Citando a documentação oficial da SAP, “…tabelas internas cumprem a função de Arrays…”, porem possuem um certo upgrade na funcionalidade as tornando diferentes das tradicionais Arrays e Vetores de outras linguagens de programação, possuem uma interação com a sintaxe de comandos SQL,  onde podemos usar a tradicional clausula WHERE,  e também comandos SQL inteiros em sua tradicional sintaxe, exceto pelo comando UPDATE que não funciona com tabelas internas

Semelhante ao conceito de tabela nos bancos de dados, mas armazenadas na memória. Número de registros de acesso restrito somente pela capacidade do sistema. Útil para armazenar temporariamente os dados do banco de dados para processamento, preparação de dados para a saída, ou preparar dados para outro uso.

As tabelas internas fornecem um meio selecionar dados a partir de uma estrutura fixa e armazená-la na memória de trabalho em ABAP. Os dados são armazenados linha por linha na memória, e cada linha possui a mesma estrutura. Em ABAP, tabelas internas cumprem a função de matrizes. Uma vez que eles são objetos de dados dinâmicos, elas economizam do programador a tarefa de gerenciamento de memória dinâmica em seus programas. Você deve usar tabelas internas, sempre que você quiser processar um conjunto de dados com uma estrutura fixa dentro de um programa. Uma utilização particularmente importante para as tabelas internas é o armazenamento e formatação de dados a partir de uma tabela de base de dados dentro de um programa. Elas também são uma boa maneira de incluir estruturas de dados muito complicadas em um programa ABAP.

Os dados em uma tabela interna pode ser acessado através de pesquisa na tabela baseada em valores de coluna chave ou índices (números de linha).

As chaves podem ser exclusivas ou não-exclusivas. Buscando uma tabela interna com chaves não-exclusivas pode resultar em mais de 1 registro retornado por pesquisa.

mais informações: http://help.sap.com/SAPHELP_470/Helpdata/PT/fc/eb35de358411d1829f0000e829fbfe/content.htm

Tipos de tabelas internas:

  • Standard – Semelhante à tabela de DB (linha e chave de acesso)
  • Sorted – Dados ordenados sempre ordenados por chaves (linha e chave de acesso)
  • Hashed – Chaves deve ser exclusivas (somente chave de acesso)

Uma tabela Standard só pode ter chaves não únicas, tabelas hash só pode ter chaves únicas, e Sorted pode ter qualquer um.

Comandos:

Append:

Adiciona um objeto de dados no fim da tabela.

Informações adicionais: http://help.sap.com/saphelp_nw70/helpdata/en/fc/eb36c8358411d1829f0000e829fbfe/content.htm

Insert:

Na tabela Standard, mesmo que Append. Na tabela Sorted, insere com base na ordem de classificação. Na tabela hash, insere baseado no algoritmo de hash.

Informações adicionais: http://help.sap.com/saphelp_nw04s/helpdata/en/fc/eb3a6d358411d1829f0000e829fbfe/content.htm

Modify:

Muda uma linha da tabela.

Informações adicionais: http://help.sap.com/saphelp_45b/helpdata/en/34/8e72f96df74873e10000009b38f9b8/content.htm

Delete:

Exclui linha (s) com a condição correspondênte.

Informações adicionais: https://help.sap.com/saphelp_45b/helpdata/en/34/8e72fb6df74873e10000009b38f9b8/content.htm

Exemplos:

Neste exemplo herdamos uma tabela Standard do sistema, criamos uma matriz para manipular as linhas de dados (rows), e usamos os comandos básicos de manipulação de dados.

Abap

*&---------------------------------------------------------------------*
*& Report  ZTABELAINTERNA
*&
*&---------------------------------------------------------------------*
*& Desenvolvimento Aberto
*& Tabelas Internas
*&---------------------------------------------------------------------*

REPORT  ZTABELAINTERNA.

* Tabela Scarr é uma tabela de informações de linhas aéreas
* Utilize SE11 para visualizar a tabela e tipo de dados no ABAP Dictionary.
* Criar uma tabela interna do mesmo tipo que Scarr:

DATA i_minhatabela TYPE STANDARD TABLE OF scarr.

* Criar uma estrutura que corresponda às colunas contidas na tabela interna
* Abap usa a variavel matriz como uma ARRAY:

DATA matriz LIKE LINE OF i_minhatabela.

* INSERT - Insere valores aos campos da tabela interna.

matriz-mandt        = '001'.
matriz-carrid       = '2002'.
matriz-carrname     = 'Dev. Aberto AirLine.'.
matriz-currcode     = 'Euro'.
matriz-url          = 'https://desenvolvimentoaberto.wordpress.com/'.
INSERT matriz INTO TABLE i_minhatabela.

* APPEND - adiciona valores aos campos da tabela interna.

APPEND INITIAL LINE TO i_minhatabela.
matriz-mandt        = '001'.
matriz-carrid       = '122'.
matriz-carrname     = 'Aviação DA airlines S/A.'.
matriz-currcode     = 'Real'.
matriz-url          = 'https://desenvolvimentoaberto.wordpress.com/'.
APPEND matriz TO i_minhatabela.

* Deleta matriz em branco, comente a linha abaixo para ver o espaço em branco

DELETE i_minhatabela WHERE mandt =''.

* MODIFY - modifica dados nas tabelas.

matriz-currcode = 'Euro'.
MODIFY i_minhatabela FROM matriz TRANSPORTING currcode  WHERE currcode = 'Real'.

* Escrever o conteúdo da tabela interna para a tela como uma lista
LOOP AT i_minhatabela INTO matriz.
    WRITE: / 'Mandante', matriz-mandt, / 'Id:', matriz-carrid, / 'Empresa Aerea:', matriz-carrname,
           / 'Código da moeda:', matriz-currcode, / 'Url da empresa:', matriz-url, / .
ENDLOOP.
Publicidade

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s