Votre Template de Données de Gestion d'Entrepôt
Votre Template de Données de Gestion d'Entrepôt
- Attributs recommandés pour une analyse approfondie
- Activités clés à suivre dans votre processus
- Guide pour l'extraction de données depuis SAP EWM
Attributs de gestion d'entrepôt
| Nom | Description | ||
|---|---|---|---|
| Ordre d'entrepôt WarehouseOrder | L'identifiant unique d'un ordre d'entrepôt, qui regroupe un ensemble de tâches d'entrepôt à effectuer par une ressource. | ||
| Description L'ordre d'entrepôt sert d'identifiant de cas principal pour suivre le processus de bout en bout de la manutention des marchandises au sein de l'entrepôt. Il représente un paquet de travail, tel que le prélèvement d'articles pour une livraison sortante ou le rangement des marchandises reçues. Chaque ordre d'entrepôt contient une ou plusieurs tâches d'entrepôt. Dans le Process Mining, l'analyse par ordre d'entrepôt permet une vue complète de l'ensemble du cycle de vie d'un paquet de travail spécifique. Cela aide à identifier les goulots d'étranglement, à mesurer les temps de cycle globaux de la création à l'achèvement, et à comprendre le flux complet d'activités associées à une seule instruction logistique. Pourquoi c'est important C'est l'identifiant central qui relie toutes les activités d'entrepôt connexes, permettant une analyse de processus de bout en bout et une mesure du temps de cycle pour une seule unité de travail. Où obtenir Cet identifiant se trouve généralement dans la table d'en-tête de l'ordre d'entrepôt SAP EWM, telle que /SCWM/WHO. Exemples 200000145200000146200000147 | |||
| Dernière mise à jour des données LastDataUpdate | L'horodatage indiquant la dernière fois que les `données` de cet enregistrement ont été actualisées à partir du système source. | ||
| Description Cet attribut enregistre la dernière extraction des données du système source. Il fournit un contexte crucial sur la fraîcheur des données analysées. Dans toute analyse ou dashboard, connaître la date de mise à jour des données est essentiel pour prendre des décisions éclairées. Cet horodatage aide les utilisateurs à comprendre s'ils consultent des informations en temps réel ou un instantané à un moment précis, gérant ainsi les attentes concernant la validité des données. Pourquoi c'est important Indique la fraîcheur des données, ce qui est essentiel pour que les utilisateurs comprennent l'actualité de leur analyse de processus. Où obtenir C'est un champ de métadonnées généralement généré et ajouté lors du processus d'extraction de données (ETL). Il reflète l'horodatage du chargement des données. Exemples 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Heure de début EventTime | L'horodatage indiquant le début de l'activité ou de l'événement. | ||
| Description Cet attribut enregistre la date et l'heure exactes auxquelles une activité d'entrepôt spécifique s'est produite. C'est l'élément temporel principal utilisé pour ordonner les événements et calculer les durées entre eux. En Process Mining, l'heure de début est essentielle pour construire la séquence chronologique des événements pour chaque cas. Elle est utilisée pour calculer les temps de cycle, les temps d'attente et les temps de traitement, qui sont critiques pour l'analyse des performances, l'identification des goulots d'étranglement et la surveillance des SLA. Pourquoi c'est important Cet horodatage est essentiel pour ordonner les événements chronologiquement et calculer toutes les métriques de performance basées sur le temps, telles que les temps de cycle et les durées. Où obtenir Généralement trouvé dans les tables d'événements ou de confirmation comme /SCWM/ORDIM_C (par exemple, champ CONF_TIMESTAMP) ou les journaux de changement de statut associés aux ordres et tâches d'entrepôt. Exemples 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Nom de l'activité ActivityName | Le nom de l'activité ou de l'événement spécifique de gestion d'entrepôt qui s'est produit, tel que « Tâche de picking créée » ou « Sortie de marchandises enregistrée ». | ||
| Description Cet attribut décrit une étape ou un événement unique au sein du processus de gestion d'entrepôt. Ces activités sont les éléments constitutifs de la cartographie des processus, représentant des tâches comme la création, la confirmation, le conditionnement, le chargement et les mouvements de marchandises. L'analyse de la séquence et de la fréquence de ces activités est fondamentale pour le Process Mining. Elle aide à visualiser le flux de processus, à identifier les chemins courants et rares, à détecter les écarts par rapport à la procédure standard et à localiser les étapes spécifiques qui causent des retards ou des reprises. Pourquoi c'est important Il définit les étapes du processus, constituant la base de la carte des processus et permettant l'analyse du flux de processus, des déviations et des goulots d'étranglement. Où obtenir Dérivé des changements de statut, des messages d'événements ou des journaux de transactions liés aux ordres et tâches d'entrepôt dans des tables comme /SCWM/ORDIM_C (Confirmations) ou par interprétation des champs de statut dans /SCWM/WHO et /SCWM/ORDIM_O. Exemples Tâche de picking confirméeTâche de rangement crééeRéception de marchandises enregistréeOrdre d'entrepôt terminé | |||
| Système source SourceSystem | Identifie le système source à partir duquel les données ont été extraites, par exemple, l'instance de production SAP EWM. | ||
| Description Cet attribut spécifie le système de référence d'où proviennent les données de gestion d'entrepôt. Dans un environnement d'entreprise avec plusieurs systèmes, il est crucial d'étiqueter l'origine des données pour la traçabilité et le contexte. Pour l'analyse, cela aide à différencier les processus qui peuvent s'étendre sur plusieurs systèmes ou permet de comparer les processus de différentes instances, telles que des systèmes distincts pour différentes régions. Cela assure une lignée de données claire et auditable. Pourquoi c'est important Offre traçabilité et contexte, notamment dans les environnements comportant plusieurs instances SAP ou des systèmes intégrés, garantissant une lignée de données claire. Où obtenir Il s'agit généralement d'une valeur statique ajoutée lors du processus d'extraction, de transformation et de chargement (ETL) des données, identifiant l'instance SAP S/4HANA ou EWM spécifique. Exemples SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| `Numéro d'article` MaterialNumber | L'identifiant unique du produit ou du matériau traité dans la tâche d'entrepôt. | ||
| Description Cet attribut spécifie le matériau qui est déplacé, prélevé, conditionné ou reçu. C'est une dimension critique pour segmenter et analyser les performances de l'entrepôt en fonction des caractéristiques des produits. L'analyse par numéro de matériau aide à répondre à des questions telles que : quels produits ont les temps de rangement les plus longs, lesquels sont le plus fréquemment impliqués dans des erreurs de picking, ou lesquels nécessitent des inspections qualité. C'est essentiel pour les dashboards 'Performance de réception et de rangement des marchandises' et 'Temps d'exécution de l'inspection qualité'. Pourquoi c'est important Permet de filtrer et de segmenter les données de processus par produit, ce qui est crucial pour identifier les problèmes spécifiques aux produits en matière de manutention, de stockage ou de contrôle qualité. Où obtenir Cette information est généralement disponible dans des tables de tâches d'entrepôt comme /SCWM/ORDIM_O, liée aux données de base des matériaux. Exemples FIN-1001RAW-2050SFIN-300-A | |||
| Heure de fin EventEndTime | Le 'timestamp' indiquant quand une activité ou un 'event' a été complété. | ||
| Description Cet attribut enregistre la date et l'heure de fin d'une activité d'entrepôt spécifique. Il est souvent identique à l'heure de début pour les événements atomiques, mais peut différer pour les activités ayant une durée mesurable, comme le conditionnement ou le chargement. Disposer d'une heure de fin distincte permet un calcul précis du temps de traitement des activités individuelles. C'est crucial pour les dashboards de performance qui analysent la durée des étapes spécifiques, telles que 'Picking & Packing Efficiency', aidant à identifier quelles tâches consomment le plus de temps. Pourquoi c'est important Permet le calcul précis de la durée des activités individuelles, ce qui est essentiel pour identifier les étapes chronophages et les tâches gourmandes en ressources. Où obtenir Souvent identique à l'horodatage de début pour les événements discrets. Pour les tâches de longue durée, il peut s'agir d'un champ distinct dans des tables comme /SCWM/ORDIM_C ou dérivé d'un changement de statut ultérieur. Exemples 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| ID utilisateur User | L'identifiant de l'opérateur ou de l'utilisateur de l'entrepôt qui a confirmé ou exécuté l'activité. | ||
| Description Cet attribut saisit l'ID utilisateur de la personne responsable de l'exécution d'une tâche d'entrepôt. Il peut s'agir du picker qui a confirmé un prélèvement, du conditionneur à une station de conditionnement, ou de l'opérateur de chariot élévateur confirmant un rangement. Ces données sont vitales pour le dashboard 'Utilisation des Ressources et des Équipements'. Elles permettent l'analyse des performances individuelles ou d'équipe, aident à identifier les besoins en formation et peuvent être utilisées pour équilibrer plus efficacement les charges de travail du personnel de l'entrepôt. Pourquoi c'est important Attribue le travail à une personne spécifique, permettant l'analyse des performances par utilisateur ou équipe et supportant la gestion des ressources et l'équilibrage de la charge de travail. Où obtenir Généralement trouvé dans les données de confirmation d'une tâche d'entrepôt, par exemple dans la table /SCWM/ORDIM_C, champ UNAME. Exemples JSMITHARODRIGUEZOPERATOR_05 | |||
| Priorité Priority | Le niveau de priorité attribué à l'ordre d'entrepôt, indiquant son urgence (par exemple, Élevée, Moyenne, Faible). | ||
| Description Cet attribut classe les ordres d'entrepôt en fonction de leur importance commerciale ou de leur urgence. Les commandes à haute priorité, par exemple, peuvent être destinées à des expéditions express ou à un approvisionnement de production critique et nécessitent un traitement accéléré. La priorité est une dimension clé pour le dashboard et le KPI 'Adhésion à l'exécution des commandes prioritaires'. Elle permet de filtrer et de segmenter les performances pour s'assurer que les commandes les plus critiques sont traitées dans les délais prévus, alignant ainsi les opérations d'entrepôt avec les objectifs commerciaux. Pourquoi c'est important Permet de prioriser l'analyse et la surveillance pour garantir que les commandes urgentes respectent leurs niveaux de service, impactant directement la satisfaction client. Où obtenir La priorité peut être définie sur le document de livraison sous-jacent et transférée à l'ordre d'entrepôt. Elle peut être trouvée dans des tables comme /SCWM/WHO. Exemples ÉlevéMoyenFaible | |||
| Statut de l'ordre d'entrepôt WarehouseOrderStatus | Le statut actuel ou final de l'ordre d'entrepôt, tel que « Terminé » ou « Annulé ». | ||
| Description Cet attribut indique le résultat final d'un ordre d'entrepôt. Comprendre si une commande a été réussie ou annulée est crucial pour analyser les taux de réussite des processus et identifier les raisons de la non-exécution. C'est un filtre clé pour de nombreuses analyses. Par exemple, lors du calcul du temps de cycle d'entrepôt de bout en bout, l'analyse n'est généralement effectuée que sur les commandes terminées. Il aide également à identifier et à examiner la fréquence et les causes des commandes annulées. Pourquoi c'est important Indique le résultat d'un cas, permettant le filtrage des commandes complétées par rapport aux commandes annulées, ce qui est crucial pour une analyse précise du temps de cycle et du débit. Où obtenir Le champ de statut se trouve généralement dans la table d'en-tête de l'ordre d'entrepôt, /SCWM/WHO. Exemples TerminéEn coursAnnulé | |||
| Temps de traitement ProcessingTime | La durée du temps passé à travailler activement sur une `activité` spécifique. | ||
| Description Le temps de traitement mesure le « temps de contact » réel d'une activité, calculé comme la différence entre ses horodatages de début et de fin. Il se distingue du temps de cycle, qui inclut les périodes d'attente entre les activités. Cette métrique est fondamentale pour l'analyse des performances, en particulier pour les dashboards tels que 'Picking & Packing Efficiency'. Elle aide à identifier les tâches spécifiques qui prennent le plus de temps, permettant aux managers de concentrer leurs efforts d'amélioration sur les activités ayant les temps de traitement les plus longs, améliorant ainsi le débit global. Pourquoi c'est important Mesure la durée de travail active d'une activité, aidant à identifier les tâches les plus chronophages et constituant une base pour l'analyse de la capacité des ressources. Où obtenir Ceci est une métrique calculée, dérivée en soustrayant le EventTime du EventEndTime pour chaque activité. Exemples 3009150 | |||
| Type d'ordre d'entrepôt WarehouseOrderType | Classe l'ordre d'entrepôt selon son objectif, tel que le Rangement, le Picking ou le Réapprovisionnement interne. | ||
| Description Le type d'ordre d'entrepôt classe les ordres en fonction de leur fonction logistique. Cette distinction est fondamentale car différents types d'ordres suivent des chemins de processus différents et ont des attentes de performance distinctes. En analyse, cet attribut est une dimension principale pour le filtrage et la comparaison. Par exemple, le dashboard 'Débit et Volume des Ordres d'Entrepôt' s'appuie sur cet élément pour segmenter les performances des processus entrants (Rangement) par rapport aux processus sortants (Picking), offrant une vue plus significative des opérations d'entrepôt. Pourquoi c'est important Permet la segmentation de l'analyse basée sur la catégorie de processus (par exemple, entrant vs. sortant), rendant possibles des comparaisons et des informations plus pertinentes. Où obtenir Ceci est déterminé par le type de processus d'entrepôt, souvent trouvé dans la table d'en-tête de l'ordre d'entrepôt /SCWM/WHO. Exemples PICKPUTWREPLSTGE | |||
| Date d'achèvement requise RequestedCompletionDate | La date à laquelle un ordre d'entrepôt à haute priorité doit être complété. | ||
| Description Cet attribut définit l'accord de niveau de service (SLA) ou la date d'achèvement cible pour un ordre d'entrepôt. C'est la date limite par rapport à laquelle le temps d'achèvement réel est mesuré pour déterminer si la commande a été exécutée à temps. Cette date est essentielle pour le calcul du KPI 'Taux d'exécution des commandes prioritaires'. En comparant l'horodatage d'achèvement réel avec cette date demandée, l'analyse peut quantifier le respect des niveaux de service et mettre en évidence les commandes qui risquent d'être en retard ou qui le sont déjà. Pourquoi c'est important Définit le SLA (accord de niveau de service) pour une commande, servant de référence pour mesurer la performance d'exécution à temps, en particulier pour les articles hautement prioritaires. Où obtenir Cette date est souvent dérivée de la date d'émission des marchandises prévue ou de la date de livraison sur l'ordre de livraison sortant qui a déclenché l'ordre d'entrepôt. Consultez la documentation SAP Extended Warehouse Management. Exemples 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| Écart de quantité QuantityVariance | La différence entre la quantité planifiée et la quantité réelle confirmée pour une tâche. | ||
| Description Cette métrique calculée quantifie l'écart constaté lors d'une tâche d'entrepôt. Une valeur non nulle indique que la réalité physique ne correspondait pas à l'enregistrement du système, signalant un problème potentiel tel qu'une erreur de picking, une erreur de réception ou un article endommagé. Cet attribut soutient directement le dashboard 'Analyse des écarts d'inventaire' en mettant en évidence l'ampleur des erreurs. L'analyse de la fréquence et de la taille de ces écarts aide à identifier les problèmes systémiques dans la gestion des stocks et l'exécution opérationnelle, guidant les efforts pour améliorer la précision. Pourquoi c'est important Quantifie directement les inexactitudes d'inventaire et opérationnelles, ce qui facilite la détection et l'analyse de l'ampleur des écarts. Où obtenir Calculé en soustrayant la PlannedQuantity de l'ActualQuantity pour chaque tâche pertinente. Exemples 0-15 | |||
| Emplacement de stockage StorageLocation | L'emplacement spécifique au sein de l'entrepôt, tel qu'un bac de stockage, où les marchandises sont déplacées. | ||
| Description Cet attribut identifie l'emplacement physique impliqué dans une tâche d'entrepôt, par exemple, le bac source pour le picking ou le bac de destination pour le rangement. Cela peut aller d'une zone large à une coordonnée d'étagère spécifique. L'analyse par emplacement de stockage peut révéler des informations opérationnelles, telles que l'identification de « zones dorées » avec des taux de picking élevés ou des zones problématiques avec des retards ou des erreurs fréquents. Elle peut également être utilisée dans l'analyse de l'« Adhésion aux itinéraires de picking » pour comprendre les mouvements des pickers dans l'entrepôt. Pourquoi c'est important Fournit un contexte géographique au sein de l'entrepôt, permettant l'analyse de l'efficacité des mouvements, de l'accessibilité des bacs et de l'optimisation des itinéraires de picking. Où obtenir Généralement trouvé dans les tables de tâches d'entrepôt comme /SCWM/ORDIM_O, contenant les informations sur les bacs source (VLPLA) et destination (NLPLA). Exemples 01-02-03PACK-STATION-01GI-ZONE-A | |||
| Équipement utilisé EquipmentUsed | L'identifiant de l'équipement, tel qu'un chariot élévateur ou un transpalette, utilisé pour effectuer la tâche d'entrepôt. | ||
| Description Cet attribut spécifie l'équipement de manutention assigné ou utilisé pour une tâche d'entrepôt. Il peut s'agir d'un chariot élévateur spécifique, d'un véhicule guidé automatisé (AGV) ou d'un type particulier de chariot. Ces données constituent la base du dashboard 'Utilisation des ressources et des équipements' et du KPI 'Taux d'utilisation des équipements'. En suivant quel équipement est utilisé pour quelles tâches et pendant combien de temps, les managers peuvent analyser les schémas d'utilisation, planifier la maintenance et prendre des décisions éclairées concernant la taille et la composition de la flotte. Pourquoi c'est important Permet l'analyse de l'utilisation et de l'efficacité des équipements, aidant à optimiser la gestion de flotte et à identifier les contraintes de ressources. Où obtenir Ces informations peuvent être stockées dans les détails de la tâche ou de l'ordre d'entrepôt si la gestion des ressources est configurée dans SAP EWM. Consultez la documentation SAP Extended Warehouse Management. Exemples FORKLIFT-07AGV-02CART-15 | |||
| Est à l'heure IsOnTime | Un indicateur booléen indiquant si un ordre d'entrepôt a été complété avant sa date de réalisation demandée. | ||
| Description Ce drapeau fournit un résultat binaire simple pour le respect des SLA. Il évalue si l'événement d'achèvement final d'un ordre d'entrepôt s'est produit à la date d'achèvement requise spécifiée ou avant. Cet attribut est essentiel pour le dashboard 'Adhésion à l'exécution des commandes prioritaires'. Il simplifie la création de KPI et de visualisations en permettant un comptage et un filtrage faciles des commandes à temps ou en retard. Cela aide à évaluer rapidement les performances par rapport aux objectifs de niveau de service sans nécessiter de calculs de date complexes dans la couche d'analyse. Pourquoi c'est important Simplifie l'analyse des performances SLA en fournissant un indicateur binaire clair de respect ou de non-respect des délais pour chaque commande. Où obtenir Ceci est un attribut calculé. La logique compare l'horodatage de l'activité « Ordre d'entrepôt terminé » avec l'attribut « RequestedCompletionDate ». Exemples truefaux | |||
| Heure de départ prévue PlannedDepartureTime | L'heure prévue de départ de l'expédition de l'entrepôt. | ||
| Description Cet attribut représente l'heure cible pour l'expédition d'un envoi après l'achèvement de toutes les activités de picking, de conditionnement et de chargement. Il sert de référence pour mesurer la performance de ponctualité de la phase finale du processus sortant. Cet horodatage est essentiel pour le dashboard 'Performance de ponctualité de l'expédition'. En comparant l'heure d'expédition réelle avec cette heure planifiée, l'analyse peut identifier les retards de chargement, de coordination des transporteurs ou de documentation, fournissant des informations sur l'efficacité de la planification logistique et du transport. Pourquoi c'est important Fournit la base pour mesurer la performance d'expédition à temps, ce qui est essentiel pour la planification logistique et le respect des horaires des transporteurs. Où obtenir Ces informations font généralement partie du document de transport ou d'expédition lié aux ordres d'entrepôt. Consultez la documentation SAP Extended Warehouse Management. Exemples 2023-10-27T18:00:00Z2023-10-28T14:00:00Z | |||
| Quantité Planifiée PlannedQuantity | La quantité attendue d'un matériau pour une tâche d'entrepôt donnée. | ||
| Description Cet attribut représente la quantité cible d'un matériau qui doit être déplacée, prélevée ou reçue selon l'instruction de la tâche d'entrepôt. C'est la référence par rapport à laquelle la quantité réellement exécutée est comparée. La quantité planifiée est essentielle pour le dashboard « Analyse des écarts d'inventaire » et le KPI « Taux de précision des stocks ». En la comparant à la quantité réelle, le système peut identifier les écarts qui peuvent indiquer des erreurs de picking, des erreurs de réception ou des problèmes de saisie de données, contribuant à améliorer la précision des stocks. Pourquoi c'est important Sert de base pour le calcul de la précision des stocks et l'identification des écarts, ce qui est essentiel pour maintenir des niveaux de stock corrects. Où obtenir Trouvé dans les données des tâches d'entrepôt, par exemple, dans la table /SCWM/ORDIM_O, souvent dans un champ comme NISTA (Quantité cible). Exemples 10050250 | |||
| Quantité réelle ActualQuantity | La quantité réelle d'un matériau confirmée par l'utilisateur pour une tâche d'entrepôt. | ||
| Description Cet attribut représente la quantité qui a été physiquement manipulée et confirmée par l'opérateur de l'entrepôt. Il peut s'agir de la quantité prélevée d'un bac, de la quantité rangée ou de la quantité comptée lors d'une réception de marchandises. Comparer la quantité réelle à la quantité planifiée est fondamental pour l'« Analyse des écarts d'inventaire ». Un écart entre les deux valeurs met directement en évidence une exception de processus qui nécessite une enquête. C'est une mesure directe de la précision opérationnelle et un intrant clé pour les KPI « Taux de précision des stocks » et « Taux d'erreurs de picking ». Pourquoi c'est important C'est la vérité terrain de ce qui a été physiquement manipulé. La comparaison avec la quantité planifiée mesure directement la précision opérationnelle et identifie les erreurs. Où obtenir Trouvé dans les données de confirmation des tâches d'entrepôt, par exemple, dans la table /SCWM/ORDIM_C, souvent dans un champ comme NDIFF (Quantité de différence) ou dérivé des quantités confirmées. Exemples 10049250 | |||
| Tâche d'entrepôt WarehouseTask | L'identifiant unique d'une tâche d'entrepôt individuelle, qui est un composant d'un ordre d'entrepôt. | ||
| Description Une tâche d'entrepôt est l'instruction d'exécuter un mouvement de marchandises spécifique, comme déplacer un produit d'un emplacement de stockage vers un poste d'emballage. Un ordre d'entrepôt regroupe une ou plusieurs de ces tâches. L'analyse au niveau de la tâche offre une vue plus granulaire des opérations d'entrepôt. Elle aide à comprendre la performance des ressources pour des mouvements spécifiques, à identifier les emplacements de stockage difficiles d'accès ou à analyser l'efficacité des activités individuelles de picking ou de rangement. Pourquoi c'est important Fournit un niveau de détail granulaire pour l'analyse, permettant l'examen des mouvements et des étapes individuels au sein d'un ordre d'entrepôt plus large. Où obtenir Trouvé dans les tables de tâches d'entrepôt telles que /SCWM/ORDIM_O (Données de tâche) et /SCWM/ORDIM_C (Données de confirmation). Exemples 300000451300000452300000453 | |||
| Temps de cycle de bout en bout EndToEndCycleTime | Le temps total écoulé entre la création de l'ordre d'entrepôt et son achèvement final. | ||
| Description Ce KPI mesure la durée totale du cycle de vie d'un ordre d'entrepôt. C'est un indicateur de haut niveau critique de l'efficacité et de la vitesse globales des opérations d'entrepôt. Cette métrique est la pierre angulaire du dashboard 'Temps de cycle d'entrepôt de bout en bout'. Le suivi de ce KPI dans le temps, et sa segmentation par des dimensions comme le type de commande ou le matériau, aide à identifier les inefficacités systémiques et à mesurer l'impact des initiatives d'amélioration des processus sur l'ensemble de l'opération. Pourquoi c'est important C'est un KPI primaire pour mesurer l'efficacité globale du processus d'entrepôt, offrant une vue d'ensemble des performances opérationnelles. Où obtenir Calculé au niveau du cas en soustrayant l'horodatage du premier événement ('Ordre d'entrepôt créé') de l'horodatage du dernier événement ('Ordre d'entrepôt terminé'). Exemples 8640017280043200 | |||
Activités de gestion d'entrepôt
| Activité | Description | ||
|---|---|---|---|
| Emballage terminé | Cette activité signifie que tous les articles destinés à un envoi ont été conditionnés dans une unité de manutention, qui est maintenant fermée et étiquetée. Les marchandises conditionnées sont prêtes pour l'étape suivante, telle que la préparation ou le chargement. | ||
| Pourquoi c'est important Cette étape marque la fin de la phase de conditionnement. C'est un prérequis pour la préparation et l'expédition, donc tout retard ici impacte directement le délai global et le KPI du délai de conditionnement et de préparation. Où obtenir Peut être capturé lorsque le statut de l'unité de manutention (UM) est défini sur 'Fermé' ou lorsque la dernière tâche d'entrepôt liée à l'emballage pour l'ordre d'entrepôt est confirmée. La table /SCWM/HUHDR contient les informations de statut de l'UM. Capture Identifiez l'horodatage lorsque l'unité de manutention d'expédition finale associée à la commande est fermée ou complétée. Type d'événement inferred | |||
| Ordre d'entrepôt créé | Cette activité marque la création d'un ordre d'entrepôt (WO), qui est un paquet de travail composé de plusieurs tâches d'entrepôt. Le système génère un WO pour regrouper et organiser le travail des employés de l'entrepôt, basé sur des critères tels que la zone d'activité, la file d'attente ou le produit. | ||
| Pourquoi c'est important C'est le principal événement de démarrage du processus d'exécution d'entrepôt. L'analyse du temps écoulé entre la création et la première action aide à identifier les retards dans l'attribution des tâches et l'allocation des ressources. Où obtenir Cet événement est capturé à partir de l'horodatage de création (champ CREATED_AT) dans la table d'en-tête de l'ordre d'entrepôt, /SCWM/WHO. Capture Extrayez l'horodatage de création de la table /SCWM/WHO pour chaque numéro d'ordre d'entrepôt (WHO). Type d'événement explicit | |||
| Ordre d'entrepôt terminé | Le statut de l'ordre d'entrepôt est défini sur « Terminé » après la confirmation de toutes les tâches d'entrepôt associées. Cela clôture le paquet de travail du point de vue de l'exécution. | ||
| Pourquoi c'est important C'est l'événement de fin de succès principal du processus. Il est essentiel pour calculer le temps de cycle d'entrepôt de bout en bout et mesurer le débit global. Où obtenir Capturé en suivant le changement du champ de statut (STAT) à 'Terminé' dans la table d'en-tête de l'ordre d'entrepôt, /SCWM/WHO. Le journal des modifications de cette table (DBTABLOG) ou un champ d'horodatage dédié peut être utilisé. Capture Identifiez l'horodatage lorsque le statut dans /SCWM/WHO est défini sur 'C' (Terminé). Type d'événement inferred | |||
| Sortie de marchandises enregistrée | C'est la dernière étape logistique et financière du système qui retire formellement les marchandises de l'inventaire de l'entrepôt. Cela signifie que la propriété légale a été transférée et que l'expédition est officiellement partie. | ||
| Pourquoi c'est important Un point final crucial pour le flux de sortie, déclenchant la facturation et les mises à jour d'inventaire. C'est un composant clé pour mesurer les expéditions à temps et le KPI de temps de chargement et d'expédition. Où obtenir Déduit de l'enregistrement d'un document de livraison sortante associé à l'ordre d'entrepôt. Vérifiez le flux de documents ou les champs de statut (par exemple, DGI_STAT) dans la table /SCDL/DB_PROCH_O. Capture Identifiez l'horodatage lorsque le statut de sortie de marchandises est défini sur 'Terminé' pour la livraison sortante associée. Type d'événement explicit | |||
| Tâche de picking confirmée | Un opérateur d'entrepôt confirme l'achèvement d'une tâche d'entrepôt de picking, indiquant que les marchandises ont été physiquement récupérées de leur emplacement de stockage. Cela se fait généralement via un scanner RF. | ||
| Pourquoi c'est important C'est une étape critique dans l'exécution des commandes, impactant directement le temps de cycle de la commande à l'expédition. L'analyse de cette activité aide à mesurer la productivité des pickers et à identifier les goulots d'étranglement de picking. Où obtenir Capturé à partir de l'horodatage de confirmation (champ CONFIRMED_AT) dans la table des tâches d'entrepôt, /SCWM/WT. Le statut de la tâche (STAT) est mis à jour sur 'Confirmé'. Capture Utilisez l'horodatage de confirmation de la table /SCWM/WT pour les tâches de picking associées à l'ordre d'entrepôt. Type d'événement explicit | |||
| Tâche de rangement confirmée | Un opérateur d'entrepôt confirme que la tâche d'entrepôt de rangement a été achevée, ce qui signifie que les marchandises ont été physiquement placées dans l'emplacement de stockage désigné. Cette confirmation met à jour la localisation des stocks en temps réel. | ||
| Pourquoi c'est important Cette activité est une étape clé pour le traitement des entrées, confirmant que le stock est disponible pour le picking. Les retards ici impactent directement le KPI du temps de cycle de la réception des marchandises au rangement. Où obtenir Capturé à partir de l'horodatage de confirmation (champ CONFIRMED_AT) dans la table des tâches d'entrepôt, /SCWM/WT. Le statut de la tâche (STAT) passe également à 'Confirmé'. Capture Utilisez l'horodatage de confirmation de la table /SCWM/WT pour les tâches de rangement associées à l'ordre d'entrepôt. Type d'événement explicit | |||
| Chargement démarré | Cette activité marque le début du chargement physique des marchandises de la zone de préparation vers un camion ou une unité de transport. Ceci est souvent initié par une action de l'utilisateur dans le système. | ||
| Pourquoi c'est important Le début de la dernière étape physique dans l'entrepôt. L'analyse de la durée de chargement aide à optimiser l'utilisation des quais de chargement et le temps de rotation des transporteurs. Où obtenir Déduit du changement de statut de l'unité de transport (TU) ou de l'ordre de livraison sortante associé à 'Chargement démarré'. La table /SCWM/TU_STATUS peut être vérifiée. Capture Capturez l'horodatage lorsque le statut de l'unité de transport (TU) ou de l'ordre de livraison est mis à jour pour refléter le début du chargement. Type d'événement inferred | |||
| Chargement terminé | Indique que toutes les marchandises destinées à un envoi ont été physiquement chargées sur l'unité de transport. C'est un prérequis pour l'enregistrement de la sortie de marchandises et l'expédition du véhicule. | ||
| Pourquoi c'est important Une étape clé avant l'expédition finale. Les retards entre la fin du chargement et la sortie de marchandises peuvent indiquer des problèmes de documentation ou de système qui retiennent les transporteurs. Où obtenir Déduit du changement de statut de l'unité de transport (TU) ou de l'ordre de livraison sortante associé à 'Chargement terminé'. Les statuts dans les tables /SCWM/TU et /SCDL/DB_PROCH_O sont pertinents. Capture Capturez l'horodatage lorsque le statut de l'unité de transport (TU) ou de l'ordre de livraison est mis à jour pour refléter l'achèvement du chargement. Type d'événement inferred | |||
| Début du conditionnement | Représente le début des activités de conditionnement, où les articles prélevés sont consolidés et placés dans des conteneurs d'expédition ou des unités de manutention. C'est souvent la première étape à un poste de travail d'emballage. | ||
| Pourquoi c'est important Marque le début de la phase des services à valeur ajoutée. Mesurer la durée de l'emballage aide à optimiser l'aménagement du poste de travail, la dotation en personnel et les matériaux. Où obtenir Cet événement peut devoir être inféré. Il peut être dérivé du premier scan d'un article ou d'une unité de manutention à une station de conditionnement, souvent capturé dans les journaux des postes de travail ou des unités de manutention. Des tables comme /SCWM/PACKSPEC et les journaux d'exécution associés peuvent en être une source. Capture Utilisez l'horodatage de la première confirmation de tâche d'entrepôt liée au conditionnement pour la livraison, ou l'heure de création de l'unité de manutention finale d'expédition. Type d'événement inferred | |||
| Ordre d'entrepôt annulé | L'ordre d'entrepôt est annulé avant que toutes les tâches ne soient terminées, empêchant toute exécution ultérieure. Cela peut se produire en raison de l'indisponibilité des stocks, de changements dans les commandes clients ou d'autres exceptions. | ||
| Pourquoi c'est important Représente un chemin d'échec ou d'exception. L'analyse de la fréquence et des raisons des annulations aide à identifier les problèmes en amont dans la planification, la précision des stocks ou la gestion des commandes. Où obtenir Capturé en suivant le changement du champ de statut (STAT) à 'Annulé' dans la table d'en-tête de l'ordre d'entrepôt, /SCWM/WHO. Capture Identifiez l'horodatage lorsque le statut dans /SCWM/WHO est défini sur une valeur de statut d'annulation. Type d'événement inferred | |||
| Réception de marchandises enregistrée | Marque l'acceptation formelle des marchandises dans l'inventaire de l'entrepôt en provenance d'un fournisseur externe ou de la production. C'est une écriture financière et d'inventaire clé qui rend le stock visible et disponible pour les processus ultérieurs comme le rangement. | ||
| Pourquoi c'est important C'est une étape critique dans le processus d'entrée. Le temps entre l'arrivée des marchandises et cet enregistrement peut indiquer des arriérés dans la zone de réception, impactant la disponibilité des stocks. Où obtenir Déduit de l'enregistrement d'un document de livraison entrante associé à l'ordre d'entrepôt. Vérifiez le flux de documents ou les champs de statut (par exemple, DGRSTAT) dans la table /SCDL/DB_PROCH_I. Capture Identifiez l'horodatage lorsque le statut de réception de marchandises est défini sur 'Terminé' pour la livraison entrante associée. Type d'événement inferred | |||
| Tâche de prélèvement créée | Le système génère une tâche d'entrepôt (WT) pour prélever des marchandises d'un bac de stockage afin d'exécuter un ordre de livraison sortant. Ceci représente l'instruction du système pour qu'un opérateur récupère un produit. | ||
| Pourquoi c'est important Le début du processus physique sortant. Le décalage temporel entre la création et la confirmation des tâches de picking est crucial pour analyser l'efficacité du picking et la disponibilité des ressources. Où obtenir Capturé à partir de l'horodatage de création (champ CREATED_AT) de la tâche d'entrepôt pertinente dans la table /SCWM/WT, où le type de processus indique le picking. Capture Filtrez les tâches d'entrepôt avec un type de processus de picking lié à l'ordre d'entrepôt et utilisez leur horodatage de création. Type d'événement explicit | |||
| Tâche de préparation confirmée | Un opérateur d'entrepôt confirme le mouvement d'une unité de manutention emballée d'un poste d'emballage ou d'une zone de consolidation vers une zone de préparation d'expédition désignée. Les marchandises sont maintenant positionnées pour le chargement. | ||
| Pourquoi c'est important Ceci marque la transition du traitement interne à la logistique sortante. Des retards dans la préparation peuvent entraîner des quais de chargement désorganisés et des rendez-vous de ramassage manqués par les transporteurs. Où obtenir Capturé à partir de l'horodatage de confirmation (champ CONFIRMED_AT) d'une tâche d'entrepôt (/SCWM/WT) avec un type de processus pour les mouvements de préparation pour expédition. Capture Identifiez l'horodatage de confirmation pour la tâche d'entrepôt de préparation pour expédition associée à l'unité de manutention ou à la livraison. Type d'événement explicit | |||
| Tâche de rangement créée | Le système génère une instruction spécifique, une tâche d'entrepôt (WT), pour déplacer les marchandises reçues d'une zone de réception vers un bac de stockage final. Cette activité représente la préparation du système à exécuter le mouvement de rangement. | ||
| Pourquoi c'est important Le suivi du temps entre la création et la confirmation des tâches révèle le temps qu'il faut pour que les instructions de rangement soient prises en charge et exécutées par les opérateurs d'entrepôt, mettant en évidence d'éventuelles pénuries de main-d'œuvre ou d'équipement. Où obtenir Capturé à partir de l'horodatage de création (champ CREATED_AT) de la tâche d'entrepôt pertinente dans la table /SCWM/WT, où le type de processus indique le rangement. Capture Filtrez les tâches d'entrepôt avec un type de processus de rangement lié à l'ordre d'entrepôt et utilisez leur horodatage de création. Type d'événement explicit | |||
Guides d'extraction
Étapes
- Prérequis : Identifier ou créer des vues CDS : Les principales sources de données sont les vues CDS standard SAP S/4HANA pour la Gestion d'entrepôt. Les vues clés sont
I_WarehouseOrderpour les événements au niveau des ordres etI_WarehouseTaskpour les événements au niveau des tâches. D'autres vues commeI_OutboundDeliveryItem,I_InboundDeliveryItemetI_EWMTransportationUnitsont nécessaires pour les événements logistiques connexes. Assurez-vous que ces vues sont actives dans votre système. - Créer une vue CDS personnalisée : Pour combiner des données de plusieurs sources dans un format de journal d'événements unique, vous devez créer une vue CDS personnalisée. Utilisez les outils de développement ABAP (ADT) dans Eclipse pour créer une nouvelle définition de données. Cette vue personnalisée utilisera
UNION ALLpour fusionner les enregistrements de différentes sources, chacune représentant une activité commerciale distincte. - Définir la structure du journal d'événements : Dans votre vue CDS personnalisée, définissez les champs qui formeront les colonnes de votre journal d'événements. Cela doit inclure
WarehouseOrder,ActivityName,EventTime, et d'autres attributs requis et recommandés. Mappez ces champs à partir des vues CDS standard sous-jacentes. - Modéliser les événements d'ordre d'entrepôt : Ajoutez les premières instructions
SELECTà votre union. Sélectionnez à partir deI_WarehouseOrderpour générer l'événement 'Ordre d'entrepôt créé' en utilisant l'horodatage de création. Ajoutez des instructionsSELECTsubséquentes pour les événements 'Ordre d'entrepôt terminé' et 'Ordre d'entrepôt annulé' en filtrant sur le statut de l'ordre et en utilisant les horodatages de confirmation ou de modification appropriés. - Modéliser les événements de tâche d'entrepôt : Ajoutez des instructions
SELECTà partir deI_WarehouseTask. Générez les événements 'Tâche de rangement créée' et 'Tâche de rangement confirmée' en filtrant les catégories de processus d'entrepôt liées au rangement. De même, créez les événements 'Tâche de picking créée', 'Tâche de picking confirmée' et 'Tâche de préparation pour expédition confirmée' basés sur leurs catégories de processus respectives et utilisez les horodatages de création et de confirmation. - Modéliser les événements de mouvement de marchandises : Joignez les vues liées à la livraison aux tâches d'entrepôt pour capturer les mouvements de marchandises. Pour 'Réception de marchandises enregistrée', sélectionnez à partir de
I_InboundDeliveryItemen utilisant leActualGoodsMovementDateTime. Pour 'Sortie de marchandises enregistrée', utilisez le même champ deI_OutboundDeliveryItem, en le liant à l'ordre d'entrepôt ou à la tâche pertinente. - Modéliser les événements de chargement et d'emballage : Sélectionnez à partir de
I_EWMTransportationUnitpour capturer les événements 'Chargement démarré' et 'Chargement terminé' en utilisant leurs horodatages dédiés. Pour l'emballage, qui peut être complexe, utilisez un proxy en sélectionnant à partir d'une vue d'unité de manutention (Handling Unit), où l'heure de création peut représenter 'Emballage démarré' et une heure de changement de statut peut représenter 'Emballage terminé'. Cette étape peut nécessiter un ajustement en fonction de votre processus d'emballage spécifique. - Ajouter des annotations pour exposer la vue CDS : Ajoutez l'annotation
@OData.publish: trueà votre définition de vue CDS personnalisée. Cela indique à SAP de générer automatiquement un service OData basé sur la structure de la vue. - Activer la vue CDS et le service OData : Activez la nouvelle définition de données dans ADT. Ensuite, naviguez vers le système hub SAP Gateway et utilisez la transaction
/IWFND/MAINT_SERVICEpour trouver et activer le service OData nouvellement généré. Cela rend les données accessibles via un point d'accès API REST. - Extraire les données : Utilisez votre plateforme de données cible ou votre outil ETL pour vous connecter au point d'accès du service OData activé. Appliquez des filtres directement dans l'URI OData, tels que le filtrage sur
EventTimepour limiter la portée des données (par exemple,?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formater pour le Process Mining : Assurez-vous que les données extraites sont enregistrées dans un format de fichier plat, tel qu'un CSV, avec des en-têtes de colonne correspondant aux attributs requis pour ProcessMind (
WarehouseOrder,ActivityName,EventTime, etc.). Téléchargez le fichier final dans l'outil de Process Mining.
Configuration
- Vue CDS personnalisée: Une vue CDS dédiée, par exemple
Z_C_EWM_EVENTLOG_CDS, doit être créée pour unifier les données d'événements. C'est l'objet central de l'extraction. - Service OData: Le service OData généré à partir de la vue CDS personnalisée doit être activé. Le nom du service est généralement le nom de la vue CDS avec un suffixe
_CDS. - Filtrage par plage de dates: Il est crucial d'appliquer un filtre de date sur le champ
EventTimelors de l'appel de l'API OData. Une plage typique pour une analyse initiale est de 3 à 6 mois de données. Sans filtre, la requête peut expirer ou causer des problèmes de performance. - Filtrage d'entités: Pour limiter davantage la portée des données, envisagez d'appliquer des filtres sur des attributs comme le numéro d'entrepôt (
Warehouse), le type d'ordre d'entrepôt (WarehouseOrderType) ou des matières spécifiques (MaterialNumber). - Autorisations système: L'utilisateur créant la vue CDS nécessite un accès développeur SAP dans ADT. L'utilisateur ou le compte de service appelant l'API OData nécessite des autorisations pour accéder aux données de gestion d'entrepôt sous-jacentes.
a Exemple de requête sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate Étapes
- Prérequis : Identifier ou créer des vues CDS : Les principales sources de données sont les vues CDS standard SAP S/4HANA pour la Gestion d'entrepôt. Les vues clés sont
I_WarehouseOrderpour les événements au niveau des ordres etI_WarehouseTaskpour les événements au niveau des tâches. D'autres vues commeI_OutboundDeliveryItem,I_InboundDeliveryItemetI_EWMTransportationUnitsont nécessaires pour les événements logistiques connexes. Assurez-vous que ces vues sont actives dans votre système. - Créer une vue CDS personnalisée : Pour combiner des données de plusieurs sources dans un format de journal d'événements unique, vous devez créer une vue CDS personnalisée. Utilisez les outils de développement ABAP (ADT) dans Eclipse pour créer une nouvelle définition de données. Cette vue personnalisée utilisera
UNION ALLpour fusionner les enregistrements de différentes sources, chacune représentant une activité commerciale distincte. - Définir la structure du journal d'événements : Dans votre vue CDS personnalisée, définissez les champs qui formeront les colonnes de votre journal d'événements. Cela doit inclure
WarehouseOrder,ActivityName,EventTime, et d'autres attributs requis et recommandés. Mappez ces champs à partir des vues CDS standard sous-jacentes. - Modéliser les événements d'ordre d'entrepôt : Ajoutez les premières instructions
SELECTà votre union. Sélectionnez à partir deI_WarehouseOrderpour générer l'événement 'Ordre d'entrepôt créé' en utilisant l'horodatage de création. Ajoutez des instructionsSELECTsubséquentes pour les événements 'Ordre d'entrepôt terminé' et 'Ordre d'entrepôt annulé' en filtrant sur le statut de l'ordre et en utilisant les horodatages de confirmation ou de modification appropriés. - Modéliser les événements de tâche d'entrepôt : Ajoutez des instructions
SELECTà partir deI_WarehouseTask. Générez les événements 'Tâche de rangement créée' et 'Tâche de rangement confirmée' en filtrant les catégories de processus d'entrepôt liées au rangement. De même, créez les événements 'Tâche de picking créée', 'Tâche de picking confirmée' et 'Tâche de préparation pour expédition confirmée' basés sur leurs catégories de processus respectives et utilisez les horodatages de création et de confirmation. - Modéliser les événements de mouvement de marchandises : Joignez les vues liées à la livraison aux tâches d'entrepôt pour capturer les mouvements de marchandises. Pour 'Réception de marchandises enregistrée', sélectionnez à partir de
I_InboundDeliveryItemen utilisant leActualGoodsMovementDateTime. Pour 'Sortie de marchandises enregistrée', utilisez le même champ deI_OutboundDeliveryItem, en le liant à l'ordre d'entrepôt ou à la tâche pertinente. - Modéliser les événements de chargement et d'emballage : Sélectionnez à partir de
I_EWMTransportationUnitpour capturer les événements 'Chargement démarré' et 'Chargement terminé' en utilisant leurs horodatages dédiés. Pour l'emballage, qui peut être complexe, utilisez un proxy en sélectionnant à partir d'une vue d'unité de manutention (Handling Unit), où l'heure de création peut représenter 'Emballage démarré' et une heure de changement de statut peut représenter 'Emballage terminé'. Cette étape peut nécessiter un ajustement en fonction de votre processus d'emballage spécifique. - Ajouter des annotations pour exposer la vue CDS : Ajoutez l'annotation
@OData.publish: trueà votre définition de vue CDS personnalisée. Cela indique à SAP de générer automatiquement un service OData basé sur la structure de la vue. - Activer la vue CDS et le service OData : Activez la nouvelle définition de données dans ADT. Ensuite, naviguez vers le système hub SAP Gateway et utilisez la transaction
/IWFND/MAINT_SERVICEpour trouver et activer le service OData nouvellement généré. Cela rend les données accessibles via un point d'accès API REST. - Extraire les données : Utilisez votre plateforme de données cible ou votre outil ETL pour vous connecter au point d'accès du service OData activé. Appliquez des filtres directement dans l'URI OData, tels que le filtrage sur
EventTimepour limiter la portée des données (par exemple,?$filter=EventTime ge datetime'2023-01-01T00:00:00'). - Formater pour le Process Mining : Assurez-vous que les données extraites sont enregistrées dans un format de fichier plat, tel qu'un CSV, avec des en-têtes de colonne correspondant aux attributs requis pour ProcessMind (
WarehouseOrder,ActivityName,EventTime, etc.). Téléchargez le fichier final dans l'outil de Process Mining.
Configuration
- Vue CDS personnalisée: Une vue CDS dédiée, par exemple
Z_C_EWM_EVENTLOG_CDS, doit être créée pour unifier les données d'événements. C'est l'objet central de l'extraction. - Service OData: Le service OData généré à partir de la vue CDS personnalisée doit être activé. Le nom du service est généralement le nom de la vue CDS avec un suffixe
_CDS. - Filtrage par plage de dates: Il est crucial d'appliquer un filtre de date sur le champ
EventTimelors de l'appel de l'API OData. Une plage typique pour une analyse initiale est de 3 à 6 mois de données. Sans filtre, la requête peut expirer ou causer des problèmes de performance. - Filtrage d'entités: Pour limiter davantage la portée des données, envisagez d'appliquer des filtres sur des attributs comme le numéro d'entrepôt (
Warehouse), le type d'ordre d'entrepôt (WarehouseOrderType) ou des matières spécifiques (MaterialNumber). - Autorisations système: L'utilisateur créant la vue CDS nécessite un accès développeur SAP dans ADT. L'utilisateur ou le compte de service appelant l'API OData nécessite des autorisations pour accéder aux données de gestion d'entrepôt sous-jacentes.
a Exemple de requête sql
DEFINE VIEW Z_C_EWM_EVENTLOG_CDS
WITH PARAMETERS
P_StartDate : abap.dats,
P_EndDate : abap.dats
AS SELECT FROM I_WarehouseOrder AS WO
{
-- Required Attributes
WO.WarehouseOrder AS WarehouseOrder,
CAST('Warehouse Order Created' AS abap.char(40)) AS ActivityName,
WO.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
-- Recommended Attributes
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.CreationUser AS User,
WO.WarehouseOrderType AS WarehouseOrderType,
WO.WarehouseOrderStatus AS WarehouseOrderStatus,
WO.Priority AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
CAST(WO.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Completed' AS abap.char(40)) AS ActivityName,
WO.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.ConfirmationUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'C' AND
CAST(WO.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseOrder AS WO
{
WO.WarehouseOrder,
CAST('Warehouse Order Canceled' AS abap.char(40)) AS ActivityName,
WO.LastChangeDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
CAST(NULL AS abap.char(40)) AS MaterialNumber,
WO.LastChangeUser AS User,
WO.WarehouseOrderType,
WO.WarehouseOrderStatus,
WO.Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WO.WarehouseOrderStatus = 'X' AND
CAST(WO.LastChangeDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_InboundDeliveryItem AS IBD ON WT.DeliveryDocument = IBD.InboundDelivery AND WT.DeliveryDocumentItem = IBD.InboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Receipt Posted' AS abap.char(40)) AS ActivityName,
IBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
IBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
IBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(IBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Putaway Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '1' AND -- Putaway
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Created' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Picking Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Started' AS abap.char(40)) AS ActivityName,
WT.CreationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
WT.ConfirmationDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
WT.CreationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
CAST(WT.CreationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Packing Completed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '5' AND -- Packing
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
{
WT.WarehouseOrder,
CAST('Staging Task Confirmed' AS abap.char(40)) AS ActivityName,
WT.ConfirmationDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
WT.ConfirmationUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
WT.ProcessorProcTimeInSec AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '4' AND -- Staging
WT.WarehouseTaskStatus = 'C' AND
CAST(WT.ConfirmationDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Started' AS abap.char(40)) AS ActivityName,
TU.LoadingStartDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
TU.LoadingEndDateTime AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingStartDateTime IS NOT NULL AND
CAST(TU.LoadingStartDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_EWMTransportationUnit AS TU
INNER JOIN I_WarehouseTask AS WT ON TU.TransportationUnit = WT.ShipmentOrTransportationUnit
{
WT.WarehouseOrder,
CAST('Loading Completed' AS abap.char(40)) AS ActivityName,
TU.LoadingEndDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
TU.LastChangeUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
TU.LoadingEndDateTime IS NOT NULL AND
TU.LoadingStatus = 'C' AND
CAST(TU.LoadingEndDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate
UNION ALL
SELECT FROM I_WarehouseTask AS WT
LEFT JOIN I_OutboundDeliveryItem AS OBD ON WT.DeliveryDocument = OBD.OutboundDelivery AND WT.DeliveryDocumentItem = OBD.OutboundDeliveryItem
{
WT.WarehouseOrder,
CAST('Goods Issue Posted' AS abap.char(40)) AS ActivityName,
OBD.ActualGoodsMovementDateTime AS EventTime,
CAST('S4HANA_EWM' AS abap.char(20)) AS SourceSystem,
tstmp_current_utctimestamp() AS LastDataUpdate,
CAST(NULL AS abap.tstp) AS EventEndTime,
WT.Product AS MaterialNumber,
OBD.LastChangedByUser AS User,
WT.WarehouseOrderType,
CAST(NULL AS abap.char(1)) AS WarehouseOrderStatus,
CAST(NULL AS abap.numc(2)) AS Priority,
CAST(NULL AS abap.dec(15, 2)) AS ProcessingTime
}
WHERE
WT.WhseTskProcessCat = '2' AND -- Stock Removal
OBD.GoodsMovementStatus = 'C' AND -- Completed
CAST(OBD.ActualGoodsMovementDateTime AS abap.dats) BETWEEN :P_StartDate AND :P_EndDate