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.

  • ️ Définition principale : Un contrôle de tableau est une boucle d'étapes améliorée qui affiche des données tabulaires avec l'apparence et le fonctionnement d'une grille d'application de bureau.
  • 🧰 Fonctionnalités intégrées : Le défilement, le redimensionnement des colonnes, le réordonnancement des colonnes, la sélection des lignes et les paramètres d'affichage enregistrés sont gérés par le SAPInterface graphique.
  • (I.e. Règle de la ligne unique : Une ligne de boucle d'étape peut s'étendre sur plusieurs lignes d'écran, tandis qu'une ligne de contrôle de tableau doit toujours tenir sur une seule ligne.
  • ️ Déclaration: COMMANDES TYPE TABLEVIEW UTILISANT L'ÉCRAN relie l'élément d'écran au programme ABAP.
  • (I.e. Gestion du curseur : SET CURSOR positionne le curseur sur PBO, et GET CURSOR lit le champ et la ligne sur PAI.
  • (I.e. Transfert de données: LOOP AT … USING CONTROL s'exécute à PBO et une simple LOOP AT s'exécute à PAI, et les données se déplacent entre l'écran et la table interne à l'intérieur de ces boucles.
  • ???? Attributs dynamiques : La table SCREEN et le -cols structure modifie la visibilité et la mise en forme des colonnes lors de l'exécution.

SAP Contrôle de table ABAP

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)

SAP Contrôle de table ABAP

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

  1. Ajoutez un élément de contrôle de tableau à votre écran.
  2. 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 )
  3. 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.

FAQ

L'interface gère le défilement horizontal, mais le défilement vertical est implémenté en PAI. Évaluez SY-UCOMM pour les codes de fonction de défilement et déplacez le champ top_line de la structure de contrôle avant la prochaine exécution du PBO.

An Grille ALV Ce contrôle permet de trier, filtrer, calculer les totaux et exporter sans code supplémentaire, ce qui le rend idéal pour l'affichage de listes. Un contrôle de tableau est préférable lorsque l'écran nécessite une logique de saisie personnalisée et un contrôle total sur chaque cellule.

SY-STEPL contient l'index de la ligne actuellement traitée dans la boucle d'affichage, et SY-LOOPC contient le nombre de lignes visibles à l'écran. Ces deux variables ne sont renseignées que dans la boucle LOOP … ENDLOOP du contrôle.

Oui. Les assistants IA des outils de développement ABAP génèrent la déclaration CONTROLS, les boucles d'écran et la logique de défilement à partir d'une description de la table interne. La logique de flux générée doit encore être testée à l'écran. Painter.

Les outils d'analyse par IA lisent la logique de flux d'une interface graphique, listent les champs et les codes de fonction, et proposent une conception équivalente basée sur Fiori ou ALV. Cette proposition raccourcit la phase d'analyse d'un projet de modernisation.

Résumez cet article avec :