Votre Modèle de Données de Demandes d'Achat – Du Bon de Commande au Paiement
Votre Modèle de Données de Demandes d'Achat – Du Bon de Commande au Paiement
- Attributs recommandés à collecter pour une analyse détaillée
- Activités clés à suivre pour la découverte de processus
- Guide pour l'extraction des données de SAP S/4HANA
Achats au paiement – Attributs de demande d'achat
| Nom | Description | ||
|---|---|---|---|
| Heure de l'événement EventTime | La date et l'heure précises auxquelles une activité spécifique s'est produite. | ||
| Description Event Time est l'horodatage qui enregistre le moment où une activité a eu lieu. Ces données sont essentielles pour l'ordonnancement chronologique des événements au sein d'un cas et constituent la base de tous les calculs de durée et de performance en process mining. Par exemple, la différence de temps entre les événements 'Demande soumise' et 'Demande approuvée' détermine le temps de cycle d'approbation. Des horodatages précis sont essentiels pour analyser les performances des processus, identifier les retards et surveiller le respect des accords de niveau de service. Cet attribut permet des dashboards qui visualisent les temps de cycle, suivent les demandes bloquées et comparent les performances sur différentes périodes. Pourquoi c'est important Cet horodatage est essentiel pour ordonner les événements, calculer les temps de cycle et analyser la performance des processus ainsi que les goulots d'étranglement. Où obtenir Les timestamps proviennent généralement des en-têtes de documents de modification (CDHDR-UDATE, CDHDR-UTIME) ou des journaux d'événements de workflow. Exemples 2023-04-15T10:05:30Z2023-04-15T14:22:01Z2023-04-16T09:00:15Z | |||
| ID de la demande d'approvisionnement PurchaseRequisitionId | L'identifiant unique d'un document de demande d'achat. | ||
| Description L'ID de la Demande d'Achat est la clé primaire qui identifie de manière unique chaque demande de biens ou services au sein de SAP S/4HANA. Il sert d'identifiant central de cas, reliant toutes les activités et modifications liées à une demande spécifique, de sa création à son état final, comme l'approbation, le rejet ou la conversion en commande d'achat. En process mining, cet attribut est fondamental pour reconstituer le cycle de vie de bout en bout de chaque demande. En regroupant tous les événements associés sous un seul ID de Demande d'Achat, les analystes peuvent mesurer avec précision les temps de cycle, suivre les changements de statut et analyser les différents chemins qu'une demande peut emprunter à travers le processus d'approbation. Pourquoi c'est important C'est l'identifiant de cas essentiel qui relie toutes les étapes de processus connexes, permettant une vue complète et cohérente du cycle de vie de la demande. Où obtenir Cet attribut est le Numéro de Demande d'Achat, trouvé dans la table EBAN, champ BANFN. Exemples 100178901001789110017892 | |||
| Nom de l'activité ActivityName | Le nom de l'activité commerciale qui s'est produite à un point précis du processus de demande d'achat. | ||
| Description Le nom de l'activité décrit un événement ou une tâche spécifique qui a eu lieu au cours du cycle de vie d'une demande d'achat. Ces activités sont dérivées des journaux système, tels que les documents de modification et les historiques de workflow, et représentent des étapes clés du processus comme « Demande créée », « Étape d'approbation démarrée » ou « Commande d'achat créée ». L'analyse de ces activités permet la visualisation du flux de processus, l'identification des goulots d'étranglement et la mesure du temps passé dans différentes étapes. Comprendre la séquence et la fréquence d'activités comme « Demande modifiée » ou « Demande rejetée » est crucial pour identifier les inefficacités du processus et les pistes d'amélioration. Pourquoi c'est important Il définit les étapes du processus, formant l'épine dorsale de la carte de processus et permettant l'analyse du flux de processus, des variations et des goulots d'étranglement. Où obtenir C'est un attribut dérivé, généralement construit en interprétant les données des tables de documents de modification (CDHDR, CDPOS) et des journaux de workflow (par exemple, SWWLOGHIST). Exemples Demande de personnel crééeÉtape d'Approbation TerminéeDemande approuvéeCommande d'achat créée | |||
| Département Department | Le département ou centre de coûts auquel les coûts de la demande d'achat sont imputés. | ||
| Description L'attribut Département, souvent représenté par le Centre de Coût dans SAP, identifie l'unité commerciale responsable de l'achat demandé. C'est une information financière et organisationnelle critique, attribuée au niveau de la ligne de la demande. En process mining, cet attribut est essentiel pour l'analyse de la performance départementale. Il alimente les tableaux de bord qui comparent des métriques clés comme le temps de cycle, les taux de modification et les taux de rejet entre différents départements. Cela aide à identifier les départements très performants dont les pratiques pourraient être adoptées ailleurs, ainsi que ceux qui pourraient nécessiter une formation ou un soutien processuel supplémentaire. Pourquoi c'est important Permet la comparaison des performances entre les unités commerciales, mettant en évidence les variations des temps de cycle ou des taux de rejet afin d'identifier les meilleures pratiques et les domaines d'amélioration. Où obtenir C'est le Centre de Coût, généralement trouvé dans la table d'imputation EBKN, champ KOSTL. Exemples FIN-1001IT-2005MKT-3010 | |||
| ID de l'approbateur ApproverId | L'identifiant de l'utilisateur qui a effectué une étape d'approbation ou de rejet. | ||
| Description L'ID de l'approbateur identifie spécifiquement l'utilisateur qui a complété une activité d'approbation ou de rejet. Il se distingue de l'ID utilisateur général car il se concentre uniquement sur les décideurs au sein du workflow d'approbation. La capture de cette information est vitale pour analyser en détail le processus d'approbation. Cet attribut permet l'analyse du comportement d'approbation, comme l'identification des managers avec des délais d'approbation longs ou ceux qui rejettent fréquemment des demandes d'achat. Il est fondamental pour les tableaux de bord axés sur les temps de cycle des étapes d'approbation et l'analyse des goulots d'étranglement du workflow, aidant à localiser les individus ou rôles spécifiques qui pourraient causer des retards. Pourquoi c'est important Désigne le décideur spécifique d'une étape d'approbation, permettant une analyse détaillée des temps de cycle d'approbation et des goulots d'étranglement par individu ou par rôle. Où obtenir Cette information est généralement extraite des tables SAP Business Workflow comme SWW_WI2OBJ et SWWLOGHIST, qui lient les éléments de travail à l'utilisateur qui les a complétés. Exemples MJOHNSONCWILLIAMSLBLACK | |||
| ID utilisateur UserId | L'identifiant de l'utilisateur qui a créé la demande d'achat ou effectué une activité spécifique. | ||
| Description L'ID Utilisateur identifie l'employé ou l'utilisateur système responsable d'un événement particulier dans le cycle de vie de la demande d'achat. Il peut s'agir de la personne qui a créé la demande, du manager qui l'a approuvée ou de l'agent qui l'a modifiée. Dans les cas d'étapes automatisées, il peut s'agir d'un ID d'utilisateur système ou batch. L'analyse par ID Utilisateur aide à comprendre le comportement spécifique des utilisateurs, la distribution de la charge de travail et la performance. Elle est essentielle pour identifier les besoins en formation, reconnaître les individus performants et assurer la responsabilisation au sein du processus. Elle soutient également l'analyse de la performance départementale lorsqu'elle est combinée avec les données de base des utilisateurs. Pourquoi c'est important Permet l'analyse des performances des utilisateurs, de la répartition de la charge de travail et de la conformité des processus. Il est crucial pour identifier les opportunités de formation et les goulots d'étranglement en matière de ressources. Où obtenir Trouvé dans EBAN-ERNAM pour le créateur. Pour les modifications ultérieures, c'est dans CDHDR-USERNAME. Pour les approbations, c'est dans les journaux de workflow. Exemples JSMITHRROEWF-BATCH | |||
| Montant de la demande d'achat RequisitionAmount | La valeur monétaire totale de la demande d'achat. | ||
| Description Le Montant de la Demande d'Achat représente le coût total estimé des biens ou services demandés. Cette valeur est souvent un facteur clé pour déterminer la complexité et la durée du workflow d'approbation, les demandes de valeur plus élevée nécessitant généralement plus de niveaux d'approbation. L'analyse de cet attribut permet une segmentation du processus basée sur la valeur. Elle peut aider à répondre à des questions telles que : « Les demandes de grande valeur prennent-elles plus de temps à approuver ? » ou « Quelle est la valeur des demandes qui sont fréquemment rejetées ? ». C'est une dimension critique pour comprendre l'impact financier des inefficacités du processus. Pourquoi c'est important Aide à segmenter le processus par impact financier, souvent en corrélation avec la complexité d'approbation et le temps de cycle. C'est vital pour l'analyse de processus basée sur la valeur. Où obtenir La valeur totale se trouve dans la table EBAN, champ GFWERT. La valeur au niveau de l'article est dans EBAN-PREIS. Exemples 1500.0075000.50250.75 | |||
| Statut de la demande RequisitionStatus | Le statut actuel de traitement ou d'approbation de la demande d'achat. | ||
| Description Le Statut de la Demande d'Achat indique l'état actuel de la demande au sein de son cycle de vie. Dans SAP, il est souvent représenté par l'Indicateur de déblocage, qui montre si une demande est bloquée, en cours d'approbation, partiellement approuvée ou entièrement approuvée. Ce statut change à mesure que la demande progresse dans le workflow. Le suivi du statut au fil du temps est fondamental pour comprendre le flux de processus. Il aide à identifier où les demandes se bloquent et pendant combien de temps. L'analyse des transitions entre les statuts permet une vue détaillée du processus d'approbation et de ses variantes. Pourquoi c'est important Indique l'état actuel d'une demande d'achat, ce qui est essentiel pour suivre les progrès, identifier les goulots d'étranglement et analyser le flux de processus. Où obtenir Le statut de déblocage est souvent déterminé par l'Indicateur de déblocage, trouvé dans la table EBAN, champ FRGZU. Exemples B1S | |||
| Type de réquisition RequisitionType | Un code qui classe la demande d'achat, par exemple, pour les articles standards, les services ou les dépenses d'investissement. | ||
| Description Le Type de Demande d'Achat, également connu sous le nom de Type de Document dans SAP, est un champ de configuration clé qui catégorise les demandes d'achat. Différents types peuvent déclencher des workflows d'approbation différents, avoir des paramètres de champ différents et être utilisés à des fins commerciales distinctes, telles que les articles en stock standard, les services externes ou les achats d'actifs. En analysant le processus basé sur le Type de Demande d'Achat, les organisations peuvent comprendre comment les différents types de requêtes sont gérés. Cela permet de comparer les performances, les temps de cycle et les chemins d'approbation entre les catégories, ce qui peut révéler si certains types de demandes sont plus ou moins efficaces et aider à adapter les améliorations de processus. Pourquoi c'est important Catégorise les demandes d'achat pour permettre une analyse comparative, aidant à comprendre si différents types de demandes ont des flux de processus, des goulots d'étranglement ou des temps de cycle différents. Où obtenir C'est le champ Type de Document, trouvé dans la table EBAN, champ BSART. Exemples NBFORV | |||
| `Date requise` RequiredByDate | La date à laquelle le demandeur a besoin des biens ou services requis. | ||
| Description La Date Requise, ou Date de Livraison dans SAP, spécifie quand les biens ou services de la ligne de la demande d'achat sont nécessaires. Cette date est définie par le demandeur et sert d'objectif pour l'ensemble du processus d'approvisionnement. Cet attribut est essentiel pour calculer le KPI « Taux de conformité des demandes d'achat livrées à temps ». En comparant la Date Requise avec la date d'approbation finale ou de création de la commande d'achat, l'organisation peut mesurer sa capacité à respecter les niveaux de service internes et les besoins commerciaux. L'analyse des demandes qui ne respectent pas cette date peut mettre en évidence des retards systémiques dans le processus d'approvisionnement. Pourquoi c'est important Définit la date de fin cible pour une demande, permettant de mesurer la livraison à temps et le respect des niveaux de service internes. Où obtenir C'est la Date de Livraison, trouvée au niveau de l'article dans la table EBAN, champ LFDAT. Exemples 2023-11-152023-12-012024-01-20 | |||
| Dernière mise à jour des données LastDataUpdate | Le timestamp indiquant la dernière actualisation des données de cet enregistrement depuis le système source. | ||
| Description Cet attribut enregistre la date et l'heure de la plus récente extraction ou mise à jour des données du système source. C'est une pièce critique de métadonnées pour comprendre la fraîcheur des données analysées. Les analystes et les utilisateurs métier se fient à ce timestamp pour savoir si les données du processus reflètent l'état le plus actuel des opérations. Dans toute analyse de processus, connaître l'actualité des données est fondamental pour prendre des décisions éclairées. Cet attribut aide à gérer les attentes des utilisateurs et garantit que les conclusions sont tirées de données aussi à jour que nécessaire pour l'analyse spécifique. Pourquoi c'est important Indique la fraîcheur des données, ce qui est crucial pour faire confiance à l'analyse et prendre des décisions commerciales opportunes. Où obtenir Ce Exemples 2023-10-27T02:00:00Z2023-10-28T02:00:00Z | |||
| Devise Currency | Le code de la devise pour le montant de la demande d'achat. | ||
| Description Cet attribut spécifie la devise dans laquelle le montant de la demande d'achat est libellé, par exemple, USD, EUR ou JPY. Il fournit le contexte nécessaire à l'attribut Montant de la Demande d'Achat, particulièrement dans les organisations multinationales qui opèrent avec plusieurs devises. Pour une analyse financière et un reporting précis, il est essentiel de prendre en compte la devise. Lors de l'agrégation ou de la comparaison des valeurs de demande, tous les montants doivent être convertis en une devise commune pour garantir des résultats significatifs. Cet attribut est un prérequis pour de telles conversions. Pourquoi c'est important Fournit un contexte essentiel pour le montant de la demande d'achat, permettant une analyse financière précise et des comparaisons dans des environnements multi-devises. Où obtenir Ceci se trouve dans la table EBAN, champ WAERS. Exemples USDEURGBP | |||
| Est Automatisé IsAutomated | Un indicateur spécifiant si une activité a été effectuée par un utilisateur système plutôt que par un être humain. | ||
| Description L'attribut Est Automatisé est un indicateur booléen qui est vrai si une activité a été exécutée par un système ou un utilisateur batch, tel que « WF-BATCH » pour les actions de workflow. Cela permet de distinguer les étapes manuelles des étapes automatisées dans le processus. Cet attribut est essentiel pour mesurer le niveau d'automatisation dans le processus de demande d'achat et pour calculer le KPI « Taux d'approbation automatisée ». En filtrant les étapes automatisées ou manuelles, les analystes peuvent comparer leur efficacité et identifier les opportunités d'automatisation supplémentaire pour réduire les temps de traitement et l'effort manuel. Pourquoi c'est important Distingue les activités humaines des activités système, ce qui est essentiel pour mesurer les taux d'automatisation et identifier les opportunités d'automatisation des tâches manuelles. Où obtenir C'est un attribut dérivé, généralement basé sur une règle qui vérifie si l'ID utilisateur d'un événement appartient à une liste d'utilisateurs système ou batch connus. Exemples truefaux | |||
| Est un retravail IsRework | Un indicateur signalant si une activité constitue une retouche, comme une modification après soumission. | ||
| Description Is Rework (Est une retouche) est un indicateur booléen calculé qui identifie les activités représentant un travail sans valeur ajoutée ou répétitif. Un exemple courant dans ce processus est l'activité "Demande modifiée" qui se produit après que la demande a déjà été soumise pour approbation, forçant le processus d'approbation à redémarrer. Cet attribut est crucial pour quantifier le volume de retouches dans le processus et son impact sur les temps de cycle globaux. Le tableau de bord "Taux de modification et de retouche des demandes" s'appuie sur cet indicateur pour mettre en évidence les inefficacités du processus. La réduction des retouches est souvent un objectif principal des initiatives d'amélioration des processus, car elle se traduit directement par un gain de temps et d'efforts. Pourquoi c'est important Signalise les activités qui représentent un effort inutile ou une répétition, permettant la mesure directe des retouches et de leur impact sur l'efficacité du processus. Où obtenir C'est un attribut calculé. La logique signalerait généralement comme retravail toute activité « Demande modifiée » survenant après la première activité « Demande soumise à approbation ». Exemples truefaux | |||
| Heure de fin EndTime | La date et l'heure précises auxquelles une activité spécifique a été achevée. | ||
| Description EndTime est l'horodatage qui enregistre la fin d'une activité. Alors que de nombreux événements générés par le système sont instantanés (ce qui signifie que StartTime est égal à EndTime), les tâches humaines comme les approbations peuvent avoir un début et une fin distincts. Cet horodatage marque l'achèvement de ce travail. Avoir un EndTime séparé permet une mesure plus précise du temps de traitement actif par rapport au temps d'attente inactif. Il est utilisé conjointement avec StartTime pour calculer la métrique ProcessingTime. Ce niveau de détail améliore l'analyse de l'utilisation des ressources et de l'efficacité pour les tâches manuelles. Pourquoi c'est important Marque l'achèvement d'une activité, permettant le calcul du temps de traitement actif et offrant une vue plus détaillée de la durée de la tâche. Où obtenir Ceci est dérivé des journaux de workflow qui peuvent capturer à la fois la date et l'heure de création d'un élément de travail (StartTime) et sa date et heure d'achèvement (EndTime). Exemples 2023-04-15T10:20:30Z2023-04-15T14:25:01Z2023-04-16T11:00:45Z | |||
| Motif de refus RejectionReason | La raison fournie lorsqu'une demande d'achat est rejetée. | ||
| Description La Raison du Rejet explique pourquoi un approbateur a décidé de rejeter une demande d'achat. Les raisons peuvent inclure un dépassement de budget, des informations incorrectes, une non-conformité à la politique ou la duplication d'une autre demande. Cette information fournit un contexte crucial pour comprendre les échecs du processus. L'analyse des raisons de rejet aide à identifier les causes profondes des inefficacités du processus et du retravail. Par exemple, si « Centre de Coût Incorrect » est une raison courante, cela indique un besoin d'amélioration de la formation des utilisateurs ou de la validation du système. Cet attribut est la clé du tableau de bord d'Analyse des Rejets de Demandes et est vital pour une amélioration ciblée des processus. Pourquoi c'est important Fournit la cause première des échecs de processus, permettant des améliorations ciblées pour réduire les retouches et augmenter le taux de "juste du premier coup" des demandes. Où obtenir Ce n'est souvent pas un champ standard. Il peut être capturé dans des éléments de conteneur de workflow, du texte long associé à la demande ou des champs personnalisés. Exemples Dépasse le budgetFournisseur incorrectDemande en double | |||
| Niveau d'urgence UrgencyLevel | Une classification de l'urgence de la demande d'achat, qui peut influencer sa priorité de traitement. | ||
| Description Le Niveau d'Urgence indique la priorité de la demande d'achat. Bien qu'il ne s'agisse pas d'un champ standard dédié, certaines organisations utilisent des champs comme le Numéro de Suivi des Besoins pour capturer cette information. Cela permet aux demandeurs de signaler les besoins critiques qui peuvent nécessiter un traitement accéléré. L'analyse de l'impact de l'urgence est importante pour évaluer si le processus priorise efficacement les demandes critiques. Le tableau de bord d'Analyse d'Impact du Niveau d'Urgence utilise cet attribut pour comparer les temps de cycle et les taux d'approbation des demandes urgentes par rapport aux demandes standard, aidant ainsi à déterminer si la gestion des priorités fonctionne comme prévu. Pourquoi c'est important Permet d'analyser comment la performance du processus diffère pour les demandes de haute priorité, aidant à valider si les articles urgents sont réellement traités plus rapidement. Où obtenir Il n'existe pas de champ d'urgence standard. Certaines entreprises utilisent le Numéro de Suivi des Besoins (EBAN-BEDAR) à cette fin. Il peut également s'agir d'un champ personnalisé. Exemples ÉlevéMoyenFaible | |||
| Nom de l'étape d'approbation ApprovalStepName | Le nom ou la description spécifique d'une étape d'approbation dans le workflow. | ||
| Description Le nom de l'étape d'approbation offre une description lisible par l'homme d'une étape particulière du workflow d'approbation, telle que « Approbation du Responsable » ou « Approbation du VP Finance ». Ceci est plus descriptif qu'une activité générique telle que « Étape d'approbation terminée ». Cet attribut est essentiel pour les tableaux de bord d'analyse du temps de cycle des étapes d'approbation et des goulots d'étranglement du workflow. Il permet une vue granulaire du processus d'approbation, rendant possible d'identifier précisément quelles étapes d'approbation sont à l'origine des délais les plus significatifs et où le travail s'accumule. Ce niveau de détail est nécessaire pour des interventions ciblées visant à rationaliser la chaîne d'approbation. Pourquoi c'est important Fournit des détails granulaires sur les étapes d'approbation, permettant une identification précise des goulots d'étranglement au sein du workflow d'approbation multi-niveaux. Où obtenir Cette information est dérivée de la description de la tâche de workflow, qui peut être trouvée en liant le journal de workflow aux tables de définition des tâches comme T528T. Exemples Approbation du responsableApprobation du directeurApprobation du VP Finances | |||
| Numéro de commande d'achat PurchaseOrderNumber | Le numéro de la commande d'achat qui a été créée à partir de la demande d'achat. | ||
| Description Le Numéro de la Commande d'Achat est l'identifiant du document d'achat officiel créé à partir d'une demande d'achat approuvée. La création d'une commande d'achat est souvent l'aboutissement final et réussi d'une demande, signifiant que la requête a été convertie en une commande formelle auprès d'un fournisseur. Cet attribut est crucial pour mesurer le KPI « Délai de la Demande à la Commande d'Achat » et le taux de conversion global. Il relie le processus de demande au processus d'approvisionnement en aval, permettant une vue plus large et de bout en bout de l'ensemble du cycle Purchase-to-Pay. Pourquoi c'est important Lie la demande d'achat au document d'approvisionnement ultérieur, permettant la mesure du taux de conversion demande-commande d'achat et du délai. Où obtenir Trouvé dans la table EBAN, champ EBELN, une fois qu'une commande d'achat (PO) a été créée à partir de l'article de demande d'achat. Exemples 450001789045000178914500017892 | |||
| Système source SourceSystem | Identifie l'instance SAP S/4HANA spécifique à partir de laquelle les données ont été extraites. | ||
| Description L'attribut Système Source indique le système d'origine où les données de processus ont été générées. Dans les organisations avec plusieurs instances SAP, telles que des systèmes différents pour le développement, l'assurance qualité et la production, ou des systèmes distincts pour différentes régions, ce champ est crucial pour la gouvernance des données et le contexte. Il garantit que les données provenant de différentes sources peuvent être distinguées, évitant ainsi une agrégation incorrecte et permettant une analyse spécifique au système. C'est un attribut obligatoire pour maintenir la lignée des données et assurer la traçabilité des données de processus. Pourquoi c'est important Fournit un contexte essentiel pour l'origine et la gouvernance des données, en particulier dans les environnements multi-systèmes, assurant la traçabilité des données. Où obtenir Ceci est typiquement l'ID Système SAP (SID), qui peut être récupéré à partir des variables système ou des tables de configuration. Exemples S4PECCS4H_PROD_01 | |||
| Temps de traitement ProcessingTime | La durée du temps passé sur une activité spécifique. | ||
| Description Le Processing Time (Temps de traitement) mesure le temps qu'il a fallu pour accomplir une seule activité. Il est calculé comme la différence entre l'heure de fin et l'heure de début d'un événement. Pour de nombreux événements dans SAP, les heures de début et de fin sont les mêmes, ce qui donne un temps de traitement nul. Cependant, pour les étapes d'approbation, il peut représenter le temps qu'un approbateur a passé à travailler sur la tâche. Cette métrique calculée est utile pour comprendre l'effort impliqué dans les différentes étapes du processus. Elle peut aider à distinguer le temps d'attente d'un cas (wait time) du temps où il est activement traité (processing time), offrant une vue plus nuancée de la performance du processus. Pourquoi c'est important Mesure le temps de travail actif pour une activité, aidant à distinguer le temps passé à travailler du temps passé à attendre, ce qui est essentiel pour l'analyse des ressources. Où obtenir C'est un attribut calculé, généralement dérivé en soustrayant StartTime de EndTime pour chaque événement dans le journal d'événements. Exemples PT15MPT2H30MP1D | |||
Achats au paiement – Activités de demande d'achat
| Activité | Description | ||
|---|---|---|---|
| Commande d'achat créée | Indique qu'une commande d'achat a été générée en référence à l'article de demande d'achat. Il s'agit d'un événement système explicite qui relie la demande d'achat à un document d'approvisionnement ultérieur. | ||
| Pourquoi c'est important C'est un jalon majeur et un résultat réussi pour le processus de demande d'achat. Le temps entre l'approbation de la demande et la création de la commande d'achat est un KPI critique pour mesurer l'efficacité des approvisionnements. Où obtenir Enregistré explicitement lors de la création d'un article de commande d'achat. Le lien est stocké dans la table EKPO (Article de commande d'achat), qui contient le numéro de demande d'achat source (BANFN) et le numéro d'article (BNFPO). Capture Joignez la table EKPO à la table EBAN sur le numéro et l'article de la demande d'achat. La date de création de l'article de commande d'achat marque l'événement. Type d'événement explicit | |||
| Demande approuvée | Marque l'approbation finale et complète de la demande d'achat, la rendant éligible à la conversion en commande d'achat. Ce jalon est inféré lorsque le statut de déblocage global atteint son état final approuvé. | ||
| Pourquoi c'est important C'est un jalon de succès critique et un point final commun pour l'analyse du temps de cycle. Il signifie que la demande a passé toutes les vérifications et est prête pour que le service des achats puisse agir. Où obtenir Inférente d'un changement de statut dans la table EBAN, spécifiquement lorsque l'indicateur de déblocage global (FRGZU) ou le statut de traitement (PROCSTAT) est mis à jour à une valeur finale 'Approuvé'. Capture Identifiez l'horodatage lorsque le code de déblocage final est appliqué ou que le statut global de la demande d'achat passe à 'Approuvée'. Type d'événement inferred | |||
| Demande clôturée | Indique que l'article de demande d'achat est considéré comme entièrement traité et qu'aucune autre commande d'achat ne peut être créée à partir de celui-ci. Ce statut est généralement défini automatiquement une fois que la quantité totale a été commandée. | ||
| Pourquoi c'est important Cette activité représente l'achèvement final et réussi du cycle de vie de l'article de la demande. Elle confirme que le besoin commercial a été entièrement traduit en commande d'approvisionnement. Où obtenir Inférente de la table EBAN. Cela se produit lorsque l'indicateur 'Closed' (EBAKZ) est défini, ce qui se produit généralement lorsque la quantité commandée dans les commandes d'achat est égale à la quantité de la demande. Capture Identifiez l'événement où l'indicateur 'Closed' (EBAKZ) est défini dans la table EBAN via les documents de modification. Type d'événement inferred | |||
| Demande de personnel créée | Marque la création initiale du document de demande d'achat dans le système. Cet événement est capturé explicitement lorsqu'un utilisateur enregistre une nouvelle demande pour la première fois, en enregistrant l'horodatage de la création. | ||
| Pourquoi c'est important Cette activité sert de point de départ principal pour l'analyse du cycle de vie de la demande. Elle est essentielle pour mesurer le temps de cycle de bout en bout, de l'identification initiale du besoin à l'approbation finale ou à la conversion en commande d'achat. Où obtenir C'est un événement explicite capturé à partir de la table EBAN, utilisant les champs de date (ERDAT) et d'heure (ERZEIT) de création pour le numéro de demande d'achat spécifique (BANFN). Capture Utiliser les champs de date et heure de création (ERDAT, ERZEIT) de la table EBAN pour chaque demande d'achat (BANFN). Type d'événement explicit | |||
| Demande rejetée | Représente le rejet final de la demande d'achat par un approbateur, interrompant le processus. Ceci est capturé par une mise à jour de statut spécifique indiquant le rejet. | ||
| Pourquoi c'est important Cette activité est un point d'échec critique. Analyser la fréquence des rejets, leurs raisons et les points du processus aide à identifier les problèmes de conformité à la politique, de budget ou de qualité de la demande. Où obtenir Inférente d'un changement de statut dans la table EBAN. Le statut de traitement (PROCSTAT) ou un indicateur de déblocage est défini à une valeur signifiant explicitement 'Rejeté'. Capture Identifiez l'horodatage lorsque le statut global dans EBAN est mis à jour vers un état 'Rejeté' via les documents de modification. Type d'événement inferred | |||
| Étape d'Approbation Terminée | Se produit lorsqu'un approbateur prend une action positive sur une demande d'achat, complétant une étape du workflow d'approbation multi-niveaux. Cela est inféré d'un changement dans le statut de déblocage de la demande. | ||
| Pourquoi c'est important Cette activité permet une analyse détaillée du workflow d'approbation, mesurant le temps passé à chaque étape individuelle. Elle aide à identifier les approbateurs efficaces par rapport aux goulots d'étranglement du processus. Où obtenir Inférente des documents de modification (CDHDR/CDPOS) pour la table EBAN. Une modification du statut du code de déblocage (par exemple, dans le champ FRGZU) de non-débloqué à débloqué pour un code spécifique signifie cet événement. Capture Suivre les modifications des champs de statut de déblocage dans EBAN pour chaque code de déblocage défini dans la stratégie. Type d'événement inferred | |||
| Approbation réinitialisée | Représente un événement où l'ensemble du workflow d'approbation est réinitialisé, souvent en raison d'une modification significative de la demande d'achat. Cela force le processus d'approbation à redémarrer depuis le premier niveau. | ||
| Pourquoi c'est important Cette activité met en évidence un retravail significatif qui impacte sévèrement le temps de cycle. Identifier les causes des réinitialisations d'approbation est essentiel pour rationaliser le processus et réduire les retards. Où obtenir Inférente des documents de modification (CDHDR/CDPOS) sur la table EBAN. Cet événement est détecté lorsque les champs de statut de déblocage (comme FRGKZ ou FRGZU) sont effacés après avoir été partiellement ou entièrement définis. Capture Recherchez un changement de statut de déblocage d'un état débloqué vers un état non débloqué dans les journaux de modifications. Type d'événement inferred | |||
| Demande d'achat soumise à approbation | Représente le moment où le demandeur soumet formellement la demande d'achat, déclenchant le workflow d'approbation. Cela est généralement inféré lorsque la stratégie de déblocage de la demande est déterminée et que le statut passe à 'En approbation'. | ||
| Pourquoi c'est important C'est un jalon critique qui déclenche le calcul des KPIs de temps de cycle d'approbation. Analyser le temps entre la création et la soumission peut révéler des retards dans la phase de préparation de la demande. Où obtenir Inférente des documents de modification (CDHDR/CDPOS) pour la table EBAN, spécifiquement lorsque les champs de stratégie de déblocage (par exemple, FRGST) sont renseignés ou que le statut global (PROCSTAT) change pour refléter un état d'approbation en cours. Capture Identifiez la première entrée de document de modification qui indique le début du workflow d'approbation ou un changement de statut vers 'En approbation'. Type d'événement inferred | |||
| Demande modifiée | Se produit lorsqu'un utilisateur modifie un champ clé de la demande d'achat après sa création initiale, comme la quantité, le prix ou le matériel. Cette action est explicitement enregistrée dans le système de documents de modification de SAP. | ||
| Pourquoi c'est important Le suivi des modifications est crucial pour identifier les boucles de retravail et leur impact sur les temps de cycle. Une fréquence élevée de modifications suggère des problèmes de qualité des données ou des exigences changeantes, qui sont des domaines clés pour l'amélioration des processus. Où obtenir Enregistré explicitement dans les tables de documents de modification SAP (CDHDR et CDPOS) pour les modifications apportées à la table EBAN. Chaque modification d'un champ suivi crée une entrée. Capture Extrayez les événements de modification de CDHDR/CDPOS où la classe d'objet est BANF pour les demandes d'achat. Type d'événement explicit | |||
| Demande retirée | Se produit lorsque le demandeur initial annule ou supprime la demande d'achat avant qu'elle ne soit entièrement traitée. Il s'agit généralement d'une action explicite qui définit un indicateur de suppression sur l'article de la demande. | ||
| Pourquoi c'est important Le suivi des retraits aide à comprendre la volatilité de la demande et les raisons d'annulation. Il représente un état terminal pour la demande d'achat, empêchant tout traitement ultérieur. Où obtenir Capturé explicitement lorsque le champ indicateur de suppression (LOEKZ) dans la table EBAN est défini pour un article de demande d'achat. La modification est enregistrée dans CDHDR/CDPOS. Capture Identifiez l'événement où l'indicateur de suppression (LOEKZ) dans la table EBAN est défini sur 'L'. Type d'événement explicit | |||
| Étape d'approbation démarrée | Indique qu'une demande d'achat est en attente d'action de la part d'un approbateur ou d'un groupe d'approbation spécifique. Cela est déduit lorsque le statut de la demande indique qu'elle est en attente d'un code de déblocage spécifique. | ||
| Pourquoi c'est important Cette activité est essentielle pour identifier les goulots d'étranglement dans la chaîne d'approbation. L'analyse de la durée de cet état aide à repérer les demandes bloquées et les approbateurs surchargés. Où obtenir Inférente des champs de statut de déblocage de la table EBAN (par exemple, FRGZU) et de la configuration de la stratégie de déblocage sous-jacente. L'événement commence lorsqu'un code de déblocage spécifique devient le prochain à être traité. Capture Déterminez quand une demande d'achat entre dans un état où un code de déblocage spécifique est en attente d'approbation, basé sur les journaux de workflow ou les champs de statut. Type d'événement inferred | |||
| Source d'approvisionnement attribuée | Représente l'action d'un acheteur attribuant un fournisseur, un contrat ou une fiche info spécifique à un article de demande d'achat approuvé. C'est une étape clé dans la préparation de la demande pour la création d'une commande d'achat. | ||
| Pourquoi c'est important Cette activité fait le lien entre l'approbation et la commande. Mesurer le temps nécessaire pour attribuer une source aide à identifier les retards dans la charge de travail de l'acheteur et l'efficacité de l'approvisionnement. Où obtenir Inférente d'une valeur saisie dans les champs liés à la source d'approvisionnement dans la table EBAN, tels que le fournisseur fixe (LIFNR), la fiche info (INFNR) ou le contrat (KONNR). Capture Suivre le remplissage des champs comme LIFNR, INFNR ou KONNR dans la table EBAN via les documents de modification. Type d'événement inferred | |||
Guides d'extraction
Étapes
- Prérequis: Assurez-vous de disposer d'un utilisateur avec les autorisations appropriées dans SAP S/4HANA pour accéder aux vues CDS requises. Cela implique généralement des permissions pour des objets tels que S_TABU_NAM et un accès aux outils d'affichage des données.
- Identifier la méthode d'accès au système: Déterminez comment vous vous connecterez à la base de données SAP S/4HANA pour exécuter des requêtes SQL. Les outils courants incluent SAP HANA Studio, l'IDE Eclipse avec ADT (ABAP Development Tools), ou des clients SQL tiers comme DBeaver pouvant se connecter via le client de base de données SAP HANA.
- Examiner la requête SQL: Familiarisez-vous avec le script SQL fourni. Il utilise des expressions de table communes (CTE) pour collecter des données pour différentes activités et les unit pour créer un journal d'événements unifié.
- Personnaliser les placeholders: Localisez et remplacez les placeholders dans la requête. Vous devrez définir la plage de dates (format
[YYYY-MM-DD]) pour la période d'extraction et spécifier les codes de société pertinents ([Your Company Code]) pour votre organisation. - Exécuter la requête: Exécutez la requête SQL complète et personnalisée sur la base de données SAP S/4HANA. Selon le volume de données et la plage de dates sélectionnée, cette requête peut prendre un certain temps à s'exécuter.
- Examen initial des données: Une fois la requête terminée, examinez les premières lignes du résultat. Vérifiez que toutes les colonnes, telles que PurchaseRequisitionId, ActivityName et EventTime, sont renseignées comme prévu et que les formats de données sont corrects.
- Transformation des données: La requête fournie est conçue pour produire des données dans un format prêt pour le process mining. Les fonctions
CASTetCONCATsont utilisées pour garantir la cohérence des types de données. Aucune transformation majeure post-exécution ne devrait être requise. - Exporter le journal d'événements: Exportez l'ensemble du jeu de résultats de votre client SQL vers un fichier CSV. Assurez-vous que l'encodage du fichier est défini sur UTF-8 pour éviter les problèmes de caractères.
- Préparer le téléchargement: Avant de télécharger vers un outil de process mining, vérifiez que le fichier CSV a les bons en-têtes (
PurchaseRequisitionId,ActivityName,EventTime, etc.) et que le format de date et d'heure pourEventTimeest cohérent et pris en charge par la plateforme cible. - Télécharger sur ProcessMind: Téléchargez le fichier CSV final dans votre projet ProcessMind. Configurez le projet en mappant
PurchaseRequisitionIdcomme ID de cas,ActivityNamecomme Activité etEventTimecomme Horodatage.
Configuration
- Vues CDS principales: L'extraction utilise principalement
I_PurchaseRequisitionAPI01pour les données de base de la demande d'achat,I_ChangeDocumentetI_ChangeDocumentItempour le suivi des modifications et des mises à jour de statut, ainsi queI_PurchaseOrderItemAPI01pour le lien vers les commandes d'achat. - Autorisation: L'utilisateur exécutant la requête doit disposer d'un accès en lecture aux vues CDS mentionnées. Veuillez consulter votre équipe de sécurité SAP pour obtenir les rôles et autorisations nécessaires.
- Filtrage par plage de dates: Il est crucial d'appliquer un filtre de plage de dates sur la date de création de la demande d'achat (
CreationDate) afin de limiter le volume de données. Une plage de 3 à 6 mois de données est recommandée pour une analyse initiale. - Filtrage organisationnel: Filtrez les données par
CompanyCodepour vous assurer d'analyser le processus pour la bonne entité commerciale. Vous pouvez également envisager de filtrer parPurchaseRequisitionTypepour vous concentrer sur des processus d'approvisionnement spécifiques, par exemple, les biens standards par rapport aux services. - Configuration des documents de modification: La capture d'activités telles que 'Demande modifiée' et diverses étapes d'approbation dépend de l'activation de l'enregistrement des documents de modification pour les champs pertinents dans votre système SAP. Si ces événements sont manquants, vérifiez la configuration du système pour la table EBAN.
- Performance: Pour les systèmes très volumineux comportant des millions de demandes d'achat, l'exécution de cette requête sur une longue période peut avoir un impact sur les performances du système. Envisagez de l'exécuter pendant les heures creuses ou dans un environnement de non-production avec des données récemment rafraîchies.
a Exemple de requête sql
WITH REQUISITIONS AS (
SELECT
PurchaseRequisition,
PurchaseRequisitionType,
PurReqnDescription,
CreatedByUser,
CreationDate,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS CreationTimestamp,
SourceOfSupplyIsAssigned
FROM I_PurchaseRequisitionAPI01
WHERE CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
AND CompanyCode IN ('[Your Company Code]')
),
CHANGE_DOCS AS (
SELECT
ObjectValue AS PurchaseRequisition,
UserName,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS ChangeTimestamp,
FieldName,
ValueNew,
ValueOld
FROM I_ChangeDocument AS H
JOIN I_ChangeDocumentItem AS I
ON H.ChangeDocument = I.ChangeDocument
WHERE H.Objectclass = 'EINKBELEG'
AND H.CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
)
-- 1. Requisition Created
SELECT
R.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Created' AS "ActivityName",
R.CreationTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM REQUISITIONS AS R
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON R.PurchaseRequisition = I.PurchaseRequisition
UNION ALL
-- 2. Requisition Submitted For Approval & 5. Approval Step Started
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
CASE
WHEN C.ValueOld = ''
THEN 'Requisition Submitted For Approval'
ELSE 'Approval Step Started'
END AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R
ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew != ''
UNION ALL
-- 3. Requisition Amended
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Amended' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('MENGE', 'PREIS', 'MATNR', 'LIFNR', 'INFNR')
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 4. Approval Reset
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Reset' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueOld != '' AND C.ValueNew = ''
UNION ALL
-- 6. Approval Step Completed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Step Completed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew IN ('1', '2', '3', '4', '5', '6', '7') -- Adjust release codes as per your config
UNION ALL
-- 7. Requisition Approved
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Approved' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGKE' AND C.ValueNew = '2' -- Final release indicator '2' is common for approved
UNION ALL
-- 8. Requisition Rejected
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Rejected' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew = 'B' -- 'B' for Blocked/Rejected is a common setting
UNION ALL
-- 9. Requisition Withdrawn
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Withdrawn' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'LOEKZ' AND C.ValueNew = 'X'
UNION ALL
-- 10. Source of Supply Assigned
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Source of Supply Assigned' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('LIFNR', 'INFNR') AND C.ValueNew != ''
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 11. Purchase Order Created
SELECT DISTINCT
I.PurchaseRequisition AS "PurchaseRequisitionId",
'Purchase Order Created' AS "ActivityName",
CAST(CONCAT(H.PurchaseOrderDate, 'T', LPAD(H.CreationTime, 6, '0')) AS TIMESTAMP) AS "EventTime",
H.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.OrderPriceUnit * I.OrderQuantity AS "RequisitionAmount",
'PO Created' AS "RequisitionStatus"
FROM I_PurchaseOrderItemAPI01 AS I
JOIN I_PurchaseOrderAPI01 AS H
ON I.PurchaseOrder = H.PurchaseOrder
JOIN REQUISITIONS AS R
ON I.PurchaseRequisition = R.PurchaseRequisition
WHERE I.PurchaseRequisition IS NOT NULL AND I.PurchaseRequisition != ''
UNION ALL
-- 12. Requisition Closed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Closed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'EBAKZ' AND C.ValueNew = 'X' Étapes
- Prérequis: Assurez-vous de disposer d'un utilisateur avec les autorisations appropriées dans SAP S/4HANA pour accéder aux vues CDS requises. Cela implique généralement des permissions pour des objets tels que S_TABU_NAM et un accès aux outils d'affichage des données.
- Identifier la méthode d'accès au système: Déterminez comment vous vous connecterez à la base de données SAP S/4HANA pour exécuter des requêtes SQL. Les outils courants incluent SAP HANA Studio, l'IDE Eclipse avec ADT (ABAP Development Tools), ou des clients SQL tiers comme DBeaver pouvant se connecter via le client de base de données SAP HANA.
- Examiner la requête SQL: Familiarisez-vous avec le script SQL fourni. Il utilise des expressions de table communes (CTE) pour collecter des données pour différentes activités et les unit pour créer un journal d'événements unifié.
- Personnaliser les placeholders: Localisez et remplacez les placeholders dans la requête. Vous devrez définir la plage de dates (format
[YYYY-MM-DD]) pour la période d'extraction et spécifier les codes de société pertinents ([Your Company Code]) pour votre organisation. - Exécuter la requête: Exécutez la requête SQL complète et personnalisée sur la base de données SAP S/4HANA. Selon le volume de données et la plage de dates sélectionnée, cette requête peut prendre un certain temps à s'exécuter.
- Examen initial des données: Une fois la requête terminée, examinez les premières lignes du résultat. Vérifiez que toutes les colonnes, telles que PurchaseRequisitionId, ActivityName et EventTime, sont renseignées comme prévu et que les formats de données sont corrects.
- Transformation des données: La requête fournie est conçue pour produire des données dans un format prêt pour le process mining. Les fonctions
CASTetCONCATsont utilisées pour garantir la cohérence des types de données. Aucune transformation majeure post-exécution ne devrait être requise. - Exporter le journal d'événements: Exportez l'ensemble du jeu de résultats de votre client SQL vers un fichier CSV. Assurez-vous que l'encodage du fichier est défini sur UTF-8 pour éviter les problèmes de caractères.
- Préparer le téléchargement: Avant de télécharger vers un outil de process mining, vérifiez que le fichier CSV a les bons en-têtes (
PurchaseRequisitionId,ActivityName,EventTime, etc.) et que le format de date et d'heure pourEventTimeest cohérent et pris en charge par la plateforme cible. - Télécharger sur ProcessMind: Téléchargez le fichier CSV final dans votre projet ProcessMind. Configurez le projet en mappant
PurchaseRequisitionIdcomme ID de cas,ActivityNamecomme Activité etEventTimecomme Horodatage.
Configuration
- Vues CDS principales: L'extraction utilise principalement
I_PurchaseRequisitionAPI01pour les données de base de la demande d'achat,I_ChangeDocumentetI_ChangeDocumentItempour le suivi des modifications et des mises à jour de statut, ainsi queI_PurchaseOrderItemAPI01pour le lien vers les commandes d'achat. - Autorisation: L'utilisateur exécutant la requête doit disposer d'un accès en lecture aux vues CDS mentionnées. Veuillez consulter votre équipe de sécurité SAP pour obtenir les rôles et autorisations nécessaires.
- Filtrage par plage de dates: Il est crucial d'appliquer un filtre de plage de dates sur la date de création de la demande d'achat (
CreationDate) afin de limiter le volume de données. Une plage de 3 à 6 mois de données est recommandée pour une analyse initiale. - Filtrage organisationnel: Filtrez les données par
CompanyCodepour vous assurer d'analyser le processus pour la bonne entité commerciale. Vous pouvez également envisager de filtrer parPurchaseRequisitionTypepour vous concentrer sur des processus d'approvisionnement spécifiques, par exemple, les biens standards par rapport aux services. - Configuration des documents de modification: La capture d'activités telles que 'Demande modifiée' et diverses étapes d'approbation dépend de l'activation de l'enregistrement des documents de modification pour les champs pertinents dans votre système SAP. Si ces événements sont manquants, vérifiez la configuration du système pour la table EBAN.
- Performance: Pour les systèmes très volumineux comportant des millions de demandes d'achat, l'exécution de cette requête sur une longue période peut avoir un impact sur les performances du système. Envisagez de l'exécuter pendant les heures creuses ou dans un environnement de non-production avec des données récemment rafraîchies.
a Exemple de requête sql
WITH REQUISITIONS AS (
SELECT
PurchaseRequisition,
PurchaseRequisitionType,
PurReqnDescription,
CreatedByUser,
CreationDate,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS CreationTimestamp,
SourceOfSupplyIsAssigned
FROM I_PurchaseRequisitionAPI01
WHERE CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
AND CompanyCode IN ('[Your Company Code]')
),
CHANGE_DOCS AS (
SELECT
ObjectValue AS PurchaseRequisition,
UserName,
CAST(CONCAT(CreationDate, 'T', LPAD(CreationTime, 6, '0')) AS TIMESTAMP) AS ChangeTimestamp,
FieldName,
ValueNew,
ValueOld
FROM I_ChangeDocument AS H
JOIN I_ChangeDocumentItem AS I
ON H.ChangeDocument = I.ChangeDocument
WHERE H.Objectclass = 'EINKBELEG'
AND H.CreationDate BETWEEN '[YYYY-MM-DD]' AND '[YYYY-MM-DD]'
)
-- 1. Requisition Created
SELECT
R.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Created' AS "ActivityName",
R.CreationTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM REQUISITIONS AS R
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON R.PurchaseRequisition = I.PurchaseRequisition
UNION ALL
-- 2. Requisition Submitted For Approval & 5. Approval Step Started
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
CASE
WHEN C.ValueOld = ''
THEN 'Requisition Submitted For Approval'
ELSE 'Approval Step Started'
END AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
R.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R
ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I
ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew != ''
UNION ALL
-- 3. Requisition Amended
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Amended' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('MENGE', 'PREIS', 'MATNR', 'LIFNR', 'INFNR')
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 4. Approval Reset
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Reset' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueOld != '' AND C.ValueNew = ''
UNION ALL
-- 6. Approval Step Completed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Approval Step Completed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew IN ('1', '2', '3', '4', '5', '6', '7') -- Adjust release codes as per your config
UNION ALL
-- 7. Requisition Approved
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Approved' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGKE' AND C.ValueNew = '2' -- Final release indicator '2' is common for approved
UNION ALL
-- 8. Requisition Rejected
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Rejected' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
NULL AS "UserId",
C.UserName AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'FRGZU' AND C.ValueNew = 'B' -- 'B' for Blocked/Rejected is a common setting
UNION ALL
-- 9. Requisition Withdrawn
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Withdrawn' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'LOEKZ' AND C.ValueNew = 'X'
UNION ALL
-- 10. Source of Supply Assigned
SELECT DISTINCT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Source of Supply Assigned' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName IN ('LIFNR', 'INFNR') AND C.ValueNew != ''
AND C.ChangeTimestamp > R.CreationTimestamp
UNION ALL
-- 11. Purchase Order Created
SELECT DISTINCT
I.PurchaseRequisition AS "PurchaseRequisitionId",
'Purchase Order Created' AS "ActivityName",
CAST(CONCAT(H.PurchaseOrderDate, 'T', LPAD(H.CreationTime, 6, '0')) AS TIMESTAMP) AS "EventTime",
H.CreatedByUser AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.OrderPriceUnit * I.OrderQuantity AS "RequisitionAmount",
'PO Created' AS "RequisitionStatus"
FROM I_PurchaseOrderItemAPI01 AS I
JOIN I_PurchaseOrderAPI01 AS H
ON I.PurchaseOrder = H.PurchaseOrder
JOIN REQUISITIONS AS R
ON I.PurchaseRequisition = R.PurchaseRequisition
WHERE I.PurchaseRequisition IS NOT NULL AND I.PurchaseRequisition != ''
UNION ALL
-- 12. Requisition Closed
SELECT
C.PurchaseRequisition AS "PurchaseRequisitionId",
'Requisition Closed' AS "ActivityName",
C.ChangeTimestamp AS "EventTime",
C.UserName AS "UserId",
NULL AS "ApproverId",
R.PurchaseRequisitionType AS "RequisitionType",
I.CostCenter AS "Department",
I.RequisitionPrice * I.RequestedQuantity AS "RequisitionAmount",
I.PurReqnProcessingStatus AS "RequisitionStatus"
FROM CHANGE_DOCS AS C
JOIN REQUISITIONS AS R ON C.PurchaseRequisition = R.PurchaseRequisition
JOIN I_PurchaseRequisitionItemAPI01 AS I ON C.PurchaseRequisition = I.PurchaseRequisition
WHERE C.FieldName = 'EBAKZ' AND C.ValueNew = 'X'