Lorsque vous développez un workflow, vous pouvez être amené à vouloir mettre en attente votre workflow pour le redémarrer ultérieurement lors d’un événement particulier (cela est par exemple le cas si vous souhaitez initier un workflow et le mettre immédiatement en attente à la création d’un document pour le redémarrer plus tard (à la validation du document, suivant une action manuelle utilisateur, etc.)).
Entrez en modification sur votre Business Object et créez l’événement permettant le redémarrage du workflow :
Renseignez les informations générales de l’événement :
Procédez à l’implémentation de l’événement :
Entrez en modification sur votre workflow et créez votre étape d’attente :
Spécifiez l’élément de conteneur (correspondant généralement à l’objet BOR principal de votre workflow) ainsi que l’événement permettant le redémarrage du workflow) :
L’étape d’attente est ajoutée :
Une fois le workflow démarré, on peut voir que celui-ci est immédiatement en attente :
Nous pouvons vérifier cela via le protocole du workflow :
On récupère la clé du Business Object pour pouvoir le redémarrer :
Relance du workflow (via bapi SWE_EVENT_CREATE) :
On peut vérifier cela via le protocole du workflow :
Exemple d’utilisation de la bapi « SWE_EVENT_CREATE »
REPORT ylaunch_wkf.
PARAMETERS:
p_pernr TYPE pernr_d,
p_tripno TYPE reinr.
TYPES:
* Déclaration des types locaux :
BEGIN OF lty_objkey,
pernr TYPE pernr_d, « Matricule
tripno TYPE reinr, « N° déplacement
END OF lty_objkey.
DATA:
* Déclaration des structures locales :
stl_objkey TYPE lty_objkey,
* Déclaration des variables locales :
lv_objkey LIKE sweinstcou-objkey.
stl_objkey-pernr = p_pernr.
stl_objkey-tripno = p_tripno.
lv_objkey = stl_objkey.
CALL FUNCTION ‘SWE_EVENT_CREATE’
EXPORTING
objtype = ‘BUS2089’
objkey = lv_objkey
event = ‘TRIPREQUESTED’
* CREATOR = ‘ ‘
* TAKE_WORKITEM_REQUESTER = ‘ ‘
* START_WITH_DELAY = ‘ ‘
* START_RECFB_SYNCHRON = ‘ ‘
* NO_COMMIT_FOR_QUEUE = ‘ ‘
* DEBUG_FLAG = ‘ ‘
* NO_LOGGING = ‘ ‘
* IDENT =
* IMPORTING
* EVENT_ID =
* TABLES
* EVENT_CONTAINER =
EXCEPTIONS
objtype_not_found = 1
OTHERS = 2
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
WRITE ‘Event Triggered’.
ENDIF.
COMMIT WORK.