Faire boucler une PSD
On souhaite définir un enchainement sur une PSD, qui permet de boucler sur la PSD ( ou sur une autre PSD ) au lieu de sortir complètement. Ici par exemple quand on valide notre PSD, la PSD est directement relancée:
Comment faire un bouclage simple ?
Pour une PSD Fiche
Pour définir un enchainement, il faut aller sur le formulaire de la PSD, et mettre “Enchainement avec Saisie” dans le type d’enchainement:
Puis on renseigne la procédure d’enchainement:
➡️ Il est possible de définir la PSD courante en Procédure d’enchainement, cela permet de boucler sur le même outil. On peut alors lancer l’outil “à l’infini” afin d’enchainer une action particulière par exemple (déclaration fin de fabrication, inventaire tournant,…).
Pour quitter une procédure qui boucle sur elle-même, il suffit de cliquer sur le bouton “Abandon” lorsqu’on ne souhaite plus utiliser l’outil.
➡️ Si la procédure d’enchainement est différente d’elle même, elle peut elle aussi avoir une procédure d’enchainement de défini, que ce soit elle même ou une autre. Il est donc possible d’enchainer autant de PSD que l’on souhaite avec ce système.
La procédure d’enchainement doit obligatoirement être de la même catégorie que la PSD père (NAV / IAP / …).
Pour une PSD FMO
C’est tout comme pour la PSD Fiche… sauf qu’on peut également renseigner le champs “Déroulement Saisie”:
On peut alors boucler sur un seul ou tous les onglets, ou choisir par exemple de rester sur la dernière zone, sur l’onglet, ou sur la zone (le champs) sur laquelle on est…
Comment faire un bouclage par requête ?
C’est pas compliqué 😉 ! Il est possible de piloter la procédure sur laquelle on souhaite enchainer par requête, en initialisant la VBP.SDyProEnc à VRAI et la VBP.SDyProEncSui avec la référence de la PSD sur laquelle on souhaite enchainer. On peut initialiser ces VBP dans la requête de contrôle ou de validation:
Il faut bien initialiser les VBP VBP.SDyProEnc et VBP.SDyProEncSui et non les SCR SCR.SDyProEncSui et SCR.SDyProEncSui ! Ces SCR existent mais ne servent à rien…
Il est possible que ces VBP n’existent pas sur votre environnement (non fourni avec Diapason ). Si ce n’est pas le cas, vous pouvez les créer manuellement mais attention au type et au format:
Logique pour la VBP.SDyProEnc
Caractère (C/10) pour la VBP.SDyProEncSui
Même si on gère le bouclage par requête, il faut quand même préciser sur la PSD que l’on est en enchainement avec saisie et mettre une procédure d’enchainement par défaut. On ne peut pas être en sortie sans enchainement sur la PSD et finalement initialiser les VBP par requête, Diapason plante dans ce cas là… 😞
Qu’est ce qui change au niveau des requêtes quand on boucle (par requête ou dans le formulaire de la PSD) ?
Au niveau des requêtes PSD, les exécutions restent les mêmes que pour une procédure sans enchainement. Lors de la validation de la procédure, la requête de validation est exécutée, puis la procédure d’enchainement va être lancé et la requête d’initialisation de celle-ci va être exécutée (s’il y en a une).
➡️ Un nouveau contexte d’exécution va apparaitre sur la requête d’initialisation:
Lors de la première exécution de la procédure, la SCR.SDyProEvt vaut “PRO-INI,DEM”
Après chaque validation de la PSD et le lancement de la procédure d’enchainement, la SCR.SDyProEvt vaut “PRO-INI,BOU”
Ce nouveau contexte va nous permettre de gérer des comportement différents quand on lance la PSD pour la première fois et quand on boucle dessus. On peut par exemple demander à l’utilisateur de remplir des champs quand on lance la PSD pour la première fois, et conserver les valeurs de ces champs sans demander à l’utilisateur de les re-remplir quand on boucle !