6.8 KiB
The user wants me to document an SAP ABAP screen flow file for a function group related to payment rules. Let me analyze the code and produce the documentation.
Documentation : zfgpaymentrules.fugr.screen_0001.abap
Algorithmie
Ce fichier définit la logique de flux d'un écran dynpro (screen 0001) appartenant au groupe de fonctions ZFGPAYMENTRULES. Il s'agit d'un écran de type liste View/Maintenance (View Maintenance, généré via SM30/SE54), gérant l'affichage et la saisie des règles de paiement fournisseurs (ZPAYMENTRULES).
Le programme est structuré en deux blocs fondamentaux du cycle de vie d'un dynpro SAP :
PROCESS BEFORE OUTPUT (PBO): prépare et affiche la liste à l'écran.PROCESS AFTER INPUT (PAI): traite les actions utilisateur (commandes, modifications de champs, sélections).
Le schéma général suit le pattern standard de la View Maintenance SAP, où les modules appelés (LISTE_*) sont générés automatiquement par le framework et pilotent la table interne EXTRACT comme tampon de données d'écran.
Objets
| Objet | Type | Rôle |
|---|---|---|
EXTRACT |
Table interne (générée VIM) | Tampon de données entre la base de données et l'écran. Contient les lignes de la vue de maintenance. |
TCTRL_ZPAYMENTRULES |
Table Control | Contrôle graphique de type liste scrollable, lié à la table interne EXTRACT. Gère la navigation ligne par ligne (CURSOR NEXTLINE). |
ZPAYMENTRULES |
Structure de travail (work area) | Représente une ligne de la table/vue ZPAYMENTRULES avec ses champs : LIFNR, VENDORNAME, DAYSLATE, COMMENTS. |
VIM_MARKED |
Champ booléen (VIM) | Case à cocher de sélection de ligne, standard du framework View Maintenance. Permet de marquer une ou plusieurs lignes pour traitement en lot. |
NEXTLINE |
Variable de curseur | Pointeur de ligne utilisé par le Table Control pour le défilement de la liste. |
Champs de la structure ZPAYMENTRULES
| Champ | Rôle métier |
|---|---|
LIFNR |
Numéro de fournisseur (clé primaire) |
VENDORNAME |
Nom du fournisseur |
DAYSLATE |
Nombre de jours de retard tolérés pour le paiement |
COMMENTS |
Commentaire libre sur la règle de paiement |
Dépendances
-
Groupe de fonctions
ZFGPAYMENTRULES: ce fichier est un composant de ce groupe. Les modules appelés (LISTE_INITIALISIEREN,LISTE_SHOW_LISTE, etc.) sont définis dans les includes ABAP du même groupe de fonctions. -
Framework View Maintenance (VIM) : l'ensemble des modules
LISTE_*etSET_UPDATE_FLAGsont des modules standard générés par le framework SM30. Ce programme ne peut fonctionner qu'en contexte de maintenance de vue SAP. -
Table/Vue de base
ZPAYMENTRULES: la table de personnalisation client qui stocke les règles de paiement. Toute modification du dictionnaire de données (ajout/suppression de champs) nécessite une régénération de l'écran et de ses modules. -
Table Control
TCTRL_ZPAYMENTRULES: définie dans le Screen Painter (SE51), doit rester cohérente avec les champs déclarés dans laCHAINdu PAI. -
Variable globale
VIM_MARKED: variable standard du pool VIM, partagée avec les autres includes du groupe de fonctions.
Flux de traitement
Phase PBO (affichage)
1. MODULE LISTE_INITIALISIEREN
└─ Initialise les variables de contrôle, prépare le contexte d'affichage
(statuts, titres, autorisation en lecture/écriture).
2. LOOP AT EXTRACT WITH CONTROL TCTRL_ZPAYMENTRULES CURSOR NEXTLINE
└─ Pour chaque ligne visible dans le Table Control :
MODULE LISTE_SHOW_LISTE
└─ Copie les données de EXTRACT vers les champs d'écran ZPAYMENTRULES-*.
Phase PAI (traitement des entrées utilisateur)
1. MODULE LISTE_EXIT_COMMAND AT EXIT-COMMAND
└─ Intercepte les commandes de sortie (F3, F12, annulation).
Traité EN PREMIER pour permettre une sortie propre sans validation.
2. MODULE LISTE_BEFORE_LOOP
└─ Initialise l'état avant le traitement des lignes (flags globaux, etc.).
3. LOOP AT EXTRACT (pour chaque ligne de l'écran)
│
├─ MODULE LISTE_INIT_WORKAREA
│ └─ Prépare la zone de travail pour la ligne courante.
│
├─ CHAIN (LIFNR + VENDORNAME + DAYSLATE + COMMENTS)
│ MODULE SET_UPDATE_FLAG ON CHAIN-REQUEST
│ └─ Si au moins un champ de la chaîne a été modifié,
│ positionne le flag de mise à jour (insertion/modification).
│
├─ FIELD VIM_MARKED → MODULE LISTE_MARK_CHECKBOX
│ └─ Traite la case à cocher de sélection de ligne.
│
└─ CHAIN (LIFNR)
MODULE LISTE_UPDATE_LISTE
└─ Répercute les modifications dans la table interne EXTRACT.
4. MODULE LISTE_AFTER_LOOP
└─ Finalise le traitement : sauvegarde, gestion des erreurs, mise à jour BDD.
Points d'attention
Risques techniques
-
Cohérence écran / dictionnaire : si des champs sont ajoutés à la table
ZPAYMENTRULES, il faut impérativement régénérer la vue de maintenance (SM30) ET l'écran (SE51). Une désynchronisation provoque des dumps ou des données silencieusement ignorées. -
Ordre des modules PAI :
LISTE_EXIT_COMMANDdoit rester en première position dans le PAI avec la clauseAT EXIT-COMMAND. Le déplacer entraîne une impossibilité de quitter l'écran proprement sans déclencher les validations de champs. -
CHAINsurLIFNRen double : le champLIFNRapparaît dans deuxCHAINdistinctes. Cela est intentionnel dans le pattern VIM (première chaîne pour la détection de modification, seconde pour la mise à jour de liste), mais toute modification manuelle doit préserver cette logique. -
Table Control et pagination : le
CURSOR NEXTLINEdoit être synchronisé avec la taille du Table Control définie dans SE51. Un décalage peut provoquer des problèmes d'affichage ou des boucles infinies.
Risques métiers
-
Absence de validation métier visible : ce fichier ne contient pas de logique de validation des valeurs saisies (ex. : vérification que
LIFNRexiste dans LFA1, queDAYSLATEest positif). Ces contrôles doivent exister dans les modules inclus ou sont absents, ce qui constitue un risque de saisie de données incorrectes. -
VIM_MARKEDet traitements en lot : la case à cocher permet de sélectionner plusieurs lignes. Si des traitements groupés (suppression, modification) sont disponibles via les touches de fonction, il faut s'assurer que les autorisations (S_TABU_DIS, objet d'autorisation personnalisé) sont correctement vérifiées dansLISTE_EXIT_COMMANDouLISTE_AFTER_LOOP. -
Pas de gestion du mode affichage seul : si l'utilisateur n'a que les droits de lecture (
03), le framework VIM doit griser les champs. Vérifier queLISTE_INITIALISIERENgère correctement ce cas.