SAP Controle de tabela ABAP com exemplos

Controles de tabela e loops de etapas são objetos para exibição de tabela de tela que você adiciona a uma tela no campo Tela Painter.

Do ponto de vista da programação, os controles de tabela e os loops de etapas são quase exatamente iguais. Os controles de tabela são simplesmente loops de etapas aprimorados que exibem dados com a aparência associada às tabelas em aplicativos de desktop.

Recursos do controle de tabela ABAP

Com controles de tabela, o usuário pode:

  • Percorrer a tabela verticalmente e horizontalmente
  • Redimensionar a largura de uma coluna
  • Rolar dentro de um campo (quando o conteúdo do campo é mais largo que o campo)
  • Selecione linhas ou colunas da tabela
  • Reordene a sequência de colunas
  • Salve as configurações de exibição atuais para uso futuro

Os controles de tabela também oferecem recursos especiais de formatação (alguns automáticos, outros opcionais) que facilitam a visualização e o uso das tabelas. O controle de tabela fornece -

  • redimensionamento automático da tabela (vertical e horizontal) quando o usuário redimensiona a janela
  • linhas separadoras entre linhas e entre colunas (vertical e horizontal)
  • campos de cabeçalho de coluna para todas as colunas

Uma característica dos loops de etapa é que as linhas da tabela podem abranger mais de uma linha na tela. Por outro lado, uma linha de um controle de tabela deve estar sempre contida em uma única linha (embora a rolagem seja possível).

Em geral, muitos dos recursos fornecidos pelo controle de tabela são tratados localmente pelo sistema SAPinterface gui, então você não precisa programá-los sozinho. A única exceção notável a isso é a rolagem vertical.

Exemplo (Transação TZ60)

SAP Controle de tabela ABAP

Sintaxe

Para manipular controles de tabela em programas ABAP, você deve declarar um controle na parte de declaração do programa para cada controle de tabela usando a seguinte instrução:

CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>

onde é o nome do controle de tabela em uma tela do programa ABAP. O controle permite que o programa ABAP leia os atributos do controle de tabela e influencie o controle. é o número da tela onde são carregados os valores iniciais da tabela.

A posição do cursor para um controle de tabela pode ser definida das seguintes maneiras:

No PBO você pode colocar o cursor em um campo específico de uma linha específica de um controle de tabela.

SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]

Usando a adição opcional OFFSET, você pode inserir o deslocamento do cursor no campo conforme descrito em Configurando a posição do cursor.

No PAI você pode ler a posição atual do cursor.

GET CURSOR FIELD <f> LINE <lin> ...

Além das informações fornecidas em Descobrindo a posição do cursor, campo contém informações sobre em qual linha do controle da tabela o cursor está atualmente. Você também pode usar

GET CURSOR LINE <lin>.

para determinar a linha do controle da tabela. SY-SUBRC permite verificar se o cursor está colocado em uma linha de um controle de tabela.

Para obter a linha correspondente do mesa interna:

GET CURSOR line <lin>.

ind = <table_control>-top_line + <lin> - 1.

Read table <itab> index ind.

A variável de sistema stepl – contém o índice da linha da tabela atual em um loop… endloop. Loopc – contém o número de linhas visíveis na tabela

Para criar um controle de tabela

1.Adicione um elemento de controle de tabela à sua tela

2.Dê um nome ao controle da tabela. No programa ABAP declare uma estrutura com a mesma (CONTROLS digite TABLEVIEW USANDO TELA )

3.Para criar campos vá para a função Campos Dict./Programa.

  • Insira o nome da estrutura cujos campos você deseja. (Se você quiser selecioná-lo no dicionário do seu programa, clique no botão relevante).
  • Na lista de campos escolha os campos desejados e escolha ok.
  • Clique na área de controle da tabela

Se você quiser uma coluna de seleção, marque a caixa de seleção apropriada nos atributos e dê um nome a ela. Crie o campo no Programa ABAP.

No PBO você deve ter a declaração

LOOP at <itab> USING CONTROL <cntrl_name>.

ENDLOOP.

No PAI você deveria ter.

LOOP at <itab>.

ENDLOOP.

É dentro dos loops que acontece a transferência de dados entre a tela e a tabela interna. Ao preencher a tabela interna use DESCRIBE TABLE LINHAS -lines, para armazenar o número total de linhas no controle. A instrução FIELD pode ser usada para controlar quando a transferência de dados acontece

Para alterar os atributos de células individuais, altere temporariamente a tabela SCREEN no PBO. Você pode alterar os atributos da estrutura criada pela instrução CONTROLS

<cntrl>-fixed_cols etc are the attributes of the control

<cntrl>-cols-index etc are the attributes of the columns.

<cntrl>-cols-screen-invisible etc are the screen attributes of each column.