Votre modèle de données pour la planification de la production
Votre modèle de données pour la planification de la production
- Attributs recommandés pour l'analyse de la planification de production
- Activités clés de planification de production à suivre
- Guide détaillé d'extraction des données pour SAP S/4HANA
Attributs de la planification de la production
| Nom | Description | ||
|---|---|---|---|
| Activité Activity | Nom de l'événement ou de la tâche spécifique survenu à un moment donné dans le processus de planification de la production. | ||
| Description Cet attribut enregistre les différentes étapes et les jalons du cycle de vie de l'ordre de production. Il peut notamment s'agir de « Production Order Created », « Material Availability Checked », « Production Started » et « Order Financially Closed ». Chaque activité correspond à une action précise ou à un changement de statut enregistré dans le système. L'analyse de la séquence et de la fréquence de ces activités constitue le cœur du Process Mining. Elle permet de visualiser le flux du processus, de repérer les écarts par rapport à la procédure standard et d'identifier les activités qui provoquent des retards ou nécessitent des reprises fréquentes, comme « Production Plan Adjusted ». Pourquoi c’est important Il définit les étapes du processus et permet ainsi de découvrir et de visualiser le flux de travail réel de la production ainsi que ses variations. Où les obtenir Dérivé des changements de statut enregistrés dans des tables telles que JEST et JCDS, des codes de transaction utilisés, par exemple CO01 pour la création, ou de certains enregistrements de confirmation dans AFRU. Exemples Ordre de production crééOrdre de production lancéProduction démarréeConfirmation finale saisieEntrée de marchandises enregistrée | |||
| Heure de début StartTime | Horodatage indiquant le début d'une activité ou d'un événement précis. | ||
| Description Cet attribut fournit la date et l'heure de chaque événement enregistré dans le processus de production. Il constitue la base temporelle de toutes les analyses de processus fondées sur le temps. L'heure de début est essentielle pour calculer la durée entre les activités, mesurer le temps de cycle total d'un ordre de production et comprendre la chronologie des événements. Elle permet d'analyser les goulots d'étranglement, les temps d'attente et le respect du planning en comparant les horodatages réels aux dates prévues. Pourquoi c’est important Il fournit le contexte chronologique de tous les événements et permet ainsi d'analyser la performance du processus, les durées et les goulots d'étranglement. Où les obtenir Ces informations se trouvent généralement dans les tables de documents de modification (CDHDR/CDPOS) pour les changements de statut, dans les tables de confirmation (AFRU) pour les étapes d'exécution et dans les tables d'en-tête (AFKO) pour les dates de création. Exemples 2023-10-26T09:00:00Z2023-10-26T14:30:00Z2023-10-27T08:15:00Z | |||
| Ordre de production ProductionOrder | Identifiant unique d'un ordre de production, utilisé comme identifiant principal du cas pour le processus de planification de la production. | ||
| Description Le numéro de l'ordre de production est une clé unique générée par SAP S/4HANA pour gérer et suivre toutes les activités liées à la fabrication d'une quantité donnée d'un produit. Il relie l'ensemble des événements associés, de la planification et de la libération jusqu'à l'exécution et au règlement final. Dans le Process Mining, cet attribut est essentiel pour regrouper tous les événements associés au sein d'une même instance de processus, de bout en bout. L'analyse par ordre de production permet de mesurer des indicateurs clés tels que le temps de cycle, le respect du planning et les goulots d'étranglement qui affectent certaines séries de production. Pourquoi c’est important Il s'agit de l'attribut fondamental qui relie toutes les étapes du processus et permet d'analyser intégralement le cycle de vie de la production, au niveau du cas, du début à la fin. Où les obtenir Il s'agit du numéro de l'ordre de production, généralement présent dans des tables SAP telles que AFKO (champ AUFNR) et AFPO. Exemples 100056710008341001299 | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage indiquant la dernière actualisation ou extraction des données depuis le système source. | ||
| Description Cet attribut enregistre la date et l'heure de la dernière extraction des données. Il s'agit d'un élément essentiel des métadonnées, qui informe les utilisateurs de l'actualité des données analysées. La connaissance de l'heure de la dernière mise à jour est indispensable pour interpréter correctement l'analyse. Elle permet de déterminer si les informations consultées sont en temps réel ou correspondent à un instant précis, ce qui influe sur la pertinence des résultats et des décisions prises à partir des données. Pourquoi c’est important Il permet aux utilisateurs de connaître l'actualité des données, un élément essentiel pour prendre des décisions métier précises et pertinentes. Où les obtenir Cet horodatage est généré et ajouté lors du processus d'extraction, de transformation et de chargement (ETL) des données. Exemples 2024-05-21T02:00:00Z2024-05-22T02:00:00Z2024-05-23T02:00:00Z | |||
| Système source SourceSystem | Système à partir duquel les données de planification de la production ont été extraites. | ||
| Description Cet attribut identifie l'origine des données, ce qui est essentiel dans les environnements comprenant plusieurs systèmes intégrés. Pour ce processus, il s'agit généralement de l'instance SAP S/4HANA concernée. Dans un contexte d'analyse de données plus large, la connaissance du système source contribue à garantir l'intégrité des données et à fournir le contexte approprié lors de la fusion de données provenant de différentes sources. Il s'agit d'un élément fondamental des métadonnées nécessaires à la gouvernance et à la traçabilité des données. Pourquoi c’est important Il fournit les métadonnées nécessaires à la gouvernance des données et garantit que l'origine et le contexte des données du processus sont clairement établis. Où les obtenir Il s'agit généralement d'une valeur statique ajoutée lors de l'extraction des données afin d'identifier le client SAP S/4HANA et l'identifiant système (SID). Exemples S4P_100S4H_PRD_200S4Q_300 | |||
| Date de fin planifiée PlannedEndDate | Date d'achèvement prévue pour l'ordre de production selon le plan initial. | ||
| Description La date de fin planifiée est la date cible à laquelle toutes les activités de production d'un ordre doivent être terminées. Elle est définie lors de la phase de planification de la production. Cet attribut est essentiel pour mesurer le respect du planning. En comparant la date de fin planifiée à l'horodatage réel d'achèvement, les organisations peuvent calculer le KPI de respect du planning de production et identifier les ordres en retard. Cette analyse est importante pour améliorer la précision de la planification et la satisfaction client. Pourquoi c’est important Elle sert de référence pour mesurer le respect du planning et évaluer la précision de la planification ainsi que l'efficacité de l'exécution. Où les obtenir Présente dans la table d'en-tête de l'ordre de production AFKO (champ GLTRP). Exemples 2023-11-152023-12-012024-01-20 | |||
| Numéro de matériel MaterialNumber | Identifiant unique du produit fabriqué dans le cadre de l'ordre de production. | ||
| Description Le numéro de matériel désigne l'article que l'ordre de production doit fabriquer. Il relie le processus de production aux données de référence du matériel, notamment à sa nomenclature (BOM) et à ses informations de gamme. L'analyse du processus par numéro de matériel permet de déterminer si certains produits sont davantage exposés aux retards, aux reprises ou aux pénuries de matériel. Elle permet ainsi d'optimiser le processus pour chaque produit, par exemple en ajustant les paramètres de planification ou en améliorant la chaîne d'approvisionnement de certains composants. Pourquoi c’est important Il permet de filtrer et d'analyser le processus en fonction du produit fabriqué, afin de révéler les inefficacités ou les goulots d'étranglement propres à certains produits. Où les obtenir Présent dans la table des postes de l'ordre de production AFPO (champ MATNR). Exemples RM-1001FG-2050SA-3100-B | |||
| Poste de travail WorkCenter | Machine, groupe de machines ou zone d'assemblage précis responsable d'une opération. | ||
| Description Un poste de travail représente une unité opérationnelle précise au sein d'un site, où une étape de production est réalisée. Il peut s'agir d'une machine, d'une ligne de production ou d'un groupe de collaborateurs. L'analyse des données du processus par poste de travail est essentielle pour identifier les goulots d'étranglement liés à la capacité et optimiser l'affectation des Ressources. Elle permet de déterminer quels postes sont surchargés ou sous-utilisés et où les retards surviennent le plus souvent pendant la phase d'exécution de la production. Ces informations sont indispensables au Dashboard d'identification des goulots d'étranglement liés à la capacité. Pourquoi c’est important Il permet d'identifier les machines ou les lignes de production qui constituent des goulots d'étranglement et de cibler les améliorations de capacité et d'utilisation des Ressources. Où les obtenir Présent dans les données d'opération d'un ordre de production, dans la table AFVC (champ ARBPL). Exemples WC-ASSEMBLY-01WC-MILLING-05WC-PACKING | |||
| Site de production Plant | Installation ou lieu de fabrication où l'ordre de production est exécuté. | ||
| Description Le site de production est une unité organisationnelle de SAP qui représente un site ou une installation de production. Chaque ordre de production est affecté à un site précis, où les activités de fabrication sont réalisées. Cet attribut est essentiel pour comparer différents sites de fabrication. En segmentant les données du processus par site de production, les organisations peuvent comparer leurs performances, repérer les problèmes ou les bonnes pratiques propres à chaque site et comprendre les variations régionales en matière d'efficacité, de capacité ou de respect des normes. Pourquoi c’est important Il permet de comparer les performances de différents sites de production, afin d'identifier et de partager les bonnes pratiques ou de traiter les problèmes propres à chaque site. Où les obtenir Présent dans la table d'en-tête de l'ordre de production AFKO (champ DWERK). Exemples 100017102000 | |||
| Statut de l'ordre OrderStatus | Statut actuel de traitement de l'ordre de production, par exemple Créé, Libéré ou Clôturé techniquement. | ||
| Description Le statut de l'ordre indique l'étape globale du cycle de vie de l'ordre de production. Il synthétise les différents statuts système et utilisateur appliqués à l'ordre. Les statuts courants comprennent CRTD (Créé), REL (Libéré), CNF (Confirmé), TECO (Clôturé techniquement) et CLSD (Clôturé). L'analyse du statut actuel des ordres permet de comprendre la situation des travaux en cours. Dans le Process Mining, le suivi des transitions entre ces statuts au fil du temps génère le journal d'activités et fournit une vue détaillée du flux du processus ainsi que du temps passé à chaque étape. Pourquoi c’est important Il fournit une vue d'ensemble de l'étape du cycle de vie de l'ordre et constitue un élément fondamental pour déduire la séquence des activités du Process Mining. Où les obtenir Dérivé du statut système enregistré dans la table JEST, associé au numéro d'objet présent dans AFKO (champ OBJNR). Exemples CRTDRELTECOCLSD | |||
| Avec reprise IsRework | Indicateur précisant si un ordre de production a fait l'objet d'une reprise ou d'ajustements importants du plan après son démarrage. | ||
| Description Cet attribut booléen est calculé pour identifier les ordres de production ayant fait l'objet d'actions correctives ou de modifications du plan alors que la production avait déjà commencé. Il peut être déclenché par une activité explicite de reprise ou par un événement « Production Plan Adjusted » survenu après « Production Started ». Cet indicateur est essentiel pour calculer le KPI de taux de reprise en production et alimenter le Dashboard des reprises et révisions de production. Il permet de filtrer et d'analyser facilement les cas problématiques afin d'identifier les causes profondes des problèmes de qualité ou des écarts de processus qui entraînent des reprises coûteuses. Pourquoi c’est important Il isole les cas ayant fait l'objet d'une reprise et permet d'analyser précisément les problèmes de qualité, les écarts de processus et les coûts associés afin de les réduire. Où les obtenir Champ calculé. Défini sur true si une activité « Production Plan Adjusted » survient après une activité « Production Started » dans le même cas, ou si un type d'ordre spécifique de reprise est utilisé. Exemples truefalse | |||
| Dans les délais IsOnTime | Indicateur précisant si l'ordre de production a été terminé à la date de fin planifiée ou avant celle-ci. | ||
| Description Cet attribut booléen calculé mesure directement le respect du planning en comparant la date réelle d'achèvement à la date de fin planifiée. Il fournit un résultat binaire clair pour évaluer le respect des délais de chaque ordre de production. Cet attribut constitue la base du KPI de taux de respect du planning de production. Il simplifie l'analyse en permettant de distinguer facilement les ordres terminés dans les délais des ordres en retard et d'identifier les caractéristiques ou les parcours associés aux retards. Pourquoi c’est important Il fournit une mesure claire et simple du respect du planning pour chaque ordre et facilite l'analyse des causes profondes des retards. Où les obtenir Champ calculé. Défini sur true si l'horodatage de l'activité « Order Technically Completed » est inférieur ou égal à l'attribut « Planned End Date ». Exemples truefalse | |||
| Date de début planifiée PlannedStartDate | Date de début prévue pour l'ordre de production selon le plan initial. | ||
| Description La date de début planifiée est la date cible à laquelle les activités de production d'un ordre doivent commencer. Elle constitue un résultat essentiel du processus de planification. Cet attribut fournit la référence initiale pour analyser le respect du planning. La comparaison entre la date de début planifiée et l'heure de début réelle permet de comprendre les retards en amont, notamment ceux liés à la préparation des matériaux ou à la libération de l'ordre, qui peuvent se répercuter sur l'ensemble du calendrier de production. Pourquoi c’est important Elle fournit une référence pour mesurer le respect de l'heure de début et identifier les retards survenant lors des étapes précédant la production, comme la libération de l'ordre et la disponibilité des matériaux. Où les obtenir Présente dans la table d'en-tête de l'ordre de production AFKO (champ GSTRP). Exemples 2023-11-102023-11-252024-01-15 | |||
| Heure de fin EndTime | Horodatage indiquant la fin d'une activité ou d'un événement précis. | ||
| Description Cet attribut fournit la date et l'heure de fin de chaque événement enregistré. Il complète l'heure de début pour définir la durée des activités. L'heure de fin est essentielle pour calculer avec précision le temps de traitement de chaque activité, une donnée importante pour analyser la capacité et l'utilisation des Ressources. Elle permet de distinguer le temps de travail effectif des périodes d'inactivité ou d'attente et d'identifier plus précisément les goulots d'étranglement. Pourquoi c’est important Il permet de calculer précisément la durée des activités, ce qui est essentiel pour analyser l'efficacité des Ressources et identifier les goulots d'étranglement du processus. Où les obtenir Présent dans les tables de confirmation (AFRU) pour les étapes d'exécution. Pour les autres événements, il peut être identique à l'heure de début si l'événement est instantané. Exemples 2023-10-26T09:45:00Z2023-10-26T15:00:00Z2023-10-27T10:30:00Z | |||
| Priorité de production ProductionPriority | Code ou valeur attribué à un ordre de production pour indiquer son degré d'urgence ou d'importance. | ||
| Description La priorité de production est utilisée par les planificateurs pour ordonnancer et prioriser les ordres, notamment lorsque les Ressources sont limitées. En principe, un ordre prioritaire doit être traité avant un ordre de priorité moindre. L'analyse de cet attribut permet de vérifier si les priorités définies sont respectées dans l'atelier. Le Dashboard de cohérence des priorités de production compare la séquence de traitement à la priorité attribuée afin d'identifier les incohérences. Il contribue ainsi à améliorer la discipline de planification et l'alignement entre planification et exécution. Pourquoi c’est important Il permet de vérifier si la planification de la production respecte les priorités métier et si les ordres importants sont traités en urgence comme prévu. Où les obtenir Il s'agit souvent d'un champ personnalisé ou d'une valeur fondée sur d'autres paramètres de l'ordre. Son emplacement précis dépend de la configuration. Exemples ÉlevéMoyenFaible15 | |||
| Quantité confirmée TotalConfirmedQuantity | Quantité totale de matériel confirmée comme produite pour l'ordre. | ||
| Description Cet attribut représente la quantité cumulée de produits finis ou semi-finis déclarée au moyen des confirmations de production. Il permet de suivre l'avancement de l'ordre par rapport à son objectif de production. La comparaison entre la quantité confirmée et la quantité planifiée permet de suivre l'avancement de la production et d'identifier les problèmes de rendement ou les écarts. Il s'agit d'une mesure fondamentale de la production, utilisée dans plusieurs calculs de performance, notamment le taux de rebut et l'efficacité. Pourquoi c’est important Il suit la production réelle de l'ordre et est essentiel pour surveiller l'avancement, calculer le rendement et identifier les écarts. Où les obtenir Agrégée à partir des enregistrements de confirmation dans AFRU (champ LMNGA pour la quantité produite). Exemples 9801000501200 | |||
| Statut de disponibilité des matériaux MaterialAvailabilityStatus | Indique si tous les matériaux nécessaires à l'ordre de production sont disponibles. | ||
| Description Ce statut reflète le résultat du contrôle de disponibilité des matériaux effectué pour un ordre de production. Il peut indiquer que tous les matériaux sont disponibles, que certains manquent ou que le contrôle n'a pas encore été effectué. Le statut « shortage » constitue un signal important de retards potentiels. Cet attribut est essentiel au Dashboard d'analyse de l'impact des pénuries de matériaux. Il permet de quantifier les retards dus à l'indisponibilité des matériaux en mettant en relation un statut de pénurie avec le délai entre la libération de l'ordre et le début de la production. L'amélioration de cet indicateur contribue à rendre le flux de production plus régulier. Pourquoi c’est important Il explique directement les retards entre la libération de l'ordre et le début de la production et permet de quantifier l'impact des problèmes de chaîne d'approvisionnement sur la fabrication. Où les obtenir Il s'agit d'un statut, souvent dérivé du statut collectif des composants matériels. Il peut être présent dans le statut système (JEST), avec des statuts tels que « MSPT » (pénurie de matériaux). Exemples DisponiblePénurieNon vérifié | |||
| Type d'ordre OrderType | Classification de l'ordre de production qui en définit la finalité et contrôle son traitement. | ||
| Description Le type d'ordre est un élément de configuration essentiel de SAP PP. Il détermine la manière dont le système traite un ordre de production et contrôle les plages de numéros, la sélection des données de référence, les paramètres de calcul des coûts et les règles de règlement. Il peut notamment s'agir d'un ordre de production standard, d'un ordre de reprise ou d'un ordre de prototype. L'analyse du processus par type d'ordre permet de comparer les performances et le déroulement de différents types de production. Elle peut révéler, par exemple, que les ordres de reprise prennent beaucoup plus de temps ou que certains types d'ordre nécessitent plus souvent des ajustements de planification, ce qui fournit des éléments utiles pour améliorer précisément le processus. Pourquoi c’est important Il permet de segmenter l'analyse selon la finalité métier de l'ordre et de comparer la production standard, les reprises et les autres processus. Où les obtenir Présent dans la table d'en-tête de l'ordre de production AFKO (champ AUART). Exemples PP01PP03ZP01 | |||
| Utilisateur User | Identifiant système de l'utilisateur qui a créé, modifié ou confirmé un événement lié à un ordre de production. | ||
| Description Cet attribut enregistre l'identifiant utilisateur SAP associé à une transaction ou à un changement de statut précis, par exemple la libération d'un ordre ou la saisie d'une confirmation. Il assure la traçabilité des actions réalisées dans le système. L'analyse des activités par utilisateur permet de comprendre la répartition de la charge de travail, d'identifier les besoins de formation et de vérifier le respect des procédures. Elle peut notamment révéler si certains utilisateurs interviennent fréquemment dans les ajustements de plan ou si des retards sont associés à certaines équipes. Pourquoi c’est important Il garantit la responsabilité des actions et permet d'analyser la charge de travail, les comportements propres à chaque utilisateur et les besoins éventuels de formation. Où les obtenir Généralement présent dans les en-têtes des documents de modification (CDHDR, champ UNAME) ou dans les enregistrements de confirmation (AFRU, champ PERNR pour le numéro de personnel). Exemples CB9980000021JSMITHPLANNER01 | |||
Activités de planification de la production
| Activité | Description | ||
|---|---|---|---|
| Confirmation finale saisie | Cette activité marque la confirmation de la dernière opération de la gamme de l’ordre de production. Elle indique que toutes les étapes de fabrication prévues ont été achevées dans l’atelier. | ||
| Pourquoi c’est important La confirmation finale constitue une étape clé qui indique la fin du travail de production physique. Elle sert souvent de point de fin plus précis pour mesurer le temps de cycle dans l’atelier, avant la réception finale des marchandises. Où les obtenir Déduite des données de confirmation de la table AFRU, elle correspond à l’enregistrement de confirmation de la dernière séquence d’opérations (AFVC-VPLNR) dont l’indicateur « confirmation finale » (AFRUD-AUERU) est activé. Collecte Trouvez la dernière confirmation d’opération dans AFRU dont l’indicateur de confirmation finale est activé. Type d’événement inferred | |||
| Entrée de marchandises enregistrée | Cet événement enregistre la réception du produit fini depuis la ligne de production vers le stock. Il augmente officiellement le niveau de stock du matériau produit. | ||
| Pourquoi c’est important Il s’agit d’une étape clé qui représente l’achèvement de la production. Elle est souvent considérée comme la fin du cycle de production pour mesurer les livraisons dans les délais et le délai global. Où les obtenir Il s’agit d’une écriture financière explicite enregistrée dans les tables de documents de matériaux MSEG (niveau poste) et MKPF (niveau en-tête), généralement avec le type de mouvement 101. Ces documents sont liés à l’ordre de production. Collecte Trouvez dans MSEG le document de matériau lié à l’ordre et associé au type de mouvement 101. Type d’événement explicit | |||
| Ordre de production créé | Il s’agit de la création initiale de l’ordre de production dans le système. Cet ordre constitue la demande officielle de fabrication d’une quantité déterminée d’un produit. L’événement est enregistré explicitement lorsqu’un utilisateur sauvegarde un nouvel ordre et lui attribue le statut initial CRTD (Created). | ||
| Pourquoi c’est important Marque le début du cycle de vie de l’ordre de production. L’analyse du temps écoulé entre la création et le lancement permet d’identifier les retards administratifs ou de planification avant la programmation officielle de la production. Où les obtenir Cet événement est enregistré dans la table AUFK (données de base de l’ordre) avec la date de création (ERDAT). Le statut de création (CRTD) est consigné dans les tables JEST et JCDS, liées par le numéro d’objet de l’ordre (OBJNR). Collecte Horodatage provenant de AUFK-ERDAT ou du journal de changement de statut vers « CRTD » dans JCDS. Type d’événement explicit | |||
| Ordre de production lancé | Il s’agit d’une étape clé au cours de laquelle l’ordre de production est approuvé et rendu disponible pour exécution dans l’atelier. Le lancement permet de commencer les sorties de marchandises, les confirmations et les autres étapes d’exécution. | ||
| Pourquoi c’est important Cet événement marque le début officiel du processus de production exécutable et constitue un point essentiel pour mesurer les délais. Le temps écoulé entre la création et le lancement est un KPI important de l’efficacité de la phase de préproduction. Où les obtenir Le lancement est déclenché explicitement par un utilisateur ou un job système et entraîne l’attribution du statut REL. Ce changement de statut est enregistré avec un horodatage dans la table JCDS. La date de lancement est également souvent stockée dans AFKO-FTRMI. Collecte Horodatage du changement de statut vers « REL » dans la table JCDS. Type d’événement inferred | |||
| Ordre techniquement terminé | Il s’agit d’une étape de clôture administrative qui empêche toute modification logistique ultérieure de l’ordre, notamment les mouvements de marchandises ou les confirmations. L’ordre est considéré comme terminé du point de vue logistique. | ||
| Pourquoi c’est important TECO constitue le point final définitif du processus de production et est essentiel au calcul du temps de cycle total de l’ordre de production. Il indique que toutes les activités logistiques sont terminées et que l’ordre est prêt pour le règlement financier. Où les obtenir Cet événement est déclenché lorsqu’un utilisateur attribue à l’ordre le statut TECO (Technically Completed). Il est enregistré comme un changement de statut dans la table JCDS, avec l’horodatage correspondant. Collecte Horodatage du changement de statut vers « TECO » dans la table JCDS. Type d’événement inferred | |||
| Plan de production ajusté | Représente une modification importante apportée à l’ordre de production après son lancement, par exemple un changement de quantité, de dates ou de nomenclature. Cette modification est identifiée par l’analyse des documents de changement. | ||
| Pourquoi c’est important Des ajustements fréquents peuvent indiquer une instabilité de la planification ou une demande volatile. Cette activité constitue la base du KPI de taux de révision du plan de production et aide à identifier les sources de variabilité du processus. Où les obtenir Déduit des journaux de changements enregistrés dans les tables CDHDR (en-tête du document de changement) et CDPOS (postes du document de changement) pour l’objet ordre de production (AUFK ou AFPO). Les changements effectués après la date de lancement sont considérés comme des ajustements. Collecte Identifiez les changements apportés dans CDHDR/CDPOS aux champs clés, par exemple la quantité ou les dates, après l’événement de lancement. Type d’événement inferred | |||
| Production démarrée | Indique le début des activités de production physique pour l’ordre. Cet événement est généralement déduit de la première confirmation dans l’atelier ou de la première sortie de composants enregistrée pour l’ordre. | ||
| Pourquoi c’est important Cette activité marque le passage de la planification à l’exécution. Elle est essentielle au suivi du respect du calendrier, en comparant la date réelle de début à la date planifiée. Où les obtenir Il s’agit d’un événement déduit. Il est généralement déterminé à partir de l’horodatage le plus ancien d’un mouvement de marchandises (table MSEG, type de mouvement 261) ou d’une confirmation de temps (table AFRU) associé à l’ordre. Collecte Horodatage le plus ancien provenant de AFRU (confirmations) ou de MSEG (mouvements de marchandises) pour l’ordre. Type d’événement inferred | |||
| Arrêt imprévu survenu | Cet événement calculé représente une période d’inactivité importante pendant la phase d’exécution de la production. Il ne s’agit pas d’un événement explicite du système, mais d’un événement déduit à partir de longs intervalles entre des confirmations de production consécutives. | ||
| Pourquoi c’est important Aide à surveiller les perturbations imprévues, telles que les pannes de machines ou les problèmes de qualité. L’identification des arrêts fréquents ou prolongés est essentielle pour améliorer la stabilité de l’atelier et le débit de production. Où les obtenir Cet événement est calculé en analysant les horodatages d’activités « Confirmation de production saisie » consécutives dans la table AFRU. Un intervalle supérieur à un seuil prédéfini est signalé comme un arrêt imprévu. Collecte Calculez la différence de temps entre les horodatages de confirmations consécutives (AFRU-BUDAT/UZEIT). Type d’événement calculated | |||
| Besoins en capacité planifiés | Cette activité consiste à planifier les opérations de l’ordre de production et à vérifier la disponibilité de la capacité dans les postes de travail requis. Le système évalue la charge des postes de travail et la répartit si cette fonction est configurée, afin de déterminer les dates de production. | ||
| Pourquoi c’est important Cette étape est essentielle pour garantir un calendrier de production réalisable. L’analyse de sa durée et de ses résultats aide à identifier les goulots d’étranglement liés à la capacité et à améliorer la précision de la planification des Ressources. Où les obtenir Cette activité est généralement déduite du statut système indiquant que l’ordre a été planifié, par exemple SETC (Scheduling carried out). Le renseignement des dates de début et de fin planifiées (AUFK-GSTRP, AUFK-GLTRP) indique également que l’activité est terminée. Collecte Déduit du renseignement des dates planifiées dans AUFK/AFKO ou de la présence d’un statut lié à la planification dans JEST. Type d’événement inferred | |||
| Confirmation de production saisie | Représente l’enregistrement de l’avancement d’une opération donnée de l’ordre de production. Cela comprend la saisie des quantités produites, des rebuts et du temps passé sur un poste de travail. | ||
| Pourquoi c’est important Les confirmations offrent une visibilité en temps réel sur l’avancement dans l’atelier et sont indispensables au suivi du statut de la production. L’analyse de leur fréquence et de leur calendrier aide à surveiller le flux et à identifier les retards entre les opérations. Où les obtenir Chaque confirmation est enregistrée explicitement comme une entrée dans la table AFRU (confirmations d’achèvement des ordres), avec un horodatage (BUDAT, UZEIT) et les informations relatives à l’opération. Collecte Enregistrée comme un document dans la table AFRU. Type d’événement explicit | |||
| Disponibilité des matériaux vérifiée | Représente l’action du système ou d’un utilisateur consistant à vérifier que tous les composants requis pour l’ordre de production sont disponibles dans les quantités nécessaires et au moment prévu. Il s’agit généralement d’un contrôle automatique effectué lors de la création ou du lancement de l’ordre, ou d’un contrôle manuel qui met à jour son statut. | ||
| Pourquoi c’est important L’identification précoce des pénuries de matériaux est essentielle à une planification proactive. Le suivi de cette activité permet de comprendre comment la disponibilité des matériaux influence la capacité à lancer les ordres et à démarrer la production dans les délais. Où les obtenir Déduit du statut de l’ordre. Un statut tel que MACM (Material committed) ou une modification de la date de disponibilité des matériaux (AFKO-MSERF) indique qu’un contrôle a été effectué. L’absence du statut de pénurie de matériaux (MSPT) peut également indiquer que les matériaux sont disponibles. Collecte Déduit des changements de statut liés à l’engagement des matériaux ou à l’exécution de la transaction COMAC. Type d’événement inferred | |||
| Ordre clôturé financièrement | Il s’agit de l’étape finale de clôture, au cours de laquelle l’ordre est soldé et aucune nouvelle écriture financière n’est possible. Elle marque la fin du cycle de vie de l’ordre du point de vue du contrôle de gestion et de la comptabilité. | ||
| Pourquoi c’est important Bien qu’elle soit souvent en dehors du périmètre d’une analyse purement orientée production, cette activité offre une vision complète de bout en bout. Elle peut aider à analyser le temps écoulé entre l’achèvement logistique (TECO) et la clôture financière. Où les obtenir Cet événement est déclenché lorsqu’un utilisateur attribue à l’ordre le statut CLSD (Closed). Il est enregistré comme un changement de statut dans la table JCDS, avec l’horodatage correspondant. Collecte Horodatage du changement de statut vers « CLSD » dans la table JCDS. Type d’événement inferred | |||
| Ordre de production annulé | Représente l’annulation d’un ordre de production avant son achèvement. Il s’agit d’un état final alternatif et défavorable du processus. | ||
| Pourquoi c’est important L’analyse des ordres annulés peut révéler des problèmes de planification de la demande, de données de base ou de processus commercial. Un taux d’annulation élevé peut indiquer des problèmes systémiques qui nécessitent une intervention. Où les obtenir Cet événement est déduit de l’activation du statut système CACL (Cancellation) dans la table JCDS. Un indicateur de suppression (AUFK-LOEKZ) peut également signaler une annulation. Collecte Horodatage du changement de statut vers « CACL » dans JCDS ou activation de l’indicateur de suppression dans AUFK. Type d’événement inferred | |||
| Pénurie de matériaux survenue | Cet événement indique que le processus de production a été perturbé ou interrompu en raison de l’indisponibilité d’un ou de plusieurs composants requis. Le système attribue un statut spécifique à l’ordre pour le signaler. | ||
| Pourquoi c’est important Le suivi des pénuries de matériaux est essentiel à l’analyse de leur impact. Il aide à quantifier les retards causés par les problèmes de chaîne d’approvisionnement et à améliorer la planification des matériaux. Où les obtenir Cet événement est déduit de l’activation du statut « MSPT » (Material shortage) pour l’ordre de production. L’horodatage de ce changement de statut se trouve dans la table JCDS. Collecte Horodatage du changement de statut vers « MSPT » dans la table JCDS. Type d’événement inferred | |||
Guides d'extraction
Étapes
- Vérification des prérequis : assurez-vous de disposer d’un utilisateur SAP S/4HANA doté des autorisations nécessaires pour accéder aux vues Core Data Services (CDS) requises. Ces vues comprennent
I_ProductionOrder,I_ProdOrdConfirmation,I_MaterialDocumentItem,I_ObjectStatusetI_ChangeDocument. Vous devez également disposer d’un environnement d’exécution SQL connecté à la base de données SAP HANA, tel que SAP HANA Studio, DBeaver ou un outil ETL externe. - Identifier les détails du système : notez l’identifiant du système source que vous utiliserez pour l’attribut
SourceSystem. Il s’agit d’un nom logique que vous définissez pour identifier l’origine des données, par exempleS4H_PROD. - Définir les paramètres d’extraction : avant d’exécuter la requête, définissez les paramètres clés. Il s’agit notamment des dates de début et de fin de la période d’extraction, ainsi que de filtres spécifiques tels que
PlantouProductionOrderTypepour limiter le périmètre des données. - Préparer la requête SQL : copiez la requête SQL complète fournie dans la section
querydans le client SQL ou l’outil d’extraction de données de votre choix. - Configurer les paramètres substituables : remplacez les valeurs correspondantes dans la requête par vos paramètres. Il s’agit notamment de
_StartDate,_EndDateet de l’identifiant du système source. Ajustez le seuil de l’événementUnplanned Halt Occurred(par exemple,'24:00:00') en fonction de votre contexte métier. - Exécuter la requête d’extraction : exécutez le script SQL configuré sur la base de données du système SAP S/4HANA. Pour les volumes importants couvrant une longue période, envisagez d’effectuer l’extraction par lots plus petits, par exemple mois par mois, afin d’éviter les problèmes de performance.
- Effectuer une première vérification des données : une fois la requête exécutée, examinez rapidement le résultat. Vérifiez le nombre de lignes, assurez-vous que toutes les colonnes sont présentes et confirmez que la colonne
Activitécontient plusieurs événements attendus. - Valider les données : suivez les étapes indiquées dans la section
validationStepspour effectuer une validation plus approfondie. Comparez quelques ordres de production avec leurs détails dans le système SAP à l’aide de la transactionCO03afin de confirmer l’exactitude du journal d’événements extrait. - Exporter au format CSV : exportez le jeu de résultats final dans un fichier CSV. Vérifiez que l’encodage du fichier est UTF-8 afin d’éviter les problèmes de caractères.
- Préparer l’importation : confirmez que les en-têtes des colonnes CSV correspondent aux noms d’attributs requis :
ProductionOrder,Activité,StartTime,SourceSystemetLastDataUpdate. Vérifiez que la colonneStartTimeutilise un format d’horodatage standard, tel que le format ISO 8601 (YYYY-MM-DDTHH:MM:SS), avant d’importer le fichier dans l’outil de Process Mining.
Configuration
- Vues CDS principales : l'extraction repose principalement sur un ensemble de vues CDS standard qui présentent les tables SAP sous-jacentes dans un format structuré et orienté métier. Les principales vues sont les suivantes :
I_ProductionOrder: données d'en-tête et événements de création.I_ProdOrdConfirmation: toutes les confirmations d'opérations.I_MaterialDocumentItem: mouvements de marchandises, tels que les sorties et les entrées.I_ObjectStatus: lecture des changements de statut de l'ordre de production.I_ChangeDocumentet les vues associées : enregistrement des modifications apportées aux principaux champs de l'ordre.
- Filtrage par période : il est essentiel d'appliquer un filtre de dates pour maîtriser le volume de données. La requête fournie utilise la
CreationDatede l'ordre de production. Pour une première analyse, une période de 3 à 6 mois constitue généralement un bon point de départ. - Filtres métier principaux : pour affiner davantage le jeu de données, appliquez des filtres fondés sur les attributs organisationnels ou les données de référence. Les filtres courants comprennent :
Plant: analyse d'un site de production donné.ProductionOrderType: ciblage de la production standard, des retouches ou d'autres types d'ordres.CompanyCode: restriction des données à une entité juridique donnée.
- Seuil d'arrêt imprévu : la requête contient une logique permettant de générer les événements
Unplanned Halt Occurred. Cette logique nécessite un seuil de durée pour définir ce qui constitue un intervalle important entre deux opérations. Configurez cette valeur en fonction des temps de cycle habituels et des règles métier. - Prérequis en matière d'autorisations : l'utilisateur SAP qui exécute la requête doit disposer d'une autorisation d'affichage pour toutes les vues CDS et leurs tables sous-jacentes. Des autorisations manquantes produiront un résultat vide ou incomplet.
a Exemple de requête sql
WITH BaseOrders AS (
SELECT
ProductionOrder,
Material AS MaterialNumber,
ProductionPlant AS Plant,
CreationDate,
CreationTime,
BasicEndDate AS PlannedEndDate,
TechnicalCompletionDate,
LastChangeDateTime
FROM I_ProductionOrder
-- P_CreationDateFrom and P_CreationDateTo are placeholders for your date range
WHERE CreationDate BETWEEN '[_StartDate]' AND '[_EndDate]'
-- Add other filters as needed, for example:
-- AND ProductionPlant IN ('[Your_Plant_1]', '[Your_Plant_2]')
-- AND ProductionOrderType = '[Your_Order_Type]'
)
SELECT
bo.ProductionOrder,
'Production Order Created' AS Activity,
TO_TIMESTAMP(bo.CreationDate || ' ' || LPAD(bo.CreationTime, 6, '0'), 'YYYYMMDD HH24MISS') AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
'CRTD' AS OrderStatus
FROM BaseOrders bo
UNION ALL
-- System status changes like Released, Technically Completed, Closed, Cancelled, Material Shortage
SELECT
os.ObjectInternalID AS ProductionOrder,
CASE os.SystemStatus
WHEN 'I0002' THEN 'Production Order Released'
WHEN 'I0043' THEN 'Material Availability Checked' -- Status: MACM (Material committed)
WHEN 'I0045' THEN 'Order Technically Completed'
WHEN 'I0046' THEN 'Order Financially Closed'
WHEN 'I0047' THEN 'Production Order Cancelled'
WHEN 'I0010' THEN 'Material Shortage Occurred' -- Status: MSPT (Material shortage)
END AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus IN ('I0002', 'I0043', 'I0045', 'I0046', 'I0047', 'I0010') AND os.StatusIsInactive = ''
UNION ALL
-- Production Started, inferred from the first goods issue or first confirmation
SELECT
s.ProductionOrder,
'Production Started' AS Activity,
s.StartEventTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
s.MaterialNumber,
s.Plant,
NULL AS WorkCenter,
s.PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
bo.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime)) AS StartEventTime,
ROW_NUMBER() OVER(PARTITION BY bo.ProductionOrder ORDER BY MIN(COALESCE(gm.PostingTime, cf.ConfirmationDateTime))) as rn
FROM BaseOrders bo
LEFT JOIN I_MaterialDocumentItem gm ON bo.ProductionOrder = gm.ProductionOrder AND gm.GoodsMovementType IN ('261', '262') -- Goods Issue
LEFT JOIN I_ProdOrdConfirmation cf ON bo.ProductionOrder = cf.ProductionOrder
WHERE gm.ProductionOrder IS NOT NULL OR cf.ProductionOrder IS NOT NULL
GROUP BY bo.ProductionOrder, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate
) s
WHERE s.rn = 1
UNION ALL
-- Production Confirmation Entered (for each confirmation)
SELECT
cf.ProductionOrder,
'Production Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
UNION ALL
-- Final Confirmation Entered
SELECT
cf.ProductionOrder,
'Final Confirmation Entered' AS Activity,
cf.ConfirmationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
cf.WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
WHERE cf.IsFinalConfirmation = 'X'
UNION ALL
-- Unplanned Halt Occurred (derived from gaps between confirmations)
SELECT
ProductionOrder,
'Unplanned Halt Occurred' AS Activity,
PreviousConfirmationTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
MaterialNumber,
Plant,
WorkCenter,
PlannedEndDate,
NULL AS OrderStatus
FROM (
SELECT
cf.ProductionOrder,
bo.MaterialNumber,
bo.Plant,
bo.PlannedEndDate,
cf.WorkCenter,
cf.ConfirmationDateTime,
LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime) AS PreviousConfirmationTime,
(SECONDS_BETWEEN(LAG(cf.ConfirmationDateTime, 1) OVER (PARTITION BY cf.ProductionOrder ORDER BY cf.ConfirmationDateTime), cf.ConfirmationDateTime) / 3600.0) as HoursDiff
FROM I_ProdOrdConfirmation cf
JOIN BaseOrders bo ON cf.ProductionOrder = bo.ProductionOrder
) AS gaps
WHERE gaps.HoursDiff > 24 -- Configurable threshold in hours, e.g. 24 hours
UNION ALL
-- Goods Receipt Posted
SELECT
gm.ProductionOrder,
'Goods Receipt Posted' AS Activity,
gm.PostingTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
NULL AS OrderStatus
FROM I_MaterialDocumentItem gm
JOIN BaseOrders bo ON gm.ProductionOrder = bo.ProductionOrder
WHERE gm.GoodsMovementType = '101'
UNION ALL
-- Capacity Requirements Planned (using Release event as a proxy)
SELECT
os.ObjectInternalID AS ProductionOrder,
'Capacity Requirements Planned' AS Activity,
os.StatusChangeDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL AS WorkCenter,
bo.PlannedEndDate,
os.SystemStatus AS OrderStatus
FROM I_ObjectStatus AS os
JOIN BaseOrders AS bo ON os.ObjectInternalID = bo.ProductionOrder
WHERE os.SystemStatus = 'I0002' AND os.StatusIsInactive = '' -- Status 'REL' (Released)
UNION ALL
-- Production Plan Adjusted
SELECT
ch.ObjectValue AS ProductionOrder,
'Production Plan Adjusted' AS Activity,
ch.CreationDateTime AS StartTime,
'[_SourceSystemName]' AS SourceSystem,
CURRENT_UTCTIMESTAMP AS LastDataUpdate,
bo.MaterialNumber,
bo.Plant,
NULL as WorkCenter,
bo.PlannedEndDate,
NULL as OrderStatus
FROM I_ChangeDocument AS ch
JOIN BaseOrders bo ON ch.ObjectValue = bo.ProductionOrder
WHERE ch.ChangeDocumentObject = 'PRODORDER'
-- Monitoring changes in key fields like Total Quantity (GAMNG) or Basic Finish Date (GLTRP)
AND ch.FieldName IN ('GAMNG', 'GLTRP')
GROUP BY ch.ObjectValue, ch.CreationDateTime, bo.MaterialNumber, bo.Plant, bo.PlannedEndDate Étapes
- Vérifiez que vous disposez d'un accès direct en lecture au schéma SAP HANA contenant les données des ordres de production. Identifiez le propriétaire du schéma, la gestion du client, les conventions d'horodatage et le modèle d'autorisation. Utilisez SAP HANA Database Explorer ou un client SQL approuvé. Validez la version SAP S/4HANA concernée ainsi que le périmètre de planification de production activé avant de finaliser la requête.
- Configurez la chaîne de connexion, les identifiants, le nom du schéma, la valeur du client, les dates de début et de fin de l'extraction ainsi que les filtres propres à votre entreprise. La requête ci-dessous utilise AUFK, AFPO, JEST et JCDS, et fait également référence à AFKO, AFVC, AFRU, RESB, MSEG, CDHDR et CDPOS. Avant l'exécution, vérifiez la disponibilité et la définition des champs de ces objets dans votre système, car des extensions, des vues de compatibilité et des différences entre versions peuvent s'appliquer.
- Exécutez la requête dans SAP HANA Database Explorer ou dans votre outil d'exécution SQL approuvé. La requête crée une ligne pour chaque activité extraite explicitement et regroupe les lignes d'activité à l'aide de UNION ALL. Elle ne s'appuie pas sur ProcessMind pour déduire les événements.
- Examinez les données sources et adaptez, si nécessaire, les expressions signalées comme propres au système. Vérifiez notamment les codes de statut utilisés pour la disponibilité des matériaux, la planification des capacités, la clôture technique, la clôture financière et l'annulation. Confirmez également l'objet et les noms de champs des documents de modification utilisés pour identifier les ajustements du plan de production.
- Validez la conversion des horodatages et le filtrage du client. Les systèmes SAP peuvent stocker les dates et les heures dans des champs distincts, et certaines installations utilisent l'UTC tandis que d'autres utilisent l'heure locale du site ou du système. Veillez à ce que les valeurs
StartTimeobtenues utilisent un fuseau horaire cohérent et que les dates SAP initiales ou non valides soient exclues. - Exportez le résultat dans un fichier plat pris en charge par ProcessMind, de préférence au format CSV ou dans un fichier texte délimité UTF-8. Conservez exactement les noms de colonnes de sortie
ProductionOrder,Activity,StartTime,SourceSystem,LastDataUpdate,MaterialNumber,Plant,WorkCenter,PlannedEndDateetOrderStatus. - Triez les lignes exportées par
ProductionOrderetStartTime, en ajoutant un ordre secondaire déterministe pour les horodatages identiques si votre processus de chargement le permet. Conservez une ligne par événement, y compris les confirmations et les changements de statut répétés lorsqu'ils correspondent à des enregistrements sources distincts. - Chargez le fichier dans ProcessMind et associez
ProductionOrderà l'identifiant de cas,Activityà l'activité etStartTimeà l'horodatage de l'événement. Associez les autres colonnes comme attributs d'événement ou de cas, selon la configuration d'importation de ProcessMind. Vérifiez que les 14 libellés d'activité sont conservés exactement tels qu'ils sont produits par la requête.
Configuration
- Période : commencez par une période glissante de trois à six mois. Utilisez une période plus courte pour les premiers tests et élargissez-la uniquement après avoir validé le nombre de lignes et les performances de la requête.
- Paramètres d'extraction : remplacez [Your schema name], [Your client], [Extraction start date], [Extraction end date] et [Your source system name] par les valeurs de votre environnement. N'appliquez les filtres propres à l'entreprise qu'après avoir confirmé les champs organisationnels et leurs valeurs.
- Configuration des statuts : vérifiez les codes de statut SAP exacts et les identifiants d'objet de statut utilisés dans votre système pour CRTD, la mise en production, la disponibilité des matériaux, la planification des capacités, la clôture technique, la clôture financière et l'annulation. Les profils de statut et les extensions personnalisées peuvent modifier les codes disponibles.
- Documents de modification : confirmez l'objet des documents de modification des ordres de production, les noms de tables et de champs ainsi que les formats de valeurs utilisés pour les quantités, les dates, la nomenclature et les gammes. La requête considère les enregistrements CDHDR et CDPOS correspondants comme des éléments attestant d'un ajustement du plan.
- Gestion des horodatages : standardisez tous les horodatages sur un même fuseau horaire. Vérifiez si les champs de date et d'heure sont séparés, si les horodatages sont exprimés en heure locale ou en UTC et comment les dates initiales sont représentées.
- Performances : limitez l'extraction par date de création de l'ordre ou par une autre date indexée de l'ordre de production, filtrez par client, sélectionnez uniquement les colonnes nécessaires et exécutez la requête pendant une plage adaptée aux traitements de reporting. Pour les volumes importants, extrayez les données mois par mois ou par plage d'ordres de production et enregistrez progressivement les résultats.
- Objets de base de données : vérifiez que AUFK, AFPO, JEST, JCDS, AFKO, AFVC, AFRU, RESB, MSEG, CDHDR et CDPOS sont disponibles et accessibles en lecture dans le schéma sélectionné. Si une vue ou un champ diffère dans votre version, remplacez-le par l'objet correspondant, publié ou approuvé.
- Autorisations : l'accès requis comprend une autorisation de lecture sur le schéma et les objets SAP HANA sélectionnés, ainsi que l'autorisation d'exécuter des requêtes SQL. Les autorisations applicatives SAP peuvent également être exigées par votre processus de gouvernance.
- Périmètre fonctionnel : les données de planification et d'exécution de la production, les mouvements de stock, l'historique des statuts et les documents de modification doivent être conservés pour la période sélectionnée. Les enregistrements archivés ou supprimés ne seront pas renvoyés.
- Association dans ProcessMind : configurez
ProductionOrdercomme identifiant de cas,Activitycomme activité etStartTimecomme horodatage de l'événement. Ne comptez pas sur ProcessMind pour déduire les activités manquantes à partir des attributs.
a Exemple de requête sql
WITH
params AS (
SELECT
'[Your client]' AS mandt,
TO_DATE('[Extraction start date]', 'YYYY-MM-DD') AS date_from,
TO_DATE('[Extraction end date]', 'YYYY-MM-DD') AS date_to,
'[Your source system name]' AS source_system,
CURRENT_UTCTIMESTAMP AS last_data_update
FROM DUMMY
),
orders AS (
SELECT
a.mandt,
LTRIM(a.aufnr, '0') AS production_order,
a.aufnr AS production_order_raw,
a.erdat AS order_created_date,
a.erfzeit AS order_created_time,
a.auart AS order_type,
a.werks AS plant,
a.objnr AS object_number,
a.ktext AS order_text,
p.matnr AS material_number,
p.psmng AS planned_quantity,
p.wemng AS delivered_quantity,
k.gstrp AS planned_start_date,
k.gltrp AS planned_end_date,
k.ftrmi AS release_date,
k.ftrmp AS release_time,
k.gamng AS total_order_quantity,
k.plnbez AS header_material_number,
k.plnty AS task_list_type,
k.plnnr AS task_list_group,
k.plnal AS task_list_group_counter
FROM [Your schema name].AUFK a
LEFT JOIN [Your schema name].AFPO p
ON p.mandt = a.mandt
AND p.aufnr = a.aufnr
LEFT JOIN [Your schema name].AFKO k
ON k.mandt = a.mandt
AND k.aufnr = a.aufnr
CROSS JOIN params x
WHERE a.mandt = x.mandt
AND a.erdat >= x.date_from
AND a.erdat < ADD_DAYS(x.date_to, 1)
),
status_history AS (
SELECT
o.*,
j.stat,
j.inact,
j.chgnr,
j.udate AS status_date,
j.utime AS status_time,
c.usnam AS status_user,
c.chind AS status_change_indicator
FROM orders o
INNER JOIN [Your schema name].JEST j
ON j.mandt = o.mandt
AND j.objnr = o.object_number
LEFT JOIN [Your schema name].JCDS c
ON c.mandt = j.mandt
AND c.objnr = j.objnr
AND c.stat = j.stat
AND c.chgnr = j.chgnr
WHERE COALESCE(j.inact, '') <> 'X'
),
operations AS (
SELECT
o.production_order,
o.mandt,
v.vornr,
v.arbid,
v.steus,
v.ltxa1,
v.aufpl,
v.aplzl,
cr.name1 AS work_center
FROM orders o
LEFT JOIN [Your schema name].AFVC v
ON v.mandt = o.mandt
AND v.aufpl = (SELECT MAX(k2.aufpl) FROM [Your schema name].AFKO k2 WHERE k2.mandt = o.mandt AND k2.aufnr = o.production_order_raw)
LEFT JOIN [Your schema name].CRHD cr
ON cr.mandt = v.mandt
AND cr.objty = 'A'
AND cr.objid = v.arbid
),
confirmations AS (
SELECT
o.production_order,
o.mandt,
r.rmzhl,
r.vornr,
r.budat AS confirmation_date,
r.ersda AS entry_date,
r.erzet AS entry_time,
r.ism01,
r.ism02,
r.ism03,
r.ism04,
r.ism05,
r.ism06,
r.xmnga,
r.stzhl,
r.stzhl AS reversal_counter,
r.lmnga AS confirmed_quantity,
r.xmnge AS scrap_quantity,
r.aufpl,
r.aplzl,
op.work_center
FROM orders o
INNER JOIN [Your schema name].AFRU r
ON r.mandt = o.mandt
AND r.aufnr = o.production_order_raw
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.mandt = r.mandt
AND op.vornr = r.vornr
),
first_confirmation AS (
SELECT production_order, MIN(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM confirmations
GROUP BY production_order
),
last_confirmation AS (
SELECT production_order, MAX(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS final_time
FROM confirmations
GROUP BY production_order
),
first_goods_issue AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('261', '262')
GROUP BY o.production_order
),
first_receipt AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(m.budat_mkpf, 'YYYYMMDD') || LPAD(TO_VARCHAR(m.cputm_mkpf), 6, '0'), 'YYYYMMDDHH24MISS')) AS receipt_time
FROM orders o
INNER JOIN [Your schema name].MSEG m
ON m.mandt = o.mandt
AND m.aufnr = o.production_order_raw
AND m.bwart IN ('101', '102')
GROUP BY o.production_order
),
plan_changes AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(h.udate, 'YYYYMMDD') || LPAD(TO_VARCHAR(h.utime), 6, '0'), 'YYYYMMDDHH24MISS')) AS adjustment_time
FROM orders o
INNER JOIN [Your schema name].CDHDR h
ON h.mandant = o.mandt
AND h.objectid = o.production_order_raw
INNER JOIN [Your schema name].CDPOS p
ON p.mandant = h.mandant
AND p.objectclas = h.objectclas
AND p.objectid = h.objectid
AND p.changenr = h.changenr
WHERE h.objectclas IN ('ORDER', 'PP_ORDER')
AND p.tabname IN ('AFKO', 'AFPO', 'AFVC', 'RESB')
AND p.fname IN ('GAMNG', 'PSMNG', 'GSTRP', 'GLTRP', 'MATNR', 'BDMNG', 'VORNR')
GROUP BY o.production_order
),
status_times AS (
SELECT
production_order,
MIN(CASE WHEN stat IN ('I0001', 'CRTD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS created_status_time,
MIN(CASE WHEN stat IN ('I0002', 'REL') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS released_time,
MIN(CASE WHEN stat IN ('I0003', 'MATC', 'MANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS material_available_time,
MIN(CASE WHEN stat IN ('I0004', 'CAPC', 'CAPA') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS capacity_planned_time,
MIN(CASE WHEN stat IN ('I0045', 'TECO') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS technically_completed_time,
MIN(CASE WHEN stat IN ('I0046', 'CLSD') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS financially_closed_time,
MIN(CASE WHEN stat IN ('I0076', 'DLFL', 'CANC') THEN TO_TIMESTAMP(TO_VARCHAR(status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(status_time), 6, '0'), 'YYYYMMDDHH24MISS') END) AS cancelled_time
FROM status_history
GROUP BY production_order
),
material_shortages AS (
SELECT
o.production_order,
MIN(TO_TIMESTAMP(TO_VARCHAR(j.status_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(j.status_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS shortage_time
FROM status_history j
INNER JOIN orders o
ON o.production_order = j.production_order
WHERE j.stat IN ('I0042', 'MANC', 'MSHT')
GROUP BY o.production_order
),
capacity_times AS (
SELECT
production_order,
MIN(COALESCE(released_time, created_status_time)) AS capacity_time
FROM status_times
GROUP BY production_order
),
base_attributes AS (
SELECT
o.production_order,
o.material_number,
o.plant,
COALESCE(op.work_center, '') AS work_center,
o.planned_end_date,
COALESCE(st.stat, '') AS current_status
FROM orders o
LEFT JOIN status_history st
ON st.production_order = o.production_order
AND st.inact = ''
LEFT JOIN operations op
ON op.production_order = o.production_order
AND op.vornr = (SELECT MIN(op2.vornr) FROM operations op2 WHERE op2.production_order = o.production_order)
),
events AS (
SELECT o.production_order, 'Production Order Created' AS activity, COALESCE(st.created_status_time, TO_TIMESTAMP(TO_VARCHAR(o.order_created_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(o.order_created_time), 6, '0'), 'YYYYMMDDHH24MISS')) AS start_time FROM orders o LEFT JOIN status_times st ON st.production_order = o.production_order
UNION ALL
SELECT production_order, 'Material Availability Checked', material_available_time FROM status_times WHERE material_available_time IS NOT NULL
UNION ALL
SELECT production_order, 'Capacity Requirements Planned', capacity_time FROM capacity_times WHERE capacity_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Released', released_time FROM status_times WHERE released_time IS NOT NULL
UNION ALL
SELECT o.production_order, 'Production Started', LEAST(COALESCE(fc.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS')), COALESCE(fg.start_time, TO_TIMESTAMP('99991231235959', 'YYYYMMDDHH24MISS'))) FROM orders o LEFT JOIN first_confirmation fc ON fc.production_order = o.production_order LEFT JOIN first_goods_issue fg ON fg.production_order = o.production_order WHERE fc.start_time IS NOT NULL OR fg.start_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Confirmation Entered', TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') FROM confirmations
UNION ALL
SELECT production_order, 'Material Shortage Occurred', shortage_time FROM material_shortages WHERE shortage_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Plan Adjusted', adjustment_time FROM plan_changes WHERE adjustment_time IS NOT NULL
UNION ALL
SELECT c.production_order, 'Unplanned Halt Occurred', ADD_SECONDS(c.confirmation_time, 1) FROM (SELECT production_order, TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS') AS confirmation_time, LEAD(TO_TIMESTAMP(TO_VARCHAR(entry_date, 'YYYYMMDD') || LPAD(TO_VARCHAR(entry_time), 6, '0'), 'YYYYMMDDHH24MISS')) OVER (PARTITION BY production_order ORDER BY entry_date, entry_time, rmzhl) AS next_confirmation_time FROM confirmations) c WHERE c.next_confirmation_time IS NOT NULL AND SECONDS_BETWEEN(c.confirmation_time, c.next_confirmation_time) >= 86400
UNION ALL
SELECT production_order, 'Final Confirmation Entered', final_time FROM last_confirmation WHERE final_time IS NOT NULL
UNION ALL
SELECT production_order, 'Goods Receipt Posted', receipt_time FROM first_receipt WHERE receipt_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Technically Completed', technically_completed_time FROM status_times WHERE technically_completed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Order Financially Closed', financially_closed_time FROM status_times WHERE financially_closed_time IS NOT NULL
UNION ALL
SELECT production_order, 'Production Order Cancelled', cancelled_time FROM status_times WHERE cancelled_time IS NOT NULL
)
SELECT
e.production_order AS "ProductionOrder",
e.activity AS "Activity",
e.start_time AS "StartTime",
p.source_system AS "SourceSystem",
p.last_data_update AS "LastDataUpdate",
b.material_number AS "MaterialNumber",
b.plant AS "Plant",
NULLIF(b.work_center, '') AS "WorkCenter",
b.planned_end_date AS "PlannedEndDate",
b.current_status AS "OrderStatus"
FROM events e
INNER JOIN base_attributes b
ON b.production_order = e.production_order
CROSS JOIN params p
WHERE e.start_time IS NOT NULL
ORDER BY e.production_order, e.start_time, e.activity; Prêt à commencer ?
Faites le premier pas vers une planification de la production plus efficace. Préparez vos données avec ce modèle et obtenez des analyses utiles pour l’optimisation.
Commencez dès aujourd'hui à optimiser votre planification de production
Identifiez et éliminez les goulots d'étranglement, et réduisez de 30 % le temps de cycle de production.
Aucune carte bancaire requise