Votre modèle de données pour la gestion des entrepôts
Votre modèle de données pour la gestion des entrepôts
- Attributs recommandés pour une analyse complète
- Activités clés à suivre tout au long de votre processus
- Conseils pour extraire les données de SAP EWM
Attributs de la gestion d’entrepôt
| Nom | Description | ||
|---|---|---|---|
| Commande d’entrepôt WarehouseOrder | Identifiant unique d’un Warehouse Order, qui regroupe un ensemble de tâches d’entrepôt à exécuter par une ressource. | ||
| Description Le Warehouse Order sert d’identifiant principal de cas pour suivre de bout en bout le processus de traitement des marchandises dans l’entrepôt. Il représente un lot de travail, comme le prélèvement d’articles pour une livraison sortante ou la mise en stock de marchandises reçues. Chaque Warehouse Order contient une ou plusieurs Warehouse Tasks. Dans le Process Mining, l’analyse par Warehouse Order offre une vue complète du cycle de vie d’un lot de travail donné. Elle aide à identifier les goulots d’étranglement, à mesurer les délais de cycle globaux entre la création et la fin, et à comprendre le déroulement complet des activités associées à une même instruction logistique. Pourquoi c’est important Il s’agit de l’identifiant central qui relie toutes les activités d’entrepôt associées, permettant une analyse de bout en bout du processus et la mesure du délai de cycle pour une même unité de travail. Où les obtenir Cet identifiant se trouve généralement dans la table d’en-tête des Warehouse Orders de SAP EWM, par exemple /SCWM/WHO. Exemples 200000145200000146200000147 | |||
| Dernière mise à jour des données LastDataUpdate | Horodatage indiquant la dernière actualisation des données de cet enregistrement depuis le système source. | ||
| Description Cet attribut indique la date de la dernière extraction des données depuis le système source. Il fournit un contexte important sur l’actualité des données analysées. Dans toute analyse ou tout Dashboard, il est essentiel de connaître la récence des données pour prendre des décisions éclairées. Cet horodatage permet de déterminer si les informations consultées sont en temps réel ou correspondent à un instant précis, et de mieux évaluer leur actualité. Pourquoi c’est important Il indique l’actualité des données, ce qui est essentiel pour comprendre le degré de mise à jour de l’analyse des processus. Où les obtenir Il s’agit d’un champ de métadonnées généralement généré et ajouté lors du processus d’extraction (ETL). Il correspond à l’horodatage du chargement des données. Exemples 2023-11-01T02:00:00Z2023-11-02T02:00:00Z | |||
| Heure de début EventTime | 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é précise de l’entrepôt s’est produite. Il constitue le principal élément temporel utilisé pour ordonner les événements et calculer les délais entre eux. Dans le Process Mining, l’heure de début est essentielle pour construire la séquence chronologique des événements de chaque cas. Elle sert à calculer les délais de cycle, les temps d’attente et les temps de traitement, qui sont importants pour l’analyse des performances, l’identification des goulots d’étranglement et le suivi des SLA. Pourquoi c’est important Cet horodatage est essentiel pour ordonner les événements chronologiquement et calculer toutes les métriques de performance fondées sur le temps, comme les délais de cycle et les durées. Où les obtenir Il se trouve généralement dans les tables d’événements ou de confirmations telles que /SCWM/ORDIM_C, par exemple dans le champ CONF_TIMESTAMP, ou dans les journaux de changements de statut associés aux Warehouse Orders et aux tâches. Exemples 2023-10-26T10:00:00Z2023-10-26T10:15:30Z2023-10-26T11:20:00Z | |||
| Nom de l’activité ActivityName | Nom de l’activité ou de l’événement précis de gestion d’entrepôt qui s’est produit, comme « Picking Task Created » ou « Goods Issue Posted ». | ||
| Description Cet attribut décrit une étape ou un événement précis du processus de gestion d’entrepôt. Ces activités constituent les éléments de base de la cartographie du processus et représentent des tâches telles que la création, la confirmation, la préparation, 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 permet de visualiser le flux du processus, d’identifier les parcours fréquents et rares, de détecter les écarts par rapport à la procédure standard et de repérer les étapes qui provoquent des retards ou des reprises. Pourquoi c’est important Il définit les étapes du processus, constitue la base de la cartographie du processus et permet d’analyser le flux, les écarts et les goulots d’étranglement. Où les obtenir Cet attribut est dérivé des changements de statut, des messages d’événements ou des journaux de transactions associés aux Warehouse Orders et aux tâches, dans des tables telles que /SCWM/ORDIM_C (confirmations), ou par interprétation des champs de statut dans /SCWM/WHO et /SCWM/ORDIM_O. Exemples Tâche de prélèvement confirméeTâche de mise en stock crééeRéception des marchandises comptabiliséeWarehouse Order terminé | |||
| Système source SourceSystem | Identifie le système source depuis lequel les données ont été extraites, par exemple l’instance de production SAP EWM. | ||
| Description Cet attribut précise le système de référence dont proviennent les données de gestion d’entrepôt. Dans un environnement d’entreprise composé de plusieurs systèmes, il est essentiel d’indiquer l’origine des données pour assurer leur traçabilité et leur mise en contexte. Pour l’analyse, cette information permet de distinguer les processus susceptibles de s’étendre sur plusieurs systèmes ou de comparer des processus issus de différentes instances, par exemple des systèmes distincts selon les régions. Elle garantit une traçabilité claire et vérifiable des données. Pourquoi c’est important Il fournit la traçabilité et le contexte nécessaires, notamment dans les environnements comprenant plusieurs instances SAP ou des systèmes intégrés, et garantit une traçabilité claire des données. Où les obtenir Il s’agit généralement d’une valeur statique ajoutée lors du processus d’extraction, de transformation et de chargement (ETL), qui identifie l’instance SAP S/4HANA ou EWM concernée. Exemples SAP_EWM_PROD_EUS4H_US_100EWM_APAC_PRD | |||
| Heure de fin EventEndTime | Horodatage indiquant la fin de l’activité ou de l’événement. | ||
| Description Cet attribut enregistre la date et l’heure auxquelles une activité précise de l’entrepôt s’est terminée. Il est souvent identique à l’heure de début pour les événements atomiques, mais peut différer pour les activités dont la durée est mesurable, comme la préparation ou le chargement. La présence d’une heure de fin distincte permet de calculer précisément le temps de traitement de chaque activité. Elle est essentielle aux Dashboards de performance qui analysent la durée d’étapes précises, comme « Picking & Packing Efficiency », afin d’identifier les tâches qui consomment le plus de temps. Pourquoi c’est important Elle permet de calculer précisément la durée des activités individuelles, ce qui est essentiel pour identifier les étapes longues et les tâches qui mobilisent beaucoup de ressources. Où les obtenir Elle est souvent identique à l’horodatage de début pour les événements discrets. Pour les tâches de longue durée, elle peut correspondre à un champ distinct dans des tables telles que /SCWM/ORDIM_C ou être déduite d’un changement de statut ultérieur. Exemples 2023-10-26T10:05:00Z2023-10-26T10:25:45Z2023-10-26T11:20:00Z | |||
| Identifiant utilisateur User | Identifiant de l’opérateur ou de l’utilisateur de l’entrepôt qui a confirmé ou exécuté l’activité. | ||
| Description Cet attribut enregistre l’identifiant utilisateur de la personne responsable de l’exécution d’une Warehouse Task. Il peut s’agir du préparateur qui a confirmé un prélèvement, de l’opérateur du poste de préparation ou du cariste qui a confirmé une mise en stock. Ces données sont essentielles au Dashboard « Resource & Equipment Utilization ». Elles permettent d’analyser les performances individuelles ou collectives, d’identifier les besoins de formation et de mieux répartir la charge de travail entre les équipes de l’entrepôt. Pourquoi c’est important Il associe le travail à une personne précise, ce qui permet d’analyser les performances par utilisateur ou par équipe et de soutenir la gestion des ressources ainsi que l’équilibrage de la charge de travail. Où les obtenir Il se trouve généralement dans les données de confirmation d’une Warehouse Task, par exemple dans la table /SCWM/ORDIM_C, champ UNAME. Exemples JSMITHARODRIGUEZOPERATOR_05 | |||
| Numéro de matériel MaterialNumber | Identifiant unique du produit ou du matériel traité dans le cadre de la Warehouse Task. | ||
| Description Cet attribut précise le matériel déplacé, prélevé, préparé ou reçu. Il constitue une dimension importante pour segmenter et analyser les performances de l’entrepôt selon les caractéristiques des produits. L’analyse par numéro de matériel permet de répondre à des questions telles que : quels produits présentent les délais de mise en stock les plus longs, lesquels sont le plus souvent associés à des erreurs de prélèvement ou lesquels nécessitent des contrôles qualité ? Elle est essentielle aux Dashboards « Goods Receipt & Putaway Performance » et « Quality Inspection Lead Time ». Pourquoi c’est important Il permet de filtrer et de segmenter les données du processus par produit, ce qui est essentiel pour identifier les problèmes propres à certains produits lors de la manutention, du stockage ou du contrôle qualité. Où les obtenir Ces informations sont généralement disponibles dans les tables des Warehouse Tasks, telles que /SCWM/ORDIM_O, et sont liées aux données de base des articles. Exemples FIN-1001RAW-2050SFIN-300-A | |||
| Priorité Priority | Niveau de priorité attribué à l'ordre d'entrepôt, indiquant son degré d'urgence, par exemple élevé, moyen ou faible. | ||
| Description Cet attribut classe les ordres d'entrepôt selon leur importance ou leur degré d'urgence pour l'entreprise. Les ordres hautement prioritaires peuvent, par exemple, concerner des expéditions express ou l'approvisionnement critique de la production et nécessiter un traitement accéléré. La priorité constitue une dimension essentielle du Dashboard et du KPI « Respect des délais de traitement des ordres prioritaires ». Elle permet de filtrer et de segmenter les performances afin de vérifier que les ordres les plus importants sont traités dans les délais prévus, en alignant les opérations de l'entrepôt sur les objectifs de l'entreprise. Pourquoi c’est important Permet de hiérarchiser l'analyse et le suivi afin de vérifier que les ordres les plus urgents respectent leurs niveaux de service, avec un effet direct sur la satisfaction client. Où les obtenir La priorité peut être définie dans le document de livraison sous-jacent, puis transférée à l'ordre d'entrepôt. Elle peut se trouver dans des tables telles que /SCWM/WHO. Exemples ÉlevéeMoyenneFaible | |||
| Statut du Warehouse Order WarehouseOrderStatus | Statut actuel ou final du Warehouse Order, par exemple « Completed » ou « Canceled ». | ||
| Description Cet attribut indique le résultat final d’un Warehouse Order. Il est essentiel de savoir si une commande a été terminée ou annulée pour analyser les taux de réussite du processus et identifier les causes de non-achèvement. Il sert de filtre important dans de nombreuses analyses. Par exemple, le calcul du délai de cycle de l’entrepôt de bout en bout porte généralement uniquement sur les commandes terminées. Il aide également à identifier et à étudier la fréquence et les causes des annulations. Pourquoi c’est important Il indique le résultat d’un cas et permet de filtrer les commandes terminées et annulées, ce qui est essentiel pour analyser correctement les délais de cycle et le débit. Où les obtenir Le champ de statut se trouve généralement dans la table d’en-tête des Warehouse Orders, /SCWM/WHO. Exemples TerminéEn coursAnnulé | |||
| Type de Warehouse Order WarehouseOrderType | Classe le Warehouse Order selon sa finalité, par exemple Putaway, Picking ou Internal Replenishment. | ||
| Description Le type de Warehouse Order catégorise les commandes selon la fonction logistique qu’elles remplissent. Cette distinction est fondamentale, car les différents types de commandes suivent des parcours distincts et répondent à des attentes de performance différentes. Dans l’analyse, cet attribut constitue une dimension principale de filtrage et de comparaison. Par exemple, le Dashboard « Warehouse Order Throughput & Volume » s’appuie sur cette dimension pour segmenter les performances des processus entrants (Putaway) et sortants (Picking), et fournir une vision plus pertinente des opérations d’entrepôt. Pourquoi c’est important Il permet de segmenter l’analyse selon la catégorie du processus, par exemple entrant ou sortant, afin d’obtenir des comparaisons et des analyses plus pertinentes. Où les obtenir Il est déterminé par le type de processus d’entrepôt et se trouve souvent dans la table d’en-tête des Warehouse Orders, /SCWM/WHO. Exemples PICKPUTWREPLSTGE | |||
| Dans les délais IsOnTime | Indicateur booléen précisant si un ordre d'entrepôt a été achevé au plus tard à la date d'achèvement demandée. | ||
| Description Cet indicateur fournit un résultat binaire simple pour mesurer le respect du SLA. Il vérifie si l'événement final d'achèvement d'un ordre d'entrepôt s'est produit à la date demandée ou avant celle-ci. Cet attribut est essentiel au Dashboard « Respect des délais de traitement des ordres prioritaires ». Il simplifie la création de KPI et de visualisations en permettant de compter et de filtrer facilement les ordres traités dans les délais et ceux en retard. Les performances par rapport aux objectifs de niveau de service peuvent ainsi être évaluées rapidement, sans calculs complexes sur les dates dans la couche d'analyse. Pourquoi c’est important Simplifie l'analyse des performances liées au SLA en fournissant, pour chaque ordre, un indicateur clair précisant s'il a été traité dans les délais ou en retard. Où les obtenir Il s'agit d'un attribut calculé. La logique compare l'horodatage de l'activité « Ordre d'entrepôt achevé » à l'attribut « RequestedCompletionDate ». Exemples truefalse | |||
| Date d'achèvement demandée RequestedCompletionDate | Date à laquelle il est demandé qu'un ordre d'entrepôt hautement prioritaire soit achevé. | ||
| Description Cet attribut définit l'accord de niveau de service (SLA) ou la date cible d'achèvement d'un ordre d'entrepôt. Il s'agit de l'échéance par rapport à laquelle le temps d'achèvement réel est mesuré afin de déterminer si l'ordre a été traité dans les délais. Cette date est essentielle au calcul du KPI « Taux de traitement des ordres prioritaires dans les délais ». En comparant l'horodatage d'achèvement réel à la date demandée, l'analyse peut mesurer le respect des niveaux de service et mettre en évidence les ordres susceptibles d'être en retard ou déjà en dépassement. Pourquoi c’est important Définit le SLA d'un ordre et sert de référence pour mesurer les performances de traitement dans les délais, en particulier pour les articles hautement prioritaires. Où les obtenir Cette date est souvent dérivée de la date prévue de sortie de marchandises ou de la date de livraison figurant dans l'ordre de livraison sortant à l'origine de l'ordre d'entrepôt. Consultez la documentation SAP Extended Warehouse Management. Exemples 2023-10-27T17:00:00Z2023-10-28T12:00:00Z | |||
| Durée de cycle de bout en bout EndToEndCycleTime | Temps total écoulé entre la création de l'ordre d'entrepôt et son achèvement définitif. | ||
| Description Ce KPI mesure la durée totale du cycle de vie d'un ordre d'entrepôt. Il constitue un indicateur global important de l'efficacité et de la rapidité des opérations de l'entrepôt. Cette mesure est au cœur du Dashboard « Durée de cycle de bout en bout de l'entrepôt ». Son suivi dans le temps et sa segmentation selon des dimensions telles que le type d'ordre ou le matériel permettent d'identifier les inefficacités systémiques et de mesurer l'effet des initiatives d'amélioration sur l'ensemble des opérations. Pourquoi c’est important Il s'agit d'un KPI principal pour mesurer l'efficacité globale du processus d'entrepôt et obtenir une vision synthétique des performances opérationnelles. Où les obtenir Calculé au niveau du cas en soustrayant l'horodatage du premier événement (« Ordre d'entrepôt créé ») de celui du dernier événement (« Ordre d'entrepôt achevé »). Exemples 8640017280043200 | |||
| Écart de quantité QuantityVariance | Différence entre la quantité planifiée et la quantité réellement confirmée pour une tâche. | ||
| Description Cette mesure calculée quantifie l'écart constaté lors d'une tâche d'entrepôt. Une valeur différente de zéro indique que la réalité physique ne correspond pas à l'enregistrement du système, ce qui peut signaler une erreur de picking, une erreur de réception ou un article endommagé. Cet attribut contribue directement au Dashboard « Analyse des écarts de stock » en mettant en évidence l'ampleur des erreurs. L'analyse de la fréquence et de l'importance de ces écarts aide à repérer les problèmes systémiques de gestion des stocks et d'exécution opérationnelle, afin d'améliorer la précision. Pourquoi c’est important Quantifie directement les erreurs de stock et les inexactitudes opérationnelles, ce qui facilite l'identification et l'analyse de l'ampleur des écarts. Où les obtenir Calculé en soustrayant PlannedQuantity de ActualQuantity pour chaque tâche concernée. Exemples 0-15 | |||
| Emplacement de stockage StorageLocation | Emplacement précis dans l’entrepôt, comme un emplacement de stockage, vers lequel les marchandises sont déplacées ou depuis lequel elles sont retirées. | ||
| Description Cet attribut identifie l'emplacement physique concerné par une tâche d'entrepôt, par exemple le casier source pour le picking ou le casier de destination pour la mise en stock. Il peut désigner une zone générale ou les coordonnées précises d'une étagère. L'analyse par emplacement de stockage peut révéler des informations utiles sur les opérations, notamment en identifiant les « zones privilégiées » où le taux de picking est élevé ou les zones problématiques marquées par des retards ou des erreurs fréquents. Elle peut également être utilisée dans l'analyse « Adhérence à l'itinéraire de picking » afin de comprendre les déplacements des préparateurs dans l'entrepôt. Pourquoi c’est important Fournit le contexte géographique au sein de l'entrepôt et permet d'analyser l'efficacité des déplacements, l'accessibilité des casiers et l'optimisation des itinéraires de picking. Où les obtenir Se trouve généralement dans les tables de tâches d'entrepôt telles que /SCWM/ORDIM_O, qui contiennent les informations sur les casiers source (VLPLA) et de destination (NLPLA). Exemples 01-02-03PACK-STATION-01GI-ZONE-A | |||
| Équipement utilisé EquipmentUsed | 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 indique l'équipement de manutention affecté à une tâche d'entrepôt ou utilisé pour l'effectuer. Il peut s'agir d'un chariot élévateur précis, d'un véhicule à guidage automatique (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 l'équipement utilisé pour chaque tâche et sa durée d'utilisation, les responsables peuvent analyser les habitudes d'utilisation, planifier la maintenance et prendre des décisions éclairées sur la taille et la composition du parc. Pourquoi c’est important Permet d'analyser l'utilisation et l'efficacité des équipements, afin d'optimiser la gestion du parc et d'identifier les contraintes liées aux ressources. Où les 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 | |||
| Heure de départ prévue PlannedDepartureTime | Heure planifiée à laquelle l'expédition doit quitter l'entrepôt. | ||
| Description Cet attribut représente l'heure cible d'expédition, une fois les activités de picking, d'emballage et de chargement terminées. Il sert de référence pour mesurer la ponctualité de la dernière étape du processus sortant. Cet horodatage est essentiel au Dashboard « Performance de l'expédition dans les délais ». En comparant l'heure réelle d'expédition à l'heure prévue, l'analyse peut identifier les retards liés au chargement, à la coordination avec le transporteur ou à la documentation, et fournir des informations utiles sur l'efficacité de la planification logistique et du transport. Pourquoi c’est important Fournit la référence nécessaire pour mesurer la ponctualité des expéditions, un élément important de la planification logistique et du respect des horaires des transporteurs. Où les obtenir Ces informations font généralement partie du document de transport ou d'expédition associé 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 | Quantité attendue d’un matériel pour une Warehouse Task donnée. | ||
| Description Cet attribut représente la quantité cible d’un matériel à déplacer, prélever ou recevoir conformément à l’instruction de la Warehouse Task. Elle constitue la référence à laquelle la quantité réellement exécutée est comparée. La quantité planifiée est essentielle au Dashboard « Inventory Discrepancy Analysis » et au KPI « Inventory Accuracy Rate ». En la comparant à la quantité réelle, le système peut identifier les écarts susceptibles de révéler des erreurs de prélèvement, des erreurs de réception ou des problèmes de saisie, et ainsi contribuer à améliorer l’exactitude des stocks. Pourquoi c’est important Elle sert de référence pour calculer l’exactitude des stocks et identifier les écarts, ce qui est essentiel au maintien de niveaux de stock corrects. Où les obtenir Elle se trouve dans les données des Warehouse Tasks, par exemple dans la table /SCWM/ORDIM_O, souvent dans un champ tel que NISTA (quantité cible). Exemples 10050250 | |||
| Quantité réelle ActualQuantity | Quantité réelle d’un matériel confirmée par l’utilisateur pour une Warehouse Task. | ||
| Description Cet attribut correspond à la quantité physiquement traitée et confirmée par l’opérateur de l’entrepôt. Il peut s’agir de la quantité prélevée dans un emplacement, mise en stock ou comptée lors d’une réception de marchandises. La comparaison entre la quantité réelle et la quantité planifiée est fondamentale pour le Dashboard « Inventory Discrepancy Analysis ». Un écart entre ces deux valeurs met directement en évidence une exception de processus qui doit être examinée. Il s’agit d’une mesure directe de l’exactitude opérationnelle et d’une donnée essentielle pour les KPI « Inventory Accuracy Rate » et « Picking Error Rate ». Pourquoi c’est important Elle constitue la référence de ce qui a réellement été traité. Sa comparaison avec la quantité planifiée mesure directement l’exactitude opérationnelle et permet d’identifier les erreurs. Où les obtenir Elle se trouve dans les données de confirmation des Warehouse Tasks, par exemple dans la table /SCWM/ORDIM_C, souvent dans un champ tel que NDIFF (quantité d’écart), ou est calculée à partir des quantités confirmées. Exemples 10049250 | |||
| Tâche d’entrepôt WarehouseTask | Identifiant unique d’une Warehouse Task, qui constitue un élément d’un Warehouse Order. | ||
| Description Une Warehouse Task est une instruction visant à exécuter un mouvement précis de marchandises, comme le déplacement d’un produit depuis un emplacement de stockage vers un poste de préparation. Un Warehouse Order regroupe une ou plusieurs de ces tâches. L’analyse au niveau de la tâche offre une vue plus détaillée des opérations d’entrepôt. Elle aide à comprendre les performances des ressources pour des mouvements précis, à identifier les emplacements de stockage difficiles d’accès ou à analyser l’efficacité des activités individuelles de prélèvement ou de mise en stock. Pourquoi c’est important Elle fournit un niveau de détail précis pour l’analyse et permet d’examiner les mouvements et les étapes individuels au sein d’un Warehouse Order plus large. Où les obtenir Il se trouve dans les tables des Warehouse Tasks, telles que /SCWM/ORDIM_O (données des tâches) et /SCWM/ORDIM_C (données de confirmation). Exemples 300000451300000452300000453 | |||
Activités de gestion d’entrepôt
| Activité | Description | ||
|---|---|---|---|
| Préparation terminée | Cette activité indique que tous les articles d’une expédition ont été préparés dans une unité de manutention, désormais fermée et étiquetée. Les marchandises préparées sont prêtes pour l’étape suivante, comme la mise en zone d’expédition ou le chargement. | ||
| Pourquoi c’est important Cette étape clôt la préparation. Elle est nécessaire à la mise en zone d’expédition et à l’expédition. Tout retard à ce stade a donc une incidence directe sur le délai global et sur le KPI Packing and Staging Lead Time. Où les obtenir L’événement peut être enregistré lorsque le statut de l’unité de manutention (HU) passe à « Closed », ou lorsque la dernière tâche d’entrepôt liée à la préparation du WO est confirmée. La table /SCWM/HUHDR contient les informations de statut des HU. Collecte Identifiez l’horodatage auquel la dernière unité de manutention d’expédition associée à la commande est fermée ou terminée. Type d’événement inferred | |||
| Sortie de marchandises comptabilisée | Il s’agit de la dernière étape logistique et financière dans le système, qui retire officiellement les marchandises du stock de l’entrepôt. Elle indique que la propriété juridique a été transférée et que l’expédition a officiellement quitté l’entrepôt. | ||
| Pourquoi c’est important Cette étape constitue le point de sortie essentiel du flux sortant et déclenche la facturation ainsi que les mises à jour de stock. Elle est indispensable pour mesurer le respect des délais d’expédition et le KPI Shipment Loading & Dispatch Time. Où les obtenir L’événement est déduit de la comptabilisation d’un document Outbound Delivery associé au Warehouse Order. Vérifiez le flux documentaire ou les champs de statut, par exemple DGI_STAT, dans la table /SCDL/DB_PROCH_O. Collecte Identifiez l’horodatage auquel le statut Goods Issue est défini sur « Completed » pour l’Outbound Delivery associé. Type d’événement explicit | |||
| Tâche de mise en stock confirmée | Un opérateur de l’entrepôt confirme que la Warehouse Task de mise en stock est terminée, ce qui signifie que les marchandises ont été physiquement placées dans l’emplacement de stockage prévu. Cette confirmation met à jour l’emplacement du stock en temps réel. | ||
| Pourquoi c’est important Cette activité constitue une étape importante du traitement entrant, car elle confirme que le stock est disponible pour le prélèvement. Les retards à ce stade ont une incidence directe sur le KPI Goods Receipt to Putaway Cycle Time. Où les obtenir L’événement est enregistré à partir de l’horodatage de confirmation (champ CONFIRMED_AT) dans la table des Warehouse Tasks, /SCWM/WT. Le statut de la tâche (STAT) passe également à « Confirmed ». Collecte Utilisez l’horodatage de confirmation de la table /SCWM/WT pour les tâches de mise en stock associées au Warehouse Order. Type d’événement explicit | |||
| Tâche de prélèvement confirmée | Un opérateur de l’entrepôt confirme que la Warehouse Task de prélèvement est terminée, ce qui indique que les marchandises ont été physiquement retirées de leur emplacement de stockage. Cette opération est généralement effectuée à l’aide d’un scanner RF. | ||
| Pourquoi c’est important Il s’agit d’une étape importante de l’exécution des commandes, qui a une incidence directe sur le délai entre la commande et l’expédition. L’analyse de cette activité permet de mesurer la productivité des préparateurs et d’identifier les goulots d’étranglement du prélèvement. Où les obtenir L’événement est enregistré à partir de l’horodatage de confirmation (champ CONFIRMED_AT) dans la table des Warehouse Tasks, /SCWM/WT. Le statut de la tâche (STAT) est mis à jour sur « Confirmed ». Collecte Utilisez l’horodatage de confirmation de la table /SCWM/WT pour les tâches de prélèvement associées au Warehouse Order. Type d’événement explicit | |||
| Warehouse Order créé | Cette activité marque la création d’un Warehouse Order (WO), c’est-à-dire un lot 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, selon des critères tels que la zone d’activité, la file d’attente ou le produit. | ||
| Pourquoi c’est important Il s’agit de l’événement de début principal du processus d’exécution en entrepôt. L’analyse du temps écoulé entre la création et la première action permet d’identifier les retards dans l’affectation du travail et l’allocation des ressources. Où les obtenir Cet événement est enregistré à partir de l’horodatage de création (champ CREATED_AT) dans la table d’en-tête des Warehouse Orders, /SCWM/WHO. Collecte Extrayez l’horodatage de création depuis la table /SCWM/WHO pour chaque numéro de Warehouse Order (WHO). Type d’événement explicit | |||
| Warehouse Order terminé | Le statut du Warehouse Order passe à « Completed » une fois toutes les Warehouse Tasks associées confirmées. Le lot de travail est alors clôturé du point de vue de l’exécution. | ||
| Pourquoi c’est important Il s’agit de l’événement de fin principal indiquant la réussite du processus. Il est essentiel pour calculer le délai de cycle de l’entrepôt de bout en bout et mesurer le débit global. Où les obtenir L’événement est enregistré en suivant le changement du champ de statut (STAT), qui passe à « Completed » dans la table d’en-tête des Warehouse Orders, /SCWM/WHO. Le journal des modifications de cette table (DBTABLOG) ou un champ d’horodatage dédié peut être utilisé. Collecte Identifiez l’horodatage auquel le statut dans /SCWM/WHO est défini sur « C » (Completed). Type d’événement inferred | |||
| Chargement terminé | Cette activité indique que toutes les marchandises d’une expédition ont été physiquement chargées sur l’unité de transport. Il s’agit d’une condition préalable à la comptabilisation de la sortie de marchandises et au départ du véhicule. | ||
| Pourquoi c’est important Il s’agit d’une étape importante avant l’expédition finale. Les retards entre la fin du chargement et la sortie de marchandises peuvent révéler des problèmes de documentation ou de système qui retardent les transporteurs. Où les obtenir L’événement est déduit du changement de statut de l’unité de transport (TU) ou de l’Outbound Delivery Order associée, qui passe à « Loading Completed ». Les statuts des tables /SCWM/TU et /SCDL/DB_PROCH_O sont pertinents. Collecte Enregistrez l’horodatage auquel le statut de la TU ou de la Delivery Order est mis à jour pour indiquer la fin du chargement. Type d’événement inferred | |||
| Début de la préparation | Cette activité représente le début de la préparation, au cours de laquelle les articles prélevés sont regroupés et placés dans des conteneurs d’expédition ou des unités de manutention. Il s’agit souvent de la première étape dans un poste de préparation. | ||
| Pourquoi c’est important Elle marque le début de la phase des services à valeur ajoutée. La mesure de la durée de préparation aide à optimiser l’aménagement du poste, les effectifs et les matériaux. Où les obtenir Cet événement peut nécessiter une déduction. Il peut être déterminé à partir du premier scan d’un article ou d’une unité de manutention dans un poste de préparation, généralement enregistré dans les journaux du poste de travail ou de l’unité de manutention. Des tables telles que /SCWM/PACKSPEC et les journaux d’exécution associés peuvent servir de source. Collecte Utilisez l’horodatage de la première confirmation d’une Warehouse Task liée à la préparation pour la livraison, ou l’heure de création de la dernière HU d’expédition. Type d’événement inferred | |||
| Début du chargement | Cette activité marque le début du chargement physique des marchandises depuis la zone de mise en attente vers un camion ou une unité de transport. Elle est souvent déclenchée par une action de l’utilisateur dans le système. | ||
| Pourquoi c’est important Il s’agit du début de la dernière étape physique dans l’entrepôt. L’analyse de la durée du chargement aide à optimiser l’utilisation des portes de quai et le temps de rotation des transporteurs. Où les obtenir L’événement est déduit du changement de statut de l’unité de transport (TU) ou de l’Outbound Delivery Order associée, qui passe à « Loading Started ». La table /SCWM/TU_STATUS peut être consultée. Collecte Enregistrez l’horodatage auquel le statut de la TU ou de la Delivery Order est mis à jour pour indiquer le début du chargement. Type d’événement inferred | |||
| Réception des marchandises comptabilisée | Cette activité marque l’acceptation officielle des marchandises dans le stock de l’entrepôt, après leur réception d’un fournisseur externe ou de la production. Il s’agit d’une écriture financière et de stock importante, qui rend le stock visible et disponible pour les processus suivants, comme la mise en stock. | ||
| Pourquoi c’est important Il s’agit d’une étape importante du processus entrant. Le délai entre l’arrivée des marchandises et cette comptabilisation peut révéler des retards dans la zone de réception et affecter la disponibilité des stocks. Où les obtenir L’événement est déduit de la comptabilisation d’un document Inbound Delivery associé au Warehouse Order. Vérifiez le flux documentaire ou les champs de statut, par exemple DGRSTAT, dans la table /SCDL/DB_PROCH_I. Collecte Identifiez l’horodatage auquel le statut Goods Receipt est défini sur « Completed » pour l’Inbound Delivery associé. Type d’événement inferred | |||
| Tâche de mise en stock créée | Le système génère une instruction précise, une Warehouse Task (WT), pour déplacer les marchandises reçues de la zone de réception vers un emplacement de stockage final. Cette activité indique que le système est prêt à exécuter le déplacement de mise en stock. | ||
| Pourquoi c’est important Le suivi du délai entre la création et la confirmation de la tâche montre le temps nécessaire aux opérateurs de l’entrepôt pour prendre en charge et exécuter les instructions de mise en stock, et met en évidence les éventuels manques de main-d’œuvre ou d’équipement. Où les obtenir L’événement est enregistré à partir de l’horodatage de création (champ CREATED_AT) de la Warehouse Task concernée dans la table /SCWM/WT, lorsque le type de processus indique une mise en stock. Collecte Filtrez les Warehouse Tasks dont le type de processus correspond à une mise en stock et qui sont liées au Warehouse Order, puis utilisez leur horodatage de création. Type d’événement explicit | |||
| Tâche de mise en zone confirmée | Un opérateur de l’entrepôt confirme le déplacement d’une unité de manutention préparée depuis un poste de préparation ou une zone de regroupement vers une zone de mise en attente des expéditions. Les marchandises sont alors positionnées pour le chargement. | ||
| Pourquoi c’est important Cette activité marque le passage du traitement interne à la logistique sortante. Les retards dans la mise en zone peuvent désorganiser les quais de chargement et entraîner le non-respect des horaires d’enlèvement des transporteurs. Où les obtenir L’événement est enregistré à partir de l’horodatage de confirmation (champ CONFIRMED_AT) d’une Warehouse Task (/SCWM/WT) dont le type de processus correspond à un déplacement vers la zone de mise en attente. Collecte Identifiez l’horodatage de confirmation de la tâche de mise en zone associée à l’unité de manutention ou à la livraison. Type d’événement explicit | |||
| Tâche de prélèvement créée | Le système génère une Warehouse Task (WT) pour prélever les marchandises dans un emplacement de stockage afin d’exécuter une commande de livraison sortante. Il s’agit de l’instruction système destinée à l’opérateur pour récupérer un produit. | ||
| Pourquoi c’est important Cette activité marque le début du processus physique sortant. Le délai entre la création et la confirmation des tâches de prélèvement est essentiel pour analyser l’efficacité du prélèvement et la disponibilité des ressources. Où les obtenir L’événement est enregistré à partir de l’horodatage de création (champ CREATED_AT) de la Warehouse Task concernée dans la table /SCWM/WT, lorsque le type de processus indique un prélèvement. Collecte Filtrez les Warehouse Tasks dont le type de processus correspond à un prélèvement et qui sont liées au Warehouse Order, puis utilisez leur horodatage de création. Type d’événement explicit | |||
| Warehouse Order annulé | Le Warehouse Order est annulé avant la fin de toutes les tâches, ce qui empêche la poursuite de l’exécution. Cette situation peut être due à une indisponibilité des stocks, à une modification des commandes client ou à d’autres exceptions. | ||
| Pourquoi c’est important Cette situation représente un chemin d’échec ou d’exception. L’analyse de la fréquence et des motifs d’annulation aide à identifier les problèmes en amont liés à la planification, à l’exactitude des stocks ou à la gestion des commandes. Où les obtenir L’événement est enregistré en suivant le changement du champ de statut (STAT), qui passe à « Canceled » dans la table d’en-tête des Warehouse Orders, /SCWM/WHO. Collecte Identifiez l’horodatage auquel le statut dans /SCWM/WHO prend une valeur correspondant à une annulation. Type d’événement inferred | |||
Guides d'extraction
Étapes
- Prérequis : identifier ou créer les 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 de l'ordre etI_WarehouseTaskpour les événements au niveau de la tâche. D'autres vues, telles queI_OutboundDeliveryItem,I_InboundDeliveryItemetI_EWMTransportationUnit, sont nécessaires pour les événements logistiques associés. Vérifiez que ces vues sont actives dans votre système. - Créer une vue CDS personnalisée : Pour combiner les données de plusieurs sources dans un format unique de journal d'événements, vous devez créer une vue CDS personnalisée. Utilisez les ABAP Development Tools (ADT) dans Eclipse pour créer une nouvelle Data Definition. Cette vue personnalisée utilisera
UNION ALLafin de fusionner les enregistrements provenant de différentes sources, chacun représentant une activité métier 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. Celui-ci doit inclure
WarehouseOrder,ActivityName,EventTimeainsi que les autres attributs requis et recommandés. Faites correspondre ces champs avec ceux des vues CDS standard sous-jacentes. - Modéliser les événements liés aux ordres d'entrepôt : Ajoutez les premières instructions
SELECTà votre union. Sélectionnez les données deI_WarehouseOrderpour générer l'événement « Warehouse Order Created » à partir de l'horodatage de création. Ajoutez ensuite des instructionsSELECTpour les événements « Warehouse Order Completed » et « Warehouse Order Canceled », en filtrant selon le statut de l'ordre et en utilisant les horodatages de confirmation ou de modification appropriés. - Modéliser les événements liés aux tâches d'entrepôt : Ajoutez des instructions
SELECTà partir deI_WarehouseTask. Générez les événements « Putaway Task Created » et « Putaway Task Confirmed » en filtrant les catégories de processus d'entrepôt associées à la mise en stock. Créez de la même manière les événements « Picking Task Created », « Picking Task Confirmed » et « Staging Task Confirmed » à partir de leurs catégories de processus respectives, en utilisant les horodatages de création et de confirmation. - Modéliser les événements de mouvement des marchandises : Reliez les vues associées aux livraisons aux tâches d'entrepôt afin de capturer les mouvements de marchandises. Pour « Goods Receipt Posted », sélectionnez les données de
I_InboundDeliveryItemen utilisantActualGoodsMovementDateTime. Pour « Goods Issue Posted », utilisez le même champ dansI_OutboundDeliveryItem, en le reliant à l'ordre ou à la tâche d'entrepôt concerné. - Modéliser les événements de chargement et d'emballage : Sélectionnez les données de
I_EWMTransportationUnitpour capturer les événements « Loading Started » et « Loading Completed » à partir de ses horodatages dédiés. Pour l'emballage, qui peut être complexe, utilisez une approximation en sélectionnant les données d'une vue Handling Unit, où l'heure de création peut représenter « Packing Started » et l'heure de changement de statut « Packing Completed ». Cette étape peut nécessiter des ajustements selon votre processus d'emballage. - Ajouter des annotations pour exposer la vue CDS : Ajoutez l'annotation
@OData.publish: trueà la définition de votre vue CDS personnalisée. SAP générera ainsi automatiquement un service OData à partir de la structure de la vue. - Activer la vue CDS et le service OData : Activez la nouvelle Data Definition dans ADT. Accédez ensuite au système hub SAP Gateway et utilisez la transaction
/IWFND/MAINT_SERVICEpour rechercher et activer le nouveau service OData généré. Les données seront alors accessibles via un endpoint d'API REST. - Extraire les données : Utilisez votre plateforme de données cible ou votre outil ETL pour vous connecter à l'endpoint du service OData activé. Appliquez directement les filtres dans l'URI OData, par exemple sur
EventTime, afin de limiter le périmètre des données, comme dans?$filter=EventTime ge datetime'2023-01-01T00:00:00'. - Formater les données pour le Process Mining : Enregistrez les données extraites dans un format de fichier plat, tel qu'un fichier CSV, avec des en-têtes de colonnes correspondant aux attributs requis par ProcessMind (
WarehouseOrder,ActivityName,EventTime, etc.). Importez 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 afin d’unifier les données d’événements. Il s’agit de 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 correspond généralement au nom de la vue CDS suivi du suffixe
_CDS. - Filtrage par période : il est essentiel d’appliquer un filtre de date au champ
EventTimelors de l’appel de l’API OData. Pour une première analyse, une période de 3 à 6 mois de données est généralement adaptée. Sans filtre, la requête peut expirer ou entraîner des problèmes de performance. - Filtrage par entité : pour limiter davantage le périmètre des données, envisagez d’appliquer des filtres sur des attributs tels que le numéro d’entrepôt (
Entrepôt), le type d’ordre d’entrepôt (WarehouseOrderType) ou certains articles (MaterialNumber). - Autorisations système : l’utilisateur qui crée la vue CDS doit disposer d’un accès développeur SAP dans ADT. L’utilisateur ou le compte de service qui appelle l’API OData doit disposer des autorisations nécessaires pour accéder aux données sous-jacentes de la gestion d’entrepôt.
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
- Vérifiez que l'accès direct en lecture au schéma de base de données SAP EWM est approuvé, puis identifiez les objets physiques qui représentent les en-têtes d'ordres d'entrepôt, les tâches d'entrepôt, l'historique des statuts des ordres, les écritures de réception et de sortie de marchandises, l'emballage, la mise en zone d'expédition et le chargement. Les références logiques /SCWM/WHO et /SCWM/WT sont souvent utilisées comme point de départ, mais vérifiez les objets réels, les champs, les codes de statut, la signification des horodatages et le schéma de base de données dans votre système.
- Obtenez la correspondance vérifiée des champs auprès du responsable technique SAP EWM ou du dictionnaire de données. Faites correspondre l'identifiant de l'ordre d'entrepôt, son type, son statut, sa priorité, l'identifiant de la tâche d'entrepôt, la catégorie ou le type de processus de la tâche, le matériel, l'utilisateur, l'horodatage de création, l'horodatage de confirmation, les horodatages d'emballage, de mise en zone d'expédition et de chargement, les horodatages de réception et de sortie de marchandises, le système source et l'horodatage de la dernière actualisation. Ne supposez pas qu'un champ se trouve dans la même table ni qu'un code de statut ait la même signification dans tous les déploiements.
- Configurez la connexion d'extraction avec un compte de base de données en lecture seule, le schéma de production ou de reporting et des valeurs paramétrées pour la date de début, la date de fin, le nom du système source et les éventuels filtres propres à l'entreprise. Appliquez le filtre de date à l'horodatage de l'événement concerné, et pas uniquement à l'horodatage de création de l'ordre d'entrepôt, afin de ne pas exclure les événements survenus plus tard dans son cycle de vie.
- Construisez les lignes d'événements en sélectionnant une ligne pour chaque activité explicitement requise. La requête doit utiliser les champs sources vérifiés pour chaque activité et ne doit pas demander à ProcessMind de déduire les événements. Si une activité est représentée par un historique de statuts ou un journal applicatif plutôt que par un champ de l'en-tête actuel, utilisez cet historique ou ce journal et conservez l'horodatage de l'événement ainsi que l'utilisateur qui l'a exécuté.
- Normalisez tous les horodatages d'activité sur un même fuseau horaire, de préférence UTC, ou documentez le fuseau horaire du serveur d'application SAP. Convertissez les codes de statut et de processus propres à la source en noms d'activité correspondant exactement à ceux requis par le journal d'événements : Warehouse Order Created, Goods Receipt Posted, Putaway Task Created, Putaway Task Confirmed, Picking Task Created, Picking Task Confirmed, Packing Started, Packing Completed, Staging Task Confirmed, Loading Started, Loading Completed, Goods Issue Posted, Warehouse Order Completed et Warehouse Order Canceled.
- Vérifiez que chaque ligne de sortie contient WarehouseOrder, ActivityName, EventTime, SourceSystem et LastDataUpdate. Renseignez EventEndTime lorsqu'un horodatage d'achèvement fiable est disponible. Pour les événements au niveau de la tâche, associez la tâche à son ordre d'entrepôt. Si un ordre d'entrepôt contient plusieurs tâches concernées, conservez une ligne d'événement par événement de tâche, tout en conservant l'ordre d'entrepôt comme identifiant du cas. Utilisez un critère de départage stable, tel que l'identifiant de la tâche ou l'identifiant de l'événement source, si le format d'importation cible le permet.
- Validez le résultat avant l'exportation. Vérifiez que les 14 noms d'activité apparaissent lorsque les données sources contiennent les événements métier correspondants, que les horodatages se situent dans la période demandée, que les ordres d'entrepôt ne sont pas anormalement vides et que les lignes en double s'expliquent par plusieurs tâches ou des changements de statut répétés. Rapprochez les volumes avec les rapports opérationnels SAP ou une extraction approuvée indépendante.
- Exportez le résultat dans un fichier délimité compatible avec ProcessMind ou sous forme de résultat de base de données, avec un événement par ligne. Conservez exactement les noms de colonnes requis, utilisez un format d'horodatage non ambigu tel qu'ISO 8601, placez les valeurs textuelles entre guillemets lorsque le format du délimiteur l'exige et incluez une ligne d'en-tête. Importez le fichier dans ProcessMind ou configurez la connexion à la base de données, définissez WarehouseOrder comme identifiant du cas, ActivityName comme activité, EventTime comme horodatage de début et EventEndTime comme horodatage de fin lorsqu'il est disponible.
Configuration
- Correspondance des objets sources : Vérifiez les objets physiques et les champs de la base de données pour les ordres d'entrepôt, les tâches d'entrepôt, l'historique des statuts, les mouvements de marchandises, l'emballage, la mise en zone d'expédition et le chargement. /SCWM/WHO et /SCWM/WT peuvent correspondre à des objets logiques pertinents, mais leur représentation dans la base de données déployée doit être confirmée avant la mise en œuvre.
- Période : Commencez par une période contrôlée de trois à six mois. Utilisez une période plus courte pour les premiers tests, puis élargissez-la après rapprochement. Prévoyez un léger chevauchement entre les exécutions incrémentielles afin de capturer les écritures tardives et les corrections.
- Choix de l'horodatage de l'événement : Utilisez les horodatages de création pour les activités créées, les horodatages de confirmation pour les activités confirmées, les horodatages d'écriture pour les réceptions et sorties de marchandises, ainsi que les horodatages d'exécution vérifiés pour l'emballage, la mise en zone d'expédition et le chargement. Ne remplacez pas tous les événements par l'heure de création de l'ordre d'entrepôt.
- Filtres : Appliquez uniquement des filtres métier vérifiés, tels que le numéro d'entrepôt, le code société, le type de document, le type d'ordre d'entrepôt, la zone d'activité, la file d'attente, l'usine ou le système source. Les champs du code société et du type de document peuvent se trouver dans des objets associés et doivent être mappés dans le système cible.
- Correspondance des statuts : Configurez les codes SAP exacts qui représentent les ordres d'entrepôt achevés et annulés. Validez cette correspondance avec le responsable fonctionnel EWM, car les codes de statut et leur stockage peuvent varier selon la version et l'implémentation.
- SourceSystem : Définissez une valeur stable identifiant l'instance EWM de production ou de reporting. Ne la déduisez pas d'un champ métier pouvant être vide.
- LastDataUpdate : Renseignez cet attribut avec l'horodatage de l'extraction ou de l'actualisation de la source, de manière cohérente pour chaque ligne d'une même exécution.
- Extraction incrémentielle : Utilisez un point de reprise persistant fondé sur le dernier horodatage source extrait avec succès, en prévoyant une fenêtre de chevauchement pour les enregistrements arrivant tardivement. Dédupliquez les données à l'aide des identifiants sources vérifiés lorsqu'ils sont disponibles.
- Performances : Limitez rapidement la période, ne sélectionnez que les colonnes nécessaires, filtrez les champs indexés, évitez d'appliquer des fonctions aux colonnes d'horodatage indexées dans les prédicats et traitez les périodes longues par lots quotidiens ou hebdomadaires. Utilisez une réplique de reporting lorsque cela est autorisé.
- Stratégie de jointure : Confirmez la cardinalité entre les ordres d'entrepôt et les tâches d'entrepôt. Évitez les multiplications accidentelles lors de la jointure des données de tâches, de statuts, de matériel et d'unités de manutention. Agrégez ou sélectionnez l'enregistrement d'événement approprié avant la jointure.
- Fuseaux horaires : Configurez le fuseau horaire source et la règle de conversion. Stockez les horodatages de manière cohérente et documentez la gestion du passage à l'heure d'été.
- Prérequis : Autorisation de base de données en lecture seule, accès approuvé au schéma EWM, correspondances vérifiées dans le dictionnaire de données, autorisation de lire les objets opérationnels et historiques concernés, ainsi qu'une configuration d'importation ProcessMind approuvée. Les modules SAP, licences et autorisations requis dépendent de l'architecture EWM déployée et doivent être confirmés par le responsable du système.
a Exemple de requête sql
WITH
params AS (
SELECT
CAST('[Start date and time]' AS TIMESTAMP) AS start_time,
CAST('[End date and time]' AS TIMESTAMP) AS end_time,
CAST('[Source system name]' AS VARCHAR(255)) AS source_system,
CAST(CURRENT_TIMESTAMP AS TIMESTAMP) AS last_data_update
),
warehouse_orders AS (
SELECT
CAST(wo.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wo.[Warehouse order type field] AS VARCHAR(255)) AS WarehouseOrderType,
CAST(wo.[Warehouse order status field] AS VARCHAR(255)) AS WarehouseOrderStatus,
CAST(wo.[Priority field] AS VARCHAR(255)) AS Priority,
CAST(wo.[Warehouse order creation timestamp field] AS TIMESTAMP) AS WarehouseOrderCreatedTime,
CAST(wo.[Warehouse order completion timestamp field] AS TIMESTAMP) AS WarehouseOrderCompletedTime,
CAST(wo.[Warehouse order cancellation timestamp field] AS TIMESTAMP) AS WarehouseOrderCanceledTime,
CAST(wo.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wo.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse order header table] wo
),
warehouse_tasks AS (
SELECT
CAST(wt.[Warehouse order ID field] AS VARCHAR(255)) AS WarehouseOrder,
CAST(wt.[Warehouse task ID field] AS VARCHAR(255)) AS WarehouseTask,
CAST(wt.[Task category or process type field] AS VARCHAR(255)) AS TaskType,
CAST(wt.[Material number field] AS VARCHAR(255)) AS MaterialNumber,
CAST(wt.[Task creation timestamp field] AS TIMESTAMP) AS TaskCreatedTime,
CAST(wt.[Task confirmation timestamp field] AS TIMESTAMP) AS TaskConfirmedTime,
CAST(wt.[User field] AS VARCHAR(255)) AS [User]
FROM [Your warehouse task table] wt
),
events AS (
SELECT wo.WarehouseOrder, 'Warehouse Order Created' AS ActivityName, wo.WarehouseOrderCreatedTime AS EventTime, CAST(NULL AS TIMESTAMP) AS EventEndTime, wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo
UNION ALL
SELECT gr.[Warehouse order ID field], 'Goods Receipt Posted', CAST(gr.[Goods receipt posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gr.[Material number field] AS VARCHAR(255)), CAST(gr.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods receipt posting table] gr LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gr.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Putaway Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified putaway task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Created', wt.TaskCreatedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]'
UNION ALL
SELECT wt.WarehouseOrder, 'Picking Task Confirmed', wt.TaskConfirmedTime, CAST(NULL AS TIMESTAMP), wt.MaterialNumber, wt.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_tasks wt LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = wt.WarehouseOrder WHERE wt.TaskType = '[Verified picking task type]' AND wt.TaskConfirmedTime IS NOT NULL
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Started', CAST(pk.[Packing start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT pk.[Warehouse order ID field], 'Packing Completed', CAST(pk.[Packing completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(pk.[Material number field] AS VARCHAR(255)), CAST(pk.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your packing event table] pk LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(pk.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT st.[Warehouse order ID field], 'Staging Task Confirmed', CAST(st.[Staging confirmation timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(st.[Material number field] AS VARCHAR(255)), CAST(st.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your staging event table] st LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(st.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Started', CAST(ld.[Loading start timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT ld.[Warehouse order ID field], 'Loading Completed', CAST(ld.[Loading completion timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(ld.[Material number field] AS VARCHAR(255)), CAST(ld.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your loading event table] ld LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(ld.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT gi.[Warehouse order ID field], 'Goods Issue Posted', CAST(gi.[Goods issue posting timestamp field] AS TIMESTAMP), CAST(NULL AS TIMESTAMP), CAST(gi.[Material number field] AS VARCHAR(255)), CAST(gi.[User field] AS VARCHAR(255)), wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM [Your goods issue posting table] gi LEFT JOIN warehouse_orders wo ON wo.WarehouseOrder = CAST(gi.[Warehouse order ID field] AS VARCHAR(255))
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Completed', wo.WarehouseOrderCompletedTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCompletedTime IS NOT NULL
UNION ALL
SELECT wo.WarehouseOrder, 'Warehouse Order Canceled', wo.WarehouseOrderCanceledTime, CAST(NULL AS TIMESTAMP), wo.MaterialNumber, wo.[User], wo.WarehouseOrderType, wo.WarehouseOrderStatus, wo.Priority FROM warehouse_orders wo WHERE wo.WarehouseOrderCanceledTime IS NOT NULL
)
SELECT
e.WarehouseOrder,
e.ActivityName,
e.EventTime,
e.EventEndTime,
p.source_system AS SourceSystem,
p.last_data_update AS LastDataUpdate,
e.MaterialNumber,
e.[User],
e.WarehouseOrderType,
e.WarehouseOrderStatus,
e.Priority
FROM events e
CROSS JOIN params p
WHERE e.WarehouseOrder IS NOT NULL
AND e.EventTime IS NOT NULL
AND e.EventTime >= p.start_time
AND e.EventTime < p.end_time
ORDER BY e.WarehouseOrder, e.EventTime, e.ActivityName; Prêt à commencer ?
Commencez dès aujourd’hui à optimiser vos opérations d’entrepôt. Utilisez ce modèle pour atteindre un niveau d’efficacité optimal et accélérer l’exécution des ordres.
Éliminez les erreurs de picking et optimisez dès aujourd'hui la gestion de votre entrepôt
Atteignez une précision des stocks de 99,5 % et éliminez les retards de traitement des commandes en quelques semaines.
Aucune carte bancaire requise, configuration en quelques minutes.