Bonjour,
j'avais un cas similaire, j'ai trouvé une solution sans utiliser le MODIFY_STATE
j'ai adapté ton code au mien ( après le IF )
:SET &CURDATE# = SYS_DATE()
:SET &PERIOD_FIN#=LAST_OF_PERIOD(&CURDATE#, "WW", , "FR", "LUN_MAR")
:PRINT "&CURDATE# - &PERIOD_FIN#"
:IF &CURDATE# > &PERIOD_FIN#
: PRINT "Stop"
: SET &RUNID_EVNT# = SYS_ACT_PARENT_NR(ACT)
: SET &RC# = CANCEL_UC_OBJECT(&RUNID_EVNT#,"ENDED_TIMEOUT")
:ENDIF
Je récupère le runid de l'event ( l'activateur, pas un de ces fils) et je le cancel en le forçant en statut 'timeout'
je ne sais pas si ça corresponds à ton besoin, mais ça me semble coller
Didier