Tutoriel sur les sous-écrans ABAP : appeler le sous-écran dans SAP

⚡ Résumé intelligent

Les sous-écrans ABAP permettent d'intégrer un écran dans une zone d'un autre écran lors de l'exécution, ainsi que sa logique de flux. Cette page explique les zones de sous-écrans, l'instruction CALL SUBSCREEN en PBO et PAI, le transfert de données et les restrictions pouvant entraîner des erreurs d'exécution.

  • 🪟 Définition principale : Un sous-écran est un écran indépendant affiché à l'intérieur d'une zone définie d'un écran principal, et plusieurs sous-écrans peuvent partager un même écran principal.
  • 🧩 Inclure une analogie : La logique de flux de l'écran intégré est insérée dans la logique de flux de l'écran principal, exactement comme un fichier include est inséré dans un programme.
  • 🪜 Trois étapes Définissez la zone du sous-écran, définissez l'écran du sous-écran, puis incluez cet écran dans la zone.
  • Appel du PBO : SOUS-ÉCRAN D'APPEL Y COMPRIS attribue un numéro d'écran à quatre caractères à la zone et exécute sa logique PBO.
  • Appel PAI : SOUS-ÉCRAN D'APPEL Dans PAI, la logique PAI de l'écran intégré est exécutée et les données des champs portant le même nom sont transportées.
  • 🚫 Restrictions: Un sous-écran ne peut pas utiliser SET PF-STATUS, SET TITLEBAR, SET SCREEN, LEAVE SCREEN, un OK_CODE propre ou AT EXIT-COMMAND.
  • 🌐 Domaines mondiaux : Les champs utilisés par un sous-écran sont des champs globaux déclarés dans l'inclusion TOP du programme.

Sous-écrans ABAP

Qu'est-ce qu'un sous-écran dans SAP ABAP?

Avant de lire ce tutoriel, assurez-vous de savoir ce qu'est un Programme de dialogue est.

  • Un sous-écran est un écran indépendant qui s'affiche dans une zone d'un autre écran (« principal »).
  • Les sous-écrans vous permettent d'intégrer un écran dans un autre au moment de l'exécution. Vous pouvez inclure plusieurs sous-écrans sur l'écran principal.
  • Le terme sous-écran s'applique à la fois à l'écran que vous intégrez et à la zone de l'écran principal dans laquelle vous le placez. Ce didacticiel concerne les zones de sous-écran. Les écrans réels créés via la transaction SE51 sont appelés écrans de sous-écran s'ils sont définis dans les attributs d'écran.
  • Lorsque vous utilisez un sous-écran, la logique de flux de l'écran intégré est également intégrée dans la logique de flux de l'écran principal. Par conséquent, utiliser des sous-écrans sur des écrans revient à utiliser des inclusions dans Programmes ABAP.

Pour utiliser un sous-écran, vous devez suivre trois étapes simples

  1. Définir la ou les zones de sous-écran sur un écran
  2. Définir des écrans de sous-écran appropriés
  3. Incluez l’écran du sous-écran dans la zone du sous-écran.

En outre, vous devez ajuster le cadre du sous-écran et de l'écran principal. Vous devez le nommer dans le champ Nom du champ.

De plus, vous devez également ajuster les champs du sous-écran pour les faire apparaître sur l'écran principal. Dans le cas où le sous-écran est défini comme étant plus grand que la zone disponible dans l'écran principal, seule la partie du sous-écran qui correspond à la zone disponible sera visible. La zone est toujours mesurée à partir du coin supérieur gauche de l'écran. Par conséquent, vous devez faire preuve de prudence lors de la définition des zones de sous-écran et de la création de sous-écrans.

SOUS-ÉCRAN D'APPEL

EXEMPLE

Par exemple, ici, nous avons défini deux zones de sous-écran sur l'écran principal et avons attaché deux sous-écrans différents aux zones correspondantes. Chaque fois que l'écran principal est appelé, le PBO de l'écran principal est appelé. Mais avant l'affichage, les PBO de chaque écran attachés aux zones de sous-écran sur l'écran principal sont également appelés.

Appeler le sous-écran dans SAP

La capture d'écran montre l'écran principal avec les deux zones de sous-écran remplies par deux sous-écrans distincts.

Vous pouvez inclure un écran de sous-écran à l'aide de l'instruction CALL SUBSCREEN dans la logique de flux de l'écran principal.

Appel du sous-écran dans PBO

Pour inclure un écran de sous-écran dans la zone de sous-écran de l'écran principal et appeler sa logique de flux PBO, utilisez l'instruction suivante dans l'événement PBO de l'écran principal :

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.

Cette instruction attribue à l'écran secondaire un numéro à la zone de sous-écran appelée . Vous pouvez également spécifier le programme dans lequel l'écran du sous-écran est défini (facultatif). Si vous ne spécifiez pas explicitement le programme, le système recherche l'écran secondaire dans le même programme ABAP que le programme principal. S'il ne trouve pas d'écran de sous-écran correspondant, une erreur d'exécution se produit. La logique de flux PBO de l'écran secondaire est également incluse au même endroit. Celui-ci peut appeler les modules PBO du programme ABAP dans lequel l'écran sous-écran est défini. À la fin du sous-écran PBO, les champs globaux du programme sont transmis à tous les champs d'écran portant le même nom dans l'écran sous-écran. La logique de flux PBO de l'écran secondaire peut elle-même inclure d'autres sous-écrans.

Le nom de la zone de sous-écran doivent être saisis directement sans virgules. Vous pouvez spécifier les noms et soit sous forme de littéraux, soit de variables. Si vous utilisez des variables, vous devez déclarer et remplir des variables portant le même nom dans le programme ABAP. Le numéro d'écran doit comporter 4 caractères. Si vous n'attribuez pas de sous-écran à une zone, celle-ci reste vide.

Appel du sous-écran dans PAI

Pour appeler la logique de flux PAI de l'écran secondaire, utilisez l'instruction suivante dans la logique de flux PAI de l'écran principal :

PROCESS AFTER INPUT.

CALL SUBSCREEN <area>.

Cette instruction inclut la logique de flux PAI de l'écran de sous-écran inclus dans la zone de sous-écran lors de l'événement du DPB. Celui-ci peut faire appel aux modules PAI du programme ABAP dans lequel le sous-écran est défini. Les données sont transportées entre des champs portant le même nom dans l'écran secondaire et le programme ABAP, soit lorsque l'événement PAI est déclenché, soit au niveau des instructions FIELD correspondantes dans la logique de flux PAI de l'écran secondaire.

Comment créer et intégrer un sous-écran

Les trois étapes mentionnées précédemment sont réalisées dans l'écran Painter et dans la logique de flux de l'écran principal. La séquence ci-dessous crée un écran principal avec une seule zone de sous-écran.

  1. Créer la zone du sous-écran : Ouvrez l'écran principal, par exemple l'écran 100, dans l'écran Painter (SE51). Choisissez le Sous-écran Sélectionnez l'élément dans la barre d'éléments, dessinez-le sur la mise en page et saisissez un nom, par exemple SUB_AREA, dans le champ Nom. Ce nom sera utilisé ultérieurement dans l'instruction CALL SUBSCREEN.
  2. Créer l'écran secondaire : Créez un deuxième écran, par exemple l'écran 110, et définissez son type d'écran sur Sous-écran dans les attributs. Un sous-écran ne possède ni champ de code OK ni statut d'interface graphique propre.
  3. Placez les champs : Dessinez les champs de saisie sur l'écran 110. Gardez la mise en page à l'intérieur de la taille de la zone du sous-écran, car seule la partie qui tient est affichée, mesurée à partir du coin supérieur gauche.
  4. Déclarer les données globales : Placez les champs dans l'inclusion TOP du pool de modules, afin que l'écran principal et le sous-écran lisent les mêmes variables globales.
  5. Appelez le sous-écran : Ajoutez CALL SUBSCREEN au PBO et au PAI de l'écran principal, comme indiqué ci-dessous.
  6. Activer et tester : Activez les écrans et le programme, puis lancez la transaction. La zone du sous-écran est occupée par l'écran 110, et ses modules s'exécutent dans le flux logique de l'écran 100.
* Flow logic of the main screen 100
PROCESS BEFORE OUTPUT.
  MODULE status_0100.
  CALL SUBSCREEN sub_area INCLUDING 'SAPMZDEMO' '0110'.

PROCESS AFTER INPUT.
  CALL SUBSCREEN sub_area.
  MODULE user_command_0100.

Astuce : Stockez le numéro d'écran dans une variable globale plutôt que dans une valeur littérale lorsque la zone doit afficher un sous-écran différent selon l'entrée utilisateur. La variable doit porter le même nom dans le programme et dans l'instruction CALL SUBSCREEN.

Points à retenir

  • Les noms des éléments des sous-écrans au sein d'un écran doivent être uniques
  • Vous ne devriez pas avoir OK_CODE ou FCODE attaché au sous-écran. Le OK_CODE de l'écran principal lui-même est OK_CODE du sous-écran
  • Les sous-écrans ne peuvent pas contenir de modules de dialogue contenant SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN ou LEAVE TO SCREEN. Cela provoquera une erreur d’exécution.
  • Vous devez l'appeler dans la logique de flux (PBO et PAI) de l'écran principal.
  • CALL SUBSCREEN n'est pas autorisé dans les instructions CHAIN..ENDCHAIN ​​et LOOP ENDLOOP
  • Impossible d'avoir un module AT EXIT-COMMAND
  • Les champs que vous utilisez sont les champs globaux. Ils doivent être déclarés en haut include
  • Si vous utilisez des sous-écrans d'un autre programme de dialogue le transfert de données n'aura lieu que si vous ajoutez un code spécifique.

⚠️ Attention : Placer CALL SUBSCREEN à l'intérieur de CHAIN ​​… ENDCHAIN ​​ou à l'intérieur d'une boucle d'écran produit une erreur de syntaxe, et appeler un numéro d'écran qui n'existe pas produit une erreur d'exécution lors du premier affichage.

FAQ

Un panneau d'onglets est un conteneur dont les onglets sont eux-mêmes des sous-écrans. Le sous-écran correspond au contenu, et le panneau d'onglets détermine uniquement lequel de ces sous-écrans est actuellement visible par l'utilisateur.

Un écran principal peut contenir plusieurs sous-écrans, chacun affichant un seul sous-écran à la fois. Un sous-écran peut lui-même contenir d'autres sous-écrans ; l'imbrication est donc limitée uniquement par la taille de l'écran et la lisibilité.

Les données ne sont transférées qu'entre les champs d'écran et les champs de programme portant le même nom et déclarés globalement. Un sous-écran provenant d'un autre programme ne transporte aucune donnée, sauf si les valeurs sont explicitement transmises par le code.

Oui. Les assistants IA lisent le dump court et la logique de flux, puis pointent vers les causes habituelles, telles qu'un numéro d'écran manquant, un SET PF-STATUS interdit à l'intérieur du sous-écran ou un CALL SUBSCREEN placé à l'intérieur d'une CHAIN.

Les outils d'analyse par IA analysent un ensemble de modules, détectent les écrans présentant des mises en page identiques et proposent un sous-écran réutilisable unique contenant les instructions CALL SUBSCREEN qui les remplacent. La proposition est examinée avant la suppression des écrans.

Résumez cet article avec :