SAP Controle de tabela ABAP com exemplos
โก Resumo Inteligente
SAP O controle de tabela ABAP exibe uma tabela interna como uma grade rolรกvel em uma tela integrada ao controle de tabela. PainterEsta pรกgina explica suas funcionalidades, a declaraรงรฃo CONTROLS, o tratamento de cursores, os loops PBO e PAI e os atributos de coluna.

O que รฉ um controle de tabela em SAP ABAP?
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
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)
A transaรงรฃo TZ60 acima mostra o resultado final: uma grade com cabeรงalhos de coluna, linhas separadoras e uma coluna de seleรงรฃo. As diferenรงas em relaรงรฃo ao loop de etapas anterior sรฃo resumidas a seguir.
Controle de tabela vs. loop de etapas
Uma caracterรญstica dos loops de etapas รฉ que suas linhas podem ocupar mais de uma linha na tela. Uma linha de um controle de tabela, por outro lado, deve sempre estar contida em uma รบnica linha (embora seja possรญvel rolar a tela). A tabela abaixo compara os dois elementos da tela.
| Critรฉrios | Controle de tabela | Loop de etapas |
|---|---|---|
| Layout em linha | Uma linha corresponde sempre a uma linha de tela. | Uma linha pode abranger vรกrias linhas da tela. |
| Manipulaรงรฃo de colunas | As colunas podem ser redimensionadas, reordenadas e ocultadas pelo usuรกrio. | Layout de coluna fixo definido na tela |
| scrolling | Rolagem horizontal feita pelo frontend, rolagem vertical programada em PAI. | Programado inteiramente em cรณdigo ABAP. |
| Declaraรงรฃo | CONTROLES โฆ TIPO TABLEVIEW USANDO SCREEN | Nรฃo hรก estrutura de controle no programa. |
| Configuraรงรตes do visor | O usuรกrio pode salvar um layout pessoal. | Nรฃo disponรญvel |
Como o controle de tabela รฉ o elemento moderno, o restante desta pรกgina programa esse elemento.
Como criar e programar um controle de tabela
Um controle de tabela precisa de um elemento de tela, uma estrutura de controle no programa e um loop tanto no PBO quanto no PAI. As subseรงรตes abaixo seguem essa ordem.
Declarando o controle
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.
Definir e ler a posiรงรฃo do cursor
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 de tabela, o comando SY-SUBRC permite verificar se o cursor estรก posicionado em uma linha do controle de tabela.
Lendo a linha correspondente da tabela interna
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
Criando o controle na tela Painter
Para criar um controle de tabela
- Adicione um elemento de controle de tabela ร sua tela.
- Dรช um nome ao controle de tabela. No programa ABAP, declare uma estrutura com o mesmo nome (CONTROLES). tipo TABLEVIEW USANDO SCREEN )
- Para criar campos, acesse a funรงรฃo Dict./Campos do 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.
Codificaรงรฃo dos loops PBO e PAI
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 ocorre a transferรชncia de dados entre a tela e a tabela interna. Ao preencher a tabela interna, utilize o comando DESCRIBE TABLE. LINES -linhas, 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 ocorre.
โ ๏ธ Aviso: O loop PBO deve nomear o controle com USING CONTROL. Sem isso, o controle nรฃo sabe quantas linhas existem e a rolagem vertical para de funcionar.
Alterar atributos de coluna em tempo de execuรงรฃo
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.
๐ก Dica: Loop sobre -cols no PBO para ocultar ou proteger uma coluna para uma determinada funรงรฃo de usuรกrio, em vez de criar uma segunda tela.

