Déclenchement d’un workflow avec les messages

water-drop1

Déclenchement d’un workflow avec les messages

Pour déclencher un événement à partir des messages (NACE), il faut
Business Workflow / Développement / Outils de définition / Evènement /Génération d’un événement / Pilotage des messages ou transaction NACE .
Puis vous devez choisir l’application concernée (pour moi EF, pour les commandes d’achat).
Vous pourrez alors créer une nouvelle catégorie de message (Pour moi ZCAE)
Vous pourrez alors lui affecter le programme RVNSWE01 et la routine form CREATE_EVENT.
Pour ma part j’ai fait une copie de ce programme pour pouvoir transmettre la clé du message afin de le placer en erreur si jamais mon workflow connaissait un souci.
Pour que cela fonctionne, mon événement à un paramètre :
Mes programmes
ZRVNSWE01 copie de RVNSWE01
REPORT ZRVNSWE01.
TABLES: NAST.
*———————————————————————*
*       FORM CREATE_EVENT                                             *
*———————————————————————*
FORM CREATE_EVENT USING RETURNCODE
                        US_SCREEN.
* das anwendungsunspezifische Verarbeitungsprogramm ist RSWEMC01
  PERFORM CREATE_EVENT(ZRSWEMC01) USING RETURNCODE
                                       US_SCREEN.
ENDFORM.
ZRSWEMC01 copie de RSWEMC01
report zrswemc01.
include <cntn01>.
tables: nast, t681z.
*———————————————————————*
*       FORM CREATE_EVENT                                             *
*———————————————————————*
form create_event using returncode
                        us_screen.
  include rswuincl.
  data: l_object type swc_object.
  data: l_event_creator like swhactor .
  data: l_objkey like sweinstcou-objkey.
  data: l_eventid  like swedumevid-evtid,
        ls_nastkey type nast_key.
*
  if nast-event eq space or nast-objtype eq space.
    clear: syst-msgid, syst-msgno, syst-msgty, syst-msgv1,
           syst-msgv2, syst-msgv3, syst-msgv4.
    syst-msgid = ‘VN’.
    syst-msgty = ‘E’.
    syst-msgno = 075.
    syst-msgv1 = nast-event.
    syst-msgv2 = nast-objtype.
    call function ‘NAST_PROTOCOL_UPDATE’
      exporting
        msg_arbgb              = syst-msgid
        msg_nr                 = syst-msgno
        msg_ty                 = syst-msgty
        msg_v1                 = syst-msgv1
        msg_v2                 = syst-msgv2
        msg_v3                 = syst-msgv3
        msg_v4                 = syst-msgv4
      exceptions
        message_type_not_valid = 01
        no_sy_message          = 02.
    returncode = 4.
  else.
    swc_container l_cont.
    l_event_creator-otype = org_objtype_user .     « global in RSWUINCL
    l_event_creator-objid = sy-uname.              « hopefully sy-uname
    « does exist!
    move-corresponding nast to ls_nastkey.
* convert NAST key (if necessary)
* instantiate an application object
    swc_create_object l_object nast-objtype space.
* set required parameters for ‘ConvertKey’
    swc_set_element l_cont ‘Application’ nast-kappl.
    swc_set_element l_cont ‘OutputType’ nast-kschl.
    swc_set_element l_cont ‘NASTObjectKEy’ nast-objky.
    swc_call_method l_object ‘ConvertKey’ l_cont.
    swc_get_element l_cont ‘BORObjectKey’ l_objkey.
    swc_set_element l_cont ‘IS_NASTKEY’ ls_nastkey.
    if l_objkey is initial.
* use unconverted key
      l_objkey = nast-objky.
    endif.
* Ereignis
    call function ‘SWE_EVENT_CREATE’
      exporting
        objtype           = nast-objtype
        objkey            = l_objkey
        event             = nast-event
        creator           = l_event_creator
      importing
        event_id          = l_eventid
      tables
        event_container   = l_cont
      exceptions
        objtype_not_found = 01.
* Ereignis konnte nicht erzeugt werden, da Objkttyp nicht gefunden
    if sy-subrc <> 0.
      clear: syst-msgid, syst-msgno, syst-msgty, syst-msgv1,
             syst-msgv2, syst-msgv3, syst-msgv4.
      syst-msgid = ‘VN’.
      syst-msgty = ‘E’.
      syst-msgno = 074.
      syst-msgv1 = t681z-oj_name.
      call function ‘NAST_PROTOCOL_UPDATE’
        exporting
          msg_arbgb              = syst-msgid
          msg_nr                 = syst-msgno
          msg_ty                 = syst-msgty
          msg_v1                 = syst-msgv1
          msg_v2                 = syst-msgv2
          msg_v3                 = syst-msgv3
          msg_v4                 = syst-msgv4
        exceptions
          message_type_not_valid = 01
          no_sy_message          = 02.
      returncode = 4.
    elseif not l_eventid is initial.
      returncode = 0.
    else.
      clear: syst-msgid, syst-msgno, syst-msgty, syst-msgv1,
             syst-msgv2, syst-msgv3, syst-msgv4.
      syst-msgid = ‘VN’.
      syst-msgty = ‘E’.
      syst-msgno = 355.
      syst-msgv1 = nast-event.
      syst-msgv2 = nast-objtype.
      call function ‘NAST_PROTOCOL_UPDATE’
        exporting
          msg_arbgb              = syst-msgid
          msg_nr                 = syst-msgno
          msg_ty                 = syst-msgty
          msg_v1                 = syst-msgv1
          msg_v2                 = syst-msgv2
          msg_v3                 = syst-msgv3
          msg_v4                 = syst-msgv4
        exceptions
          message_type_not_valid = 01
          no_sy_message          = 02.
      returncode = 4.
    endif.
  endif.
endform.
Si l’évènement est lancé alors le message est considéré comme réussi, voila donc ma méthode si le workflow ne réussi pas pour placer le message en erreur.
Pour mettre le message en erreur au cas ou le workflow ne fonctionne pas
data : ls_nast type nast,
        lt_nast type table of nast.
     call function ‘RV_MESSAGE_SELECT_SINGLE’
       exporting
         pi_nast_key            = ME->GS_NASTKEY
      IMPORTING
        PE_NAST                = ls_NAST
*     EXCEPTIONS
*       RECORD_NOT_FOUND       = 1
*       OTHERS                 = 2
               .
     append ls_nast to lt_nast.
     if sy-subrc <> 0.
* Implement suitable error handling here
     else.
       call function ‘RV_MESSAGE_SET_PROCESS_STATE’
         exporting
           msg_vstat       = ‘2’
         tables
           msg_nast        = lt_nast
*       EXCEPTIONS
*         NO_UPDATE       = 1
*         OTHERS          = 2
                 .
       if sy-subrc <> 0.
* Implement suitable error handling here
       endif.
     endif.
   endmethod.

 

Workflow Contrat de Négoce

Workflow Contrat de Négoce

Lors d’un projet d’implémentation S4H, nous avons mis en place la solution Contrat de Négoce de SAP.
Cette solution est intéressante fonctionnellement car elle permet de gérer à un seul endroit la partie vente et la partie achat.
Mais ce n’est pas de cela que je vais vous parler mais plutôt du workflow qui l’accompagne.
Il s’agit de mon premier workflow sur les contrats de négoce et j’ai voulu partager mon expérience .
Avant tout sachez qu’il existe aujourd’hui peu de documentation sur ce sujet.
Le workflow est basé sur des statuts et avec une BADI de contrôle .
Paramétrage
Il y a pour ce workflow une grosse partie de paramétrage.
Le menu pour accéder au paramétrage est WB2B_CUS
Activation des composants
Il faut commencer par activer les composants pour que le workflow soit pris en compte.
Les statuts 
L’un des gros soucis des statuts dans cette application est qu’il ne correspondent en rien a ce que l’on connait dans SD ou PS par exemple.
Il existe des Statuts Applications, Statut Système et Statut Utilisateur.
En tant que client nous nous attendons a une gestion de ces statuts dans la JEST il n’en est rien.
Les seuls statuts que nous pouvons créer sont les statuts Application.
Il existe des incompatibilités entre ces différents statuts mais elles ne sont pas documentées, il faut donc tâtonner.
Une fois ces statuts créés, il faut les regrouper et on peut indiquer si certains sont reliés a des événements workflows.

 

Statut par groupe
Première chose, il faut créer un groupe de statut, on y regroupe les statuts applicatifs.
L’événement workflow TOBERELEASED doit être assigné (ici pur A Valider).
Ce que j’ai pu remarquer c’est que si il y a une modification après validation, et que l’on souhaite relancer un workflow alors l’événement indiqué ici n’est d’aucune utilité (cela ne fonctionnait ni sur le statut applicatif K ou sur le L).
Les statuts standards doivent tous être assignés sinon il y aura une erreur.
Contrôle des statuts
 
Ce contrôle, vous permettra d’éviter des tests sans succès, dès que vous faites un changement dans les statuts, lancez le contrôle.

 

 
La BADI
 
Vous la trouverez dans le menu de paramétrage, servez vous de l’aide fournie sur le point de paramétrage pour mieux comprendre comment elle fonctionne.
 
A noter, que juste au dessus les points de paramétrage servent pour l’application FIORI, au moment ou j’écris ces lignes l’application FIORI n’est utilisable que dans ECC, nous faisions une implémentation S4H et l’application n’existe pas.
Nous avons donc créé un workflow basé sur une tâche de décision avec un lien WEB Gui sur l’objet BUS2124 joint a la tâche.

Dans cette BADI je vous invite également a vous servir de la classe

cl_wb2_wf_approval_control qui est une classe utilitaire qui vous permettra de mieux contrôler le lancement du workflow (avec la méthode

send_approve_event) .

Le workflow
 
Il existe plusieurs workflows sur l’objet BUS2124
  • WS03100022 pour la release du contrat
  • WS03100024 pour modifier le contrat
  • WS03100027  pour afficher le contrat
Aucun de ces workflows ne m’a donné satisfaction pour l’approbation des contrats.
J’ai donc opté pour faire le mien;
Les tâches
 
Avec la transaction SWDM, j’ai trouvé deux tâches inintéressantes
Ces deux tâches après une tâche de décisions sont celles qui me sont nécessaires pour une simple validation.
Seul problème la méthode ApprovalWithSuccess est une méthode d’arrière plan mais la tâche ne l’est pas.

 

Il faut donc créer votre propre tâche qui elle acceptera les traitements en arrière-plan, ne modifiez pas le standard.
Une simple copie de cette tâche suffira.
Le workflow builder
 
Le besoin client était plutôt simple, une seule validation donc le workflow est très simple.

 

Evénement déclencheur
La dernière étape pour mettre ce workflow en place… Transaction SWE2.

 

Et voilà votre workflow d’approbation sur les contrats de négoce est prêt à être lancé.

 

Evénement – Document de modification

water-drop1

Les documents de modification

Les documents de modification sont générés par les création, modification et suppression des objets de gestion (commande d’achat, utilisateurs, clients, …).

Ces documents de modification sont stockés dans les tables CDHDR et CDPOS.

cdhrd_identity

Les documents sont générés parce que certaines tables sont « surveillées ».

Prenons l’exemple ci-dessus avec l’objet IDENTITY.

Dans la transaction SCDO, nous pouvons voir quelles sont les tables sous surveillance.

scdo_identity

Pourtant, seulement certains champs génèrent un document de modification, pourquoi ?

Allons voir pour la table SUID_CD_ZBVSYS certains des champs qui la compose.

se11_suid_cd_zbvsys

Si nous prenons les composants XUBNAME et RFCRCVSYS.

Sur la tabulation Further Characteristics (Données supplémentaires)

Nous pouvons voir que le flag Change Document n’est pas coché pour XUBNAME ce qui signifie que les changements ne généreront pas de document.

xubname

Alors que la composante RFCRCVSYS a ce flag coché, et déclenchera en cas de modification un document de modification.

rfcrcvsys

RFCRCVSYS pourra donc servir pour le déclenchement d’un événement mais pas XUBNAME.

Lien entre l’événement et le document de modification

Certains liens existent livrés par SAP, vous pouvez les voir dans la transaction SWEC.

swec

Ici le document de modification EINKBELEG correspond à un document d’achat. Nous pouvons voir qu’il peut être lié avec un ou plusieurs objet de workflow (BUS2012, FREBUS2012,…) ainsi qu’à un ou plusieurs événements pour chaque objet (CHANGED, CREATED,..).

Ensuite, les dernières colonnes indiquent pour quels types de modification l’événement sera déclenchés (Création, Modification ou suppression).

Restreindre les événements à certaines modifications

Toutes les modifications ne doivent pas déclencher un workflow, certains doivent être ignorés, d’autres doivent être combinées (deux champs modifiés), d’autres doivent avoir certaines valeurs.

swec_restrict

Pour cela sélectionner, la ligne que vous souhaitez restreindre, et cliquez sur la partie gauche sur Restrictions.

Puis cliquez sur le bouton Edit. conditions.

swec_restrict1

Les champs disponibles pour les comparaisons apparaissent

swec_restrict2

Vous pouvez vous servir de l’éditeur de condition pour effectuer des comparaisons entre les anciennes valeurs (_old) et nouvelles valeurs de champs (_new).

Vous allez pouvoir les grouper, et les liées avec des opérateurs logiques (OR / AND – Not)

N’oubliez pas que le regroupement des expressions liées par un AND imposera que les deux champs soient présents dans le document de modification.

Objet de Modification et Objet de workflow

De temps en temps, le document de modification contient l’objet du workflow mais celui n’est pas l’objet lui même. Or il faut faire correspondre les clés des deux objets.

Transaction SWEC

Pour se faire, SAP permet dans la transaction SWEC l’utilisation de différents modules fonctions du cas :

swec1

Pour déterminer le type d’objet le module fonction SWE_CD_TEMPLATE_OBJTYPE_FB_2 sert de modèle.

Pour le nom de l’événement, il faudra prendre SWE_CD_TEMPLATE_EVENT_FB_2.

Pour rechercher certains paramètres et accéder au container, SWE_CD_TEMPLATE_CONTAINER_FB_2.

Transaction SWED

swed

Si il s’agit de modifier la clé de l’objet alors c’est à partir de la transaction SWED et le module fonction servant de modèle est le SWE_CD_TEMPLATE_OBJKEY_FB_2.

Plus d’expertise…

Le système utilise les zones suivantes

  • CD_OBJECTCLAS (Objet du Document de modification)
  • CD_OBJECTID (La clé du document de modification)
  • CD_CHANGENR (Le numéro du document de modification)

En inscrivant comme paramètre de l’événement ces champs ils seront accessibles dans le workflow et permettront un accès complet au document de modification.

Encore plus…

En modifiant le business Object dans le business object repository (SWO1), nous pouvons même obtenir les anciennes et nouvelles valeurs d’un champs du document de modification.

Pour cela, il faut créer un attribut de type Database Attribute il faut que la référence au champs soit identique que dans le document de modification. Puis le paramètres de l’événement doit avoir le même nom que l’attribut mais être de type multi-ligne.

Quand l’événement sera instancié, l’index 0001 sera remplie avec l’ancienne valeur, et l’index 0002 avec la nouvelle.

Autres Informations

Deux types d’objets sont utilisés aujourd’hui dans les Business Workflows :

  • BOR – Business Object (SWO1)
  • Classe – ABAP OO (SE24)

Les événements sur document de modification peuvent être lancés sur ces deux types d’objet.

Il existe une procédure assistée pour la mise en place du lien entre les documents de modifications et les événements. Il s’agit de la transaction SWU_EWCD.

En conclusion

Les documents de modification sont générés par le système, ils sont une source importante pour les workflows. Peu d’ABAPEUR connaissent l’existence de la SWEC et de ses possibilités.

Pourtant quand on sait également qu’un workflow peut déclencher un programme, cela pourrait permettre de sauver beaucoup de temps pour réagir suite à une modification.

De plus un workflow réagit tout de suite à un événement et individuellement.

Le workflow peut gérer les erreurs de traitement, les valeurs interdites.

Servez-vous des documents de modification, ils sont déjà dans le système !

 

Evénement – Message

water-drop1

Les Messages

Vous avez déjà imprimer une commande d’achat, un bon de livraison, une commande client ? Peut être l’envoyez-vous par mail  ? Ou par EDI ?

Et bien, pour faire cela vous utilisez les messages dans SAP.

Il s’agit de la transaction NACE.

Catégories de message

La première chose à faire dans la NACE est de créer la catégorie de message.

categoriemessage

SAP nous donne le programme RVNSWE01 et la routine CREATE_EVENT

Enregistrement des conditions

Dans l’enregistrement des conditions, il faut saisir 9 – Evénements (SAP Business Workflow), il n’y a pas besoin de rôle pour ce mode d’envoi.

communication0

Puis en cliquez sur le bouton communication

communication

Ici il faudra indiquer le type d’objet Workflow ainsi que l’événement que vous voulez déclencher.

Ca y est !!  Vous être prêt à déclencher vos événements.

 

Autres Informations

Deux types d’objets sont utilisés aujourd’hui dans les Business Workflows :

  • BOR – Business Object (SWO1)
  • Classe – ABAP OO (SE24)

Les événements sur message ne peuvent être lancés que sur le type d’objet Business Object (BOR).

Etre de meilleurs consultants

Aujourd’hui, je m’envole vers l’Allemagne, vers Walldorf, le siège de SAP.

C’est un voyage professionnel, mon vol et mon séjour sont payés par ma société.

Pourquoi ma société me finance ce petit voyage, plutôt que de m’envoyer chez un client où je serai facturé ?

C’est évidemment parce que CODILOG, souhaite rester à la pointe, afin de mieux conseiller ses clients et prospects que je pars assister à ce que SAP appelle un EKT [Early Knowledge Transfer]. Il s’agit de session de formation en avant première.

Pour cette session, il s’agit …. de workflow. Mais pas n’importe lesquel, il s’agit du workflow qui sera disponible sur le SCP (SAP Cloud Platform).

Ce workflow se développe en BPMN, cette norme dont je vous ai déjà parlé et en laquelle je crois beaucoup pour la description des flux.

Les objectifs de cette formation sont les suivants:

  • Comprendre et utiliser les fonctionnalités clés du SAP Cloud Platform Workflow
    Être capable de modéliser et exécuter un workflow.
  • Comprendre comment inclure des interfaces utilisateurs (Application Fiori) et comment travailler avec les tâches dans  My Inbox.
  •  Être capable de gérer les workflows

 

Voici un lien vers la page principale parlant de ces workflows fait par SAP.

En espérant pouvoir vous en dire plus rapidement….

 

 

Evénement – Changement HR master

 

water-drop1

 

Changement sur les données de base HR

Il existe trois transactions :

  • SWEHR1 – Lien entre infotype et Business Object Workflow
  • SWEHR2 – Evénement – opération sur infotype (SAP)
  • SWEHR3 – Evénement – opération sur infotype (Client)

 

Lien entre infotype et Business Object Workflow

swehr1

La première colonne représente le type d’objet HR.

L’infotype décrit une caractéristique de l’objet HR.

Le sous-type décrit une classification des informations de l’infotype.

Le type d’objet représente le type de business object workflow (BOR).

Evénement – opération sur infotype

Deux transactions, une pour le standard SAP (SWEHR2) et une pour le client (SWEHR3)

Utilisez par défaut SWEHR3, sauf si une entrée de SWEHR2 créé une incohérence.

swehr2

Le type d’opération indique le type de changement qui est fait :

  • DEL – Suppression
  • INS – Insertion (création)
  • UPD – Update (Modification)

Vous pouvez indiquer un évènement ou utlisez un module fonction pour déterminer l’évènement.

Les modules fonctions

Vous pouvez prendre un des modules fonctions livrés par SAP comme exemple.

En import de ces modules fonctions, vous aurez :

  • Le Business Object
  • L’opération
  • Une structure de type PRELP, repésentant l’infotype avant modification, et une autre représentant ce même infotype après modification.

En sortie, le module fonction renvoi l’événement.

Vous pouvez donc déterminer l’évènement en fonction de tous ces éléments.

Autres Informations

Deux types d’objets sont utilisés aujourd’hui dans les Business Workflows :

  • BOR – Business Object (SWO1)
  • Classe – ABAP OO (SE24)

Les événements sur  modification de données de base HR ne peuvent être lancés que sur les business object (BOR).

Evénement – Statut

water-drop1

Les statuts

Différentes applications utilisent les statuts systèmes et client, comme par exemple, les ordres internes, les fonds, les projets, ordres de production, inspection de qualité, ordre de maintenance … .

Ces statuts doivent être paramétrés pour que l’application fonctionne.

Ces statuts sont présents dans le système et peuvent permettre de lancer les événements du workflow.

Alors pourquoi se priver et se compliquer la vie ?

cafewaouh

Comment-faire ?

Une transaction à retenir : BSVW.

Dans cette transaction, vous devez faire le choix entre un statut client ou un statut système.

Statut Client

Si vous choisissez un statut client, SAP vous envoie dans la transaction BSVZ,

Vous devrez indiquer :

  • Type d’objet dans la gestion des statuts
  • Statut des schémas
  • Type d’objet Workflow
  • Evénement lié à l’objet du workflow

Lien Statut Client

Dans le premier écran, le lien avec l’événement est fait.

bsvw1

Statut Client Restriction

Dans le deuxième écran,  le statut utilisateur pour lequel l’événement sera déclenché est précisé. Il peut y en avoir plusieurs.

bsvw2

Statut Système

Si vous choisissez le statut système vous irez dans la transaction BSVX qui ressemble beaucoup à celle des statuts client.

Vous devrez indiquer :

  • Type d’objet dans la gestion des statuts
  • Type d’objet Workflow
  • Evénement lié à l’objet du workflow

Lien Statut Système

Dans le premier écran, le lien avec l’événement est fait, cette fois-ci sans schéma de statut.

bsvx1

Statut Système Restriction

Dans le deuxième écran,  le statut système pour lequel l’événement sera déclenché est précisé. Il peut y en avoir plusieurs.

bsvx2

 

Autres informations

Deux types d’objets sont utilisés aujourd’hui dans les Business Workflows :

  • BOR – Business Object (SWO1)
  • Classe – ABAP OO (SE24)

Les événements pour les statuts ne fonctionnent pas pour les classes, uniquement pour les business object.

Démarrer un workflow

demarrer

 

Souvent les débutants, à qui il n’est jamais donné assez de temps pour apprendre avant de réaliser,  pensent tout de suite à démarrer les workflows à l’aide de module fonction. Après tout ils sont là pour ça, non ?

Oui, mais ce n’est pas la bonne pratique ….

Pourquoi faut-il mieux le faire avec les événements ?

Imaginons, vous glissez dans votre code le module fonction, le workflow démarre impeccable .

Demain, vous souhaitez changer le workflow, humm, il va falloir soit que vous ayez bien documenté votre workflow et ne pas avoir perdu cette documentation, pour préciser ou vous avez glissé le déclenchement du workflow.

Sinon, il va vous falloir retrouver où sont appelés les différents modules fonctions qui peuvent lancer les workflows.

Cette documentation est souvent bien faite au moment du projet, mais dans 5 ou 6 ans quand il faudra changer ce workflow, qui saura ou là trouver aura-t elle été mise à jour ?

Utiliser les événements

water-drop1

Un événement n’est pas coincé avec un workflow, il peut être reliés à plusieurs, il peut terminer un workflow et en commencer un autre.

Si vous décidez de changer de workflow, alors il suffit de désactiver la liaison.

Pas besoin de retrouver le code qui lance l’événement.

Si vous décidiez de ne démarrer un workflow que si certaines conditions sont rempli (uniquement pour un type de facture, un type de document, au dessus d’un certain montant…) c’est possible avec un événement en utilisant l’éditeur de condition pour les événements déclencheurs.

Ainsi par exemple, vous pourriez avoir selon certaines conditions des workflows différents qui démarrent.

Aucun besoin de modifier le code dans la plupart des cas (si votre objet contient à les attributs nécessaires).

Si vous lanciez votre workflow directement avec les modules fonctions vous devriez coder avant chaque appel les conditions pour lancer ou non le workflow.

Dans d’autres articles, nous verrons comment trouver les événements existants pour un objets, comment en créer et comment les lancer, sans rien coder !

J’espère que cet article vous aura fait comprendre que se passer d’un événement pour lancer un workflow est un raccourci pour le très court terme qui peut vous nuire sur le moyen terme.

 

L’éditeur de condition

Machine à écrire vintage

Essentiel dans le workflow les conditions existent à plusieurs niveaux :

  1. Etape de condition
  2. Etape de condition multiple
  3. Etape d’attente de condition
  4. Etape de boucle
  5. Condition de déclenchement des événements
  6. Condition dans les restrictions des événements pour modification

Néanmoins, l’éditeur de condition, bien que puissant, n’est pas l’outil le plus facile à utiliser dans nos workflow.

Je vais essayer de partager avec vous quelques manipulations pour pouvoir faire des changements dans les conditions et vous permettre de mieux connaitre cet outil.

L’éditeur

EditeurCondition.PNG

Dans la partie haute, nous voyons que l’éditeur permet d’avoir accès au container du workflow et à toutes ses attributs/propriétés.

C’est ce que nous pourrons comparer.

Les boutons

curseur Cette icône indique où est placé le curseur. Il faut double cliquer pour passer d’une zone à une autre.

Si vous double-cliquez sur une zone du container, elle se place là ou est le curseur, une fois l’expression insérée dans le champ Express.1, le curseur va directement sur le champ Express.2 .

expression

Nous pouvons comparer des expressions à des expressions ou à des constantes.

Les opérateurs

Les opérateurs sont choisies sur la partie haute à gauche de l’écran.

conditionoperateur

Certains sont explicites d’autres un peu moins.

EX => L’expression est valide et non initiale.

NX =>L’expression est initiale ou ne contient rien.

CE => Indique qu’une table contient des enregistrements.

NE => Indique qu’une table ne contient pas d’enregistrement.

Pour lier les lignes entres elles, nous utilisons les opérateurs logiques And ou OR un supplément en début de ligne peut être le Not.

Les parenthèses

Un bon éditeur de condition doit permettre la saisie de groupe afin de pouvoir gérer les combinaison d’opération logique.

Bien évidement, SAP le permet, mais si vous ne placez pas tout de suite vos parenthèses et que vous revenez sur vos conditions, c’est ici que la manipulation n’est pas « user friendly ».

Avant-tout, placer votre curseur devant la première expression que vous souhaitez mettre entre parenthèse.

expression01

Puis marquer la ligne en utilisant l’icône selectionner l’ensemble de la ligne devient bleue.

Déplacer le curseur sur la dernière ligne que vous souhaitez inclure entre les parenthèses, en double-cliquant sur la zone.

expression02

Puis, cliquer de nouveau sur l’icône selectionner, l’ensemble du bloc est sélectionné.

Après cela cliquez sur parenthese, les parenthèses se placent autour du bloc qui était sélectionné.

expression03

Comme vous pouvez le noter, l’opérateur logique c’est déplacé de la dernière ligne du bloc sur la ligne de la parenthèse.

De la même façon, vous pourrez agir sur les blocs avec les touches copier copier, couper couper.

Ecran

Oui, l’écran est un peu petit …

Pour que cela aille mieux, vous pouvez ‘compresser’ les blocs et gagner en compréhension collapse . Une fois que c’est fini, vous pourrez de nouveau ‘ouvrir’ ces blocs expand.

Vous pouvez aussi choisir d’agrandir l’écran, pour cela il faut choisir l’option de personnalisation

bouton_personnalisation

Puis

choix

Cela fonctionne surtout pour la transaction SWEC – Evenement de modification.

Voilà j’espère que vous êtes plus à l’aise avec l’éditeur de condition du workflow.

 

L’incidence d’un Upgrade

Faire un inventaire sur le système :

Archiver.jpg

Il faudra répondre aux questions suivantes :

  • Combien de workflow avez-vous en production ?
  • Sont-ils souvent exécutés ?
  • Combien d’instances de workflow sont en erreur ?
  • Quels sont les objets spécifiques que vous avez développé ?
  • Combien d’attributs et de méthodes spécifiques ont été développés ?
  • Avez vous fait des modifications sur des objets workflow ou sur d’autres fonctions de workflow ?
  • Avez vous créé des copies de workflow standard et modifié ces copies ?

 

Tester

Testing_in_Progress

N’oubliez pas de tester avant et après upgrade les différents workflows d’en laisser en cours afin de les terminer après la fin de l’upgrade.

Archiver

Archiver1

Si possible lancer une stratégie pour archiver les workflows.

D’ailleurs pas la peine d’attendre un projet de montée de version pour lancer un archivage…

Seulement les workflows au statut « completed » ou « canceled » sont archivés.

L’archivage c’est principalement deux étapes, écrire le workflow dans un fichier d’archive puis supprimer le workflow du système.

La suppression ne veut pas dire que les informations ne sont plus lisible elles sont archivées ce qui veut dire présentent sur un autre système et lisible à partir de ce système.

A quoi cela sert-il  ? Récupérer de la place en mémoire et oui les tables du workflow grossissent très rapidement ( par exemple SWWWIHEAD, SWNCNTP0) cela permettra de rendre vos administrateurs système heureux et d’accélérer les processus.

L’objet pour archiver les workflow est « WORKITEM » , il faut bien entendu que le système soit déjà configuré pour l’archivage pour cela appuyer vous sur la note 2157048.

La transaction SWW_SARA permettra d’écrire dans les archives (le bouton Write) puis quand tout est fait supprimer les données (le bouton Delete). (Plus d’information sur le cet article de Paul Bakker )

 

Se Renseigner

information

Demander sur les communautés si d’autres utilisateurs ont déjà effectué cette montée de version et quelle difficulté ils ont pu rencontrer (la principale source le SCN ).

Leçons retenues :expertise_distance.png

Une entrée dans la SWEC créée en trop par SAP, BUS2012 pour releasestepcreated, a retirer sinon deux workflow dont un en erreur seront lancés.

Souvent les connexions RFC pose problème pensez à les vérifier.

 

 

%d blogueurs aiment cette page :