SAP Controllo tabella ABAP con esempi
⚡ Riepilogo intelligente
SAP Il controllo Tabella ABAP visualizza una tabella interna come una griglia scorrevole su una schermata integrata nella schermata PainterQuesta pagina illustra le sue caratteristiche, la dichiarazione CONTROLS, la gestione del cursore, i cicli PBO e PAI e gli attributi delle colonne.

Che cos'è un controllo tabella in SAP ABAP?
I controlli della tabella e i cicli di passaggi sono oggetti per la visualizzazione della tabella su schermo che aggiungi a una schermata in Screen Painter.
Dal punto di vista della programmazione, i controlli della tabella e i cicli di passi sono quasi esattamente gli stessi. I controlli delle tabelle sono semplicemente cicli di passaggi migliorati che visualizzano i dati con l'aspetto associato alle tabelle nelle applicazioni desktop.
Caratteristiche del controllo tabella ABAP
Con i controlli della tabella, l'utente può:
- Scorri la tabella verticalmente e orizzontalmente
- Ridimensionare la larghezza di una colonna
- Scorri all'interno di un campo (quando i contenuti del campo sono più larghi del campo)
- Seleziona le righe o le colonne della tabella
- Riordina la sequenza delle colonne
- Salvare le impostazioni di visualizzazione correnti per un uso futuro
I controlli della tabella offrono anche funzionalità di formattazione speciali (alcune automatiche, altre facoltative) che semplificano la visualizzazione e l'utilizzo delle tabelle. Il controllo tabella fornisce:
- ridimensionamento automatico della tabella (verticale e orizzontale) quando l'utente ridimensiona la finestra
- linee divisorie tra righe e tra colonne (verticali e orizzontali)
- campi di intestazione di colonna per tutte le colonne
In generale, molte delle funzionalità fornite dal controllo tabella vengono gestite localmente dal sistema SAPfrontend gui, quindi non è necessario programmarli da soli. L'unica eccezione degna di nota è lo scorrimento verticale.
Esempio (Transazione TZ60)
La transazione TZ60 qui sopra mostra il risultato finale: una griglia con intestazioni di colonna, linee di separazione e una colonna di selezione. Le differenze rispetto al precedente ciclo a passi sono riassunte di seguito.
Controllo tabella vs ciclo a passi
Una caratteristica dei cicli a passi è che le righe della loro tabella possono estendersi su più di una riga dello schermo. Una riga di un controllo tabella, d'altra parte, deve essere sempre contenuta in una singola riga (sebbene sia possibile lo scorrimento). La tabella seguente confronta i due elementi dello schermo.
| Criteri | Controllo tabella | Ciclo di passi |
|---|---|---|
| Disposizione delle righe | Una riga corrisponde sempre a una linea dello schermo | Una riga può estendersi su più linee dello schermo |
| Gestione delle colonne | Le colonne possono essere ridimensionate, riordinate e nascoste dall'utente | Layout a colonne fisse definito sullo schermo |
| Scorrimento | Scorrimento orizzontale gestito dal frontend, scorrimento verticale programmato in PAI | Programmato interamente in codice ABAP |
| Dichiarazione | CONTROLLI … TIPO TABLEVIEW USING SCREEN | Nessuna struttura di controllo nel programma |
| Impostazioni del display | L'utente può salvare un layout personale | Non disponibile |
Poiché il controllo della tabella è l'elemento moderno, il resto di questa pagina programma proprio quello.
Come creare e programmare un controllo tabella
Un controllo tabella richiede un elemento schermo, una struttura di controllo nel programma e un ciclo sia in PBO che in PAI. Le sottosezioni seguenti seguono quest'ordine.
Dichiarazione del controllo
Per gestire i controlli tabella nei programmi ABAP, è necessario dichiarare un controllo nella parte di dichiarazione del programma per ciascun controllo tabella utilizzando la seguente istruzione:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
Dove è il nome del controllo della tabella su una schermata nel programma ABAP. Il controllo consente al programma ABAP di leggere gli attributi del controllo della tabella e di influenzare il controllo. Qui, è il numero della schermata in cui vengono caricati i valori iniziali della tabella.
Impostazione e lettura della posizione del cursore
La posizione del cursore per un controllo tabella può essere impostata nei seguenti modi:
In PBO è possibile posizionare il cursore su un campo specifico di una riga specifica di un controllo della tabella.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Utilizzando l'aggiunta opzionale OFFSET, è possibile inserire l'offset del cursore nel campo come descritto in Impostazione della posizione del cursore.
In PAI è possibile leggere la posizione corrente del cursore.
GET CURSOR FIELD <f> LINE <lin> ...
Oltre alle informazioni fornite nel campo Individuazione della posizione del cursore contiene informazioni su quale riga del controllo tabella su cui si trova attualmente il cursore. Puoi anche usare
GET CURSOR LINE <lin>.
Per determinare la riga del controllo tabella. SY-SUBRC consente di verificare se il cursore si trova in una riga di un controllo tabella.
Lettura della riga corrispondente della tabella interna
Per ottenere la riga corrispondente del file tavolo interno:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
La variabile di sistema stepl – contiene l'indice della riga della tabella corrente in un ciclo... endloop. Loopc – contiene il numero di righe visibili nella tabella
Creazione del controllo nella schermata Painter
Per creare un controllo tabella
- Aggiungi un elemento di controllo tabella alla tua schermata
- Assegna un nome al controllo tabella. Nel programma ABAP dichiara una struttura con lo stesso nome ( CONTROLLI tipo TABLEVIEW USING SCREEN )
- Per creare i campi, vai alla funzione Campi dizionario/programma.
- Inserisci il nome della struttura di cui desideri i campi. (Se vuoi selezionarlo dal dizionario del tuo programma clicca sul relativo pulsante).
- Nell'elenco dei campi scegli i campi desiderati e scegli ok.
- Fare clic nell'area di controllo della tabella
Se vuoi una colonna di selezione, seleziona la casella di controllo appropriata negli attributi e assegnale un nome. Crea il campo in Programma ABAP.
Codifica dei cicli PBO e PAI
Nell'UPB dovresti avere la dichiarazione
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
Nel PAI dovresti avere.
LOOP at <itab>. ENDLOOP.
È all'interno dei cicli che avviene il trasferimento dei dati tra lo schermo e la tabella interna. Quando si popola la tabella interna, utilizzare DESCRIBE TABLE. LINES -lines, per memorizzare il numero totale di righe nel controllo. L'istruzione FIELD può essere utilizzata per controllare quando avviene il trasferimento dei dati.
⚠️ Attenzione: Il ciclo PBO deve specificare il controllo con USING CONTROL. Senza di esso, il controllo non sa quante righe esistono e lo scorrimento verticale smette di funzionare.
Modifica degli attributi delle colonne in fase di esecuzione
Per modificare gli attributi delle singole celle modificare temporaneamente la tabella SCREEN nel PBO. È possibile modificare gli attributi della struttura creata dall'istruzione 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.
Suggerimento: Ripeti -cols nel PBO per nascondere o proteggere una colonna per un determinato ruolo utente, anziché creare una seconda schermata.

