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.

  • ๐Ÿ–ฅ๏ธ Definiรงรฃo Essencial: Um controle de tabela รฉ um loop de etapas aprimorado que exibe dados em forma de tabela com a aparรชncia e o funcionamento de uma grade de aplicativo de desktop.
  • ๐Ÿงฐ Recursos integrados: A rolagem, o redimensionamento de colunas, a reordenaรงรฃo de colunas, a seleรงรฃo de linhas e as configuraรงรตes de exibiรงรฃo salvas sรฃo gerenciadas pelo SAPinterface grรกfica de usuรกrio.
  • ๐Ÿ“œ Regra da Linha รšnica: Uma linha de loop de etapas pode abranger vรกrias linhas da tela, enquanto uma linha de controle de tabela deve sempre caber em uma รบnica linha.
  • โŒจ๏ธ Declaraรงรฃo: CONTROLES TIPO TABLEVIEW USANDO SCREEN Vincula o elemento da tela ao programa ABAP.
  • ๐ŸŽฏ Manipulaรงรฃo do cursor: SET CURSOR posiciona o cursor em PBO e GET CURSOR lรช o campo e a linha em PAI.
  • ๐Ÿ” Transferรชncia de dados: O comando LOOP AT โ€ฆ USING CONTROL รฉ executado no PBO e um LOOP AT simples รฉ executado no PAI, e os dados sรฃo movidos entre a tela e a tabela interna dentro desses loops.
  • ???? Atributos dinรขmicos: A mesa SCREEN e a - A estrutura cols altera a visibilidade e a formataรงรฃo das colunas em tempo de execuรงรฃo.

SAP Controle de tabela ABAP

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)

SAP Controle de tabela ABAP

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

  1. Adicione um elemento de controle de tabela ร  sua tela.
  2. Dรช um nome ao controle de tabela. No programa ABAP, declare uma estrutura com o mesmo nome (CONTROLES). tipo TABLEVIEW USANDO SCREEN )
  3. 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.

Perguntas Frequentes

O frontend lida com a rolagem horizontal, mas a rolagem vertical รฉ codificada em PAI. Avalie SY-UCOMM para os cรณdigos da funรงรฃo de rolagem e mova o campo top_line da estrutura de controle antes da prรณxima execuรงรฃo do PBO.

An Grade ALV Oferece recursos de classificaรงรฃo, filtragem, totais e exportaรงรฃo sem a necessidade de cรณdigo adicional, sendo ideal para exibir listas. Um controle de tabela รฉ preferรญvel quando a tela exige lรณgica de entrada personalizada e controle total sobre cada cรฉlula.

SY-STEPL armazena o รญndice da linha atualmente processada dentro do loop de tela, e SY-LOOPC armazena o nรบmero de linhas visรญveis na tela. Ambos sรฃo preenchidos apenas dentro do bloco LOOP โ€ฆ ENDLOOP do controle.

Sim. Os assistentes de IA nas ferramentas de desenvolvimento ABAP elaboram a declaraรงรฃo CONTROLS, ambos os loops de tela e a lรณgica de rolagem a partir de uma descriรงรฃo da tabela interna. A lรณgica de fluxo gerada ainda precisa ser testada na tela. Painter.

As ferramentas de anรกlise de IA leem a lรณgica de fluxo de um dynpro, listam os campos e cรณdigos de funรงรฃo e propรตem um design equivalente baseado em Fiori ou ALV. A proposta reduz a fase de anรกlise de um projeto de modernizaรงรฃo.

Resuma esta postagem com: