Sur Sage X3 v12 (2021R3), j'essaye d'exécuter dans un TRT l'action $APRES_CHOI du strandard dans un SPE.
Le process est le suivant : Nous disposons d'un Objet appelé ZDK, depuis cet objet, j'ouvre une fenêtre via une action AZDK1 qui me permet de sélectionner des commandes pour générer des données de production (Action avec écran et code spécifique).
GACTION = "AZDK1"
Call SAISIE_CHAR(VALBOUT,PARBOUT,"OZDK1","SUBZDK1","SPEZDK1") From GSAISIE
Après avoir sélectionné des éléments, un bouton permet de valider la sélection et génère des données stockées en base (dans une table dédié -> ZDK). Lorsque je retourne sur l'objet ZDK, il faudrait forcer l'exécution du $APRES_CHOI en précisant la valeur de la variable : REPONSE = GSTARAF (GSTARAF valant 1799 permet l'exécution du bouton de rechargement des données -> GOBJSUB->$RAFFRAICHIR qui exécute le GOBJSUB->$RELIT).
Dans le traitement spé (SPEZDK) après la génération des données, nous avons mis un flag qui permet de forcer la valeur du $APRES_CHOI à 1799. A ce moment là, si j'exécute une action quelconque : appui sur ENTER, cliquer sur un bouton ou autre... l'écran est alors bien rechargé comme désiré.
$APRES_CHOI
(...)
If TEST = "OK" Then
REPONSE = GSTARAF
Endif
Return
Mon idée est donc depuis mon traitement de forcer l'exécution de l'action APRES_CHOI pour automatiser le processus :
Local Char ACTION
ACTION = "APRES_CHOI"
Gosub ACTION From GOBJSUB
Le soucis est qu'une erreur apparait, certaines variables utilisées dans le STD ne semblent pas être déclarées :
Je ne désire pas déclarer les variables du STD dans mon spé comme c'est suggéré sur ce poste : https://www.sagecity.com/us/sage_erp_x3/f/sage-x3-general-discussion-forum/103996/hot-to-invoke-refresh-button
Mais plutôt trouver et exécuter le code standard qui initialise les variables STD avant de faire mon Gosub ACTION From GOBJET/GOBJSUB/GTRAITE
. (Comme ça, lors des patch/MAJ j'aurais moins de chance d'avoir à reprendre mon spé).
Ce post est aussi disponible sur stackoverflow https://stackoverflow.com/questions/74385935/execute-action-from-std-on-sage-x3 et sur la discussion générale US : https://www.sagecity.com/us/sage_erp_x3/f/sage-x3-general-discussion-forum/192806/execute-action-from-std-on-sage-x3
Comment exécuter une ACTION du STD depuis un traitement SPE ?