Lignes vides et saut de ligne dans les reports ABAP avec SKIP

Catégorie
ABAP-Statements
Publié
Auteur
Johannes

L’instruction SKIP sert exclusivement au positionnement vertical du curseur de sortie dans le cadre du traitement de liste ABAP classique. Si vous écrivez donc un report qui produit sa sortie directement avec WRITE, ULINE, etc. sur une liste (liste écran ou liste spool), vous pouvez avec SKIP :

  1. Insérer des lignes vides pour créer un espacement vertical.
  2. Déplacer la sortie au début d’une ligne spécifique sur la page courante.

Contexte important : SKIP n’a aucune signification ni effet dans les technologies UI ABAP modernes comme les ALV Grids (<code>cl_salv_table</code>, <code>cl_gui_alv_grid</code>), les Dynpros (Screen Painter), Web Dynpro ABAP ou SAP Fiori. C’est un outil pour la création de listes traditionnelles orientées lignes.

Syntaxe

Il existe trois variantes de l’instruction SKIP :

1. Insérer une ligne vide

SKIP.

C’est la forme la plus simple et insère exactement une ligne vide après la position courante du curseur. La sortie suivante commence sur la ligne en dessous de cette ligne vide.

2. Insérer plusieurs lignes vides

SKIP <n>.

Ici, <n> est une expression numérique (littéral ou variable, typiquement de type I) qui spécifie le nombre de lignes vides à insérer.

  • Si <n> est positif, <n> lignes vides sont insérées.
  • Si <n> est zéro ou négatif, l’instruction n’a aucun effet.
  • Si l’insertion des lignes vides entraîne un dépassement de fin de page (défini par LINE-COUNT dans l’instruction REPORT), un saut de page est automatiquement effectué et les lignes vides restantes sont insérées sur la nouvelle page.

3. Sauter vers une ligne spécifique

SKIP TO LINE <ligne>.

Ici, <ligne> est une expression numérique (littéral ou variable, type I) qui spécifie le numéro de ligne cible sur la page courante (la numérotation des lignes commence à 1).

  • Le curseur de sortie est positionné au début de la ligne <ligne>.
  • La sortie suivante (ex. avec WRITE) commence sur cette ligne.
  • L’instruction n’a aucun effet si le numéro de ligne <ligne> sur la page courante a déjà été produit (c.-à-d. que le curseur est déjà sur ou après cette ligne) ou si <ligne> est supérieur au nombre maximum de lignes par page.

Exemples

1. Insérer des lignes vides

REPORT Z_SKIP_EXAMPLE_1 LINE-COUNT 15.
START-OF-SELECTION.
WRITE / 'Titre du rapport'.
ULINE. " Ligne sous le titre
SKIP 2. " Deux lignes vides d'espacement
WRITE / 'Section 1 : Détails'.
WRITE / 'Ligne de détail 1.1'.
SKIP. " Une ligne vide d'espacement
WRITE / 'Section 2 : Résumé'.
WRITE / 'Ligne résumé 2.1'.
SKIP 5. " Cinq lignes vides d'espacement (peut déclencher un saut de page)
WRITE / 'Fin du rapport'.

2. Sauter vers une ligne

REPORT Z_SKIP_EXAMPLE_2 LINE-COUNT 25.
START-OF-SELECTION.
WRITE / 'Début sur ligne 1'.
SKIP TO LINE 5.
WRITE AT 10 'Ce texte est sur la ligne 5, colonne 10'.
SKIP TO LINE 10.
WRITE / 'Ce texte commence sur la ligne 10'. " Le '/' est optionnel car SKIP TO LINE saute au début
SKIP TO LINE 7. " Pas d'effet, car ligne 10 déjà atteinte !
WRITE / 'Ce texte suit sur la ligne 10'.
SKIP TO LINE 20.
WRITE 'Ce texte est sur la ligne 20'.

Notes importantes

  • L’instruction SKIP fait partie de la programmation de listes classique. Elle ne convient pas aux interfaces modernes, conviviales et interactives.
  • Utilisez plutôt ALV (ABAP List Viewer) pour les représentations tabulaires ou d’autres technologies UI appropriées.
  • La compréhension de SKIP est surtout importante lorsque vous devez analyser, maintenir ou comprendre d’anciens programmes ABAP qui génèrent encore des listes classiques.
  • SKIP n’affecte que la position verticale. Pour le positionnement horizontal au sein d’une ligne, on utilise le complément AT ou les spécifications de position et longueur dans l’instruction WRITE.