SAP Contrôle de table ABAP avec exemples
⚡ Résumé intelligent
SAP Le contrôle de table ABAP affiche un tableau interne sous forme de grille défilable sur un écran intégré. PainterCette page explique ses fonctionnalités, la déclaration CONTROLS, la gestion du curseur, les boucles PBO et PAI, ainsi que les attributs de colonne.

Qu'est-ce qu'un contrôle de table dans SAP ABAP?
Les contrôles de table et les boucles d'étape sont des objets d'affichage de tableau d'écran que vous ajoutez à un écran dans l'écran. Painter.
Du point de vue de la programmation, les commandes de table et les boucles pas à pas sont presque exactement les mêmes. Les contrôles de table sont simplement des boucles d'étape améliorées qui affichent les données avec l'apparence associée aux tableaux dans les applications de bureau.
Caractéristiques du contrôle de table ABAP
Avec les champs table, l'utilisateur peut :
- Faites défiler le tableau verticalement et horizontalement
- Redimensionner la largeur d'une colonne
- Faire défiler un champ (lorsque le contenu du champ est plus large que le champ)
- Sélectionnez les lignes ou les colonnes du tableau
- Réorganiser la séquence des colonnes
- Enregistrez les paramètres d'affichage actuels pour une utilisation future
Les contrôles de table offrent également des fonctionnalités de formatage spéciales (certaines automatiques, d’autres facultatives) qui facilitent la visualisation et l’utilisation des tableaux. Le contrôle de table fournit –
- redimensionnement automatique du tableau (vertical et horizontal) lorsque l'utilisateur redimensionne la fenêtre
- lignes de séparation entre les lignes et entre les colonnes (verticales et horizontales)
- champs d'en-tête de colonne pour toutes les colonnes
En général, la plupart des fonctionnalités fournies par le contrôle table sont gérées localement par le système de votre système. SAPinterface graphique, vous n'avez donc pas besoin de les programmer vous-même. La seule exception notable à cette règle est le défilement vertical.
Exemple (Transaction TZ60)
La transaction TZ60 ci-dessus présente le résultat final : une grille avec des en-têtes de colonnes, des lignes de séparation et une colonne de sélection. Les différences avec l’ancienne boucle sont résumées ci-après.
Contrôle de table vs boucle pas à pas
L'une des caractéristiques des boucles d'étapes est que leurs lignes de tableau peuvent s'étendre sur plusieurs lignes à l'écran. En revanche, une ligne d'un contrôle de tableau doit toujours tenir sur une seule ligne (le défilement est toutefois possible). Le tableau ci-dessous compare ces deux éléments d'écran.
| Critères | Contrôle de la table | Boucle pas à pas |
|---|---|---|
| Mise en ligne | Une ligne correspond toujours à une ligne d'écran. | Une ligne peut s'étendre sur plusieurs lignes d'écran. |
| Gestion des colonnes | L'utilisateur peut redimensionner, réorganiser et masquer les colonnes. | Mise en page à colonnes fixes définie à l'écran |
| Défilement | Défilement horizontal géré par l'interface utilisateur, défilement vertical programmé en PAI | Entièrement programmé en langage ABAP |
| Déclaration | COMMANDES… TYPE TABLEVIEW UTILISANT L'ÉCRAN | Le programme ne comporte aucune structure de contrôle. |
| Paramètres d'affichage | L'utilisateur peut enregistrer une mise en page personnelle | Indisponible |
Le contrôle de tableau étant l'élément moderne, le reste de cette page le programme.
Comment créer et programmer un contrôle de table
Un contrôle de tableau nécessite un élément d'écran, une structure de contrôle dans le programme et une boucle à la fois dans PBO et PAI. Les sous-sections ci-dessous suivent cet ordre.
Déclarer le contrôle
Pour gérer les contrôles de table dans les programmes ABAP, vous devez déclarer un contrôle dans la partie déclaration du programme pour chaque contrôle de table à l'aide de l'instruction suivante :
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
où est le nom du contrôle table sur un écran du programme ABAP. Le champ permet au programme ABAP de lire les attributs du champ table et d'influencer le champ. Ici, est le numéro d'écran où les valeurs initiales de la table sont chargées.
Réglage et lecture de la position du curseur
La position du curseur pour un contrôle de table peut être définie des manières suivantes :
Chez PBO, vous pouvez placer le curseur sur un champ spécifique d'une ligne spécifique d'un contrôle de table.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
À l'aide de l'ajout optionnel OFFSET, vous pouvez saisir le décalage du curseur dans le champ comme décrit sous Définition de la position du curseur.
Sur PAI, vous pouvez lire la position actuelle du curseur.
GET CURSOR FIELD <f> LINE <lin> ...
En plus des informations fournies sous Connaître la position du curseur, le champ contient des informations sur la ligne du contrôle de table sur laquelle se trouve actuellement le curseur. Vous pouvez aussi utiliser
GET CURSOR LINE <lin>.
Pour déterminer la ligne du contrôle de tableau, SY-SUBRC permet de vérifier si le curseur est positionné sur une ligne de ce contrôle.
Lecture de la ligne correspondante du tableau interne
Pour obtenir la ligne correspondante du table interne:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
La variable système stepl – contient l'index de ligne de table actuel dans une boucle… endloop. Loopc – contient le nombre de lignes visibles dans le tableau
Création du contrôle dans l'écran Painter
Pour créer un champ table
- Ajoutez un élément de contrôle de tableau à votre écran.
- Donnez un nom au contrôle de table. Dans le programme ABAP, déclarez une structure portant le même nom (CONTRÔLES). type TABLEVIEW UTILISANT L'ÉCRAN )
- Pour créer des champs, accédez à la fonction Champs de dictionnaire/programme.
- Saisissez le nom de la structure dont vous souhaitez les champs. (Si vous souhaitez qu'il le sélectionne dans le dictionnaire de votre programme, cliquez sur le bouton approprié).
- Dans la liste des champs, choisissez les champs souhaités et choisissez ok.
- Cliquez dans la zone de champ table
Si vous souhaitez une colonne de sélection, cochez la case appropriée dans les attributs et donnez-lui un nom. Créez le champ dans le Programme ABAP.
Codage des boucles PBO et PAI
Dans le DPB, vous devriez avoir la déclaration
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
Dans le PAI, vous devriez l'avoir.
LOOP at <itab>. ENDLOOP.
C'est au sein des boucles que s'effectue le transfert de données entre l'écran et la table interne. Lors du remplissage de la table interne, utilisez la commande DESCRIBE TABLE. LINES -lignes, pour stocker le nombre total de lignes dans le contrôle. L'instruction FIELD peut être utilisée pour contrôler le moment du transfert de données.
⚠️ Attention : La boucle PBO doit nommer le contrôle avec USING CONTROL. Sans cela, le contrôle ne connaît pas le nombre de lignes et le défilement vertical ne fonctionne plus.
Modification des attributs de colonne à l'exécution
Pour modifier les attributs de cellules individuelles, modifiez temporairement la table SCREEN dans le PBO. Vous pouvez modifier les attributs de la structure créée par l'instruction 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.
Astuce : Boucle sur -cols dans le PBO pour masquer ou protéger une colonne pour un rôle utilisateur donné, plutôt que de créer un deuxième écran.

