Votre modèle de données de gestion des stocks
Votre modèle de données de gestion des stocks
- Attributs recommandés à collecter
- Activités clés à suivre pour la découverte de processus
- Guide d'extraction adapté à SAP S/4HANA
Attributs de gestion des stocks
| Nom | Description | ||
|---|---|---|---|
| Heure de l'événement EventTime | La date et l'heure précises auxquelles l'activité d'inventaire a été enregistrée dans le système. | ||
| Description L'Heure de l'événement (Event Time) est l'horodatage qui enregistre exactement le moment où une activité s'est produite. Ce point de données est essentiel pour ordonner les événements chronologiquement afin de reconstituer le flux de processus pour chaque lot de stock. Il sert de base à toutes les analyses de Process Mining basées sur le temps. La précision de l'Heure de l'événement est critique pour le calcul des indicateurs clés de performance tels que les temps de cycle, les délais et les durées. Elle permet l'analyse des performances des processus sur différentes périodes, aide à identifier les goulots d'étranglement et fournit la base factuelle pour comprendre les retards de processus, comme le temps qu'un lot passe en inspection qualité avant d'être libéré. Pourquoi c'est important Cet horodatage ordonne les événements chronologiquement et constitue la base de tous les calculs de durée et de performance. Où obtenir Ceci est généralement une combinaison de la date de comptabilisation (MKPF-BUDAT) et de l'heure de saisie (MKPF-CPUTM) de la table d'en-tête de document matière MKPF. Exemples 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Lot de stock / Lot InventoryBatchLot | L'identifiant unique pour une quantité spécifique de produit, servant d'ID de cas pour le suivi de son cycle de vie. | ||
| Description Le numéro de lot d'inventaire est l'identifiant de cas principal qui regroupe toutes les activités liées à une quantité spécifique et distincte d'un produit. Cela permet une vue chronologique complète du parcours d'une quantité de stock, depuis sa réception initiale en entrepôt, en passant par divers mouvements internes et changements de statut, jusqu'à sa sortie éventuelle pour une vente, une production ou une élimination. Dans l'analyse des processus, cet attribut est fondamental. Il vous permet de retracer le flux de bout en bout pour chaque lot, de mesurer avec précision les temps de cycle, d'identifier les variations de processus et de comprendre comment les différents lots sont gérés. L'analyse des processus au niveau du lot est cruciale pour les industries où la traçabilité, le contrôle qualité et la gestion des dates de péremption sont critiques, telles que les produits pharmaceutiques, l'alimentation et les boissons, et les produits chimiques. Pourquoi c'est important Ceci est l'identifiant central qui connecte tous les événements d'inventaire liés en un seul cas, rendant possible l'analyse de processus de bout en bout. Où obtenir Ceci est généralement le numéro de lot, trouvé dans les tables SAP comme MCHA (Fiche lot) ou MCH1 (Lots) dans le champ CHARG. Exemples B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Activité ActivityName | Le nom de l'événement commercial qui s'est produit à un moment précis du processus de gestion des stocks. | ||
| Description L'attribut Activité décrit une seule étape ou un événement au sein du cycle de vie des stocks d'un lot. Ces événements représentent des actions commerciales clés telles que la réception de marchandises, le déplacement de stock, la réalisation d'une inspection qualité ou la sortie de matières. Chaque activité est un enregistrement de quelque chose qui est arrivé au lot de stock à un moment précis. L'analyse des activités est le fondement du Process Mining. Elle permet la visualisation du flux de processus, l'identification des chemins fréquents et rares, la détection des goulots d'étranglement où les activités sont retardées, et l'analyse des boucles de reprise. En comprenant la séquence et la fréquence des activités comme « Stock mis au rebut » ou « Contrôle qualité », les entreprises peuvent identifier les domaines d'amélioration des processus et d'efficacité opérationnelle. Pourquoi c'est important Il définit les étapes du processus, permettant la visualisation et l'analyse du cycle de vie des stocks. Où obtenir Ceci est un attribut dérivé, souvent mappé à partir des types de mouvement SAP (MSEG-BWART) ou des codes de transaction (MKPF-TCODE2) vers des noms conviviaux. Exemples Réception de marchandises enregistréeTransfert de rangement enregistréSortie de marchandises pour livraison enregistréeStock mis au rebut | |||
| `Numéro d'article` MaterialNumber | L'identifiant unique pour le produit ou la matière gérée. | ||
| Description Le numéro d'article, souvent appelé SKU (Stock Keeping Unit), est le code unique attribué à un produit spécifique. C'est un élément de données de base fondamental dans la gestion des stocks, utilisé pour suivre les quantités, les valeurs et les mouvements de marchandises. Dans le Process Mining, l'analyse par numéro d'article permet une vue axée sur le produit des processus d'inventaire. Elle aide à répondre à des questions telles que quels produits ont les temps d'inspection qualité les plus longs, lesquels sont les plus souvent mis au rebut, ou lesquels ont le volume le plus élevé de transferts internes. Cette segmentation est cruciale pour identifier les problèmes spécifiques aux produits et optimiser les stratégies d'inventaire pour différents types de marchandises. Pourquoi c'est important Il permet de segmenter l'analyse par produit, révélant des modèles et des problèmes spécifiques à certains articles. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ MATNR. Les données de base se trouvent dans la table MARA. Exemples RM-1001FG-2050-B100-400-A | |||
| Code de motif de mouvement MovementReasonCode | Un code qui spécifie la raison d'un mouvement de stock. | ||
| Description Le code Motif du mouvement fournit un contexte supplémentaire expliquant pourquoi un mouvement de marchandises a été effectué. Il est souvent utilisé pour expliquer les mouvements imprévus, tels que les ajustements d'inventaire, les retours ou la mise au rebut. Cet attribut est extrêmement précieux pour l'analyse des causes profondes. Pour le tableau de bord « Facteurs d'ajustement manuel des stocks », l'analyse par code motif peut révéler pourquoi des écarts se produisent, tels que des dommages, des vols ou des erreurs de saisie de données. Cette information aide les entreprises à s'attaquer aux problèmes sous-jacents plutôt qu'à simplement corriger les symptômes. Pourquoi c'est important Il explique le « pourquoi » des mouvements de stock imprévus, permettant une analyse ciblée des causes profondes. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ GRUND (Raison du mouvement). Exemples 00010005102 | |||
| Emplacement de stockage StorageLocation | Un emplacement spécifique au sein d'une Division (Plant) où le stock est physiquement entreposé. | ||
| Description Un Magasin (Storage Location) est une unité organisationnelle qui permet de différencier les stocks de matières au sein d'une Division (Plant). Par exemple, une division peut avoir des magasins séparés pour les matières premières, les produits finis et le stock de contrôle qualité. Cet attribut offre un niveau de détail de localisation plus granulaire que la Division. Il est utilisé dans l'analyse pour comprendre les mouvements entre différentes zones de stock, comme le délai de transfert de la zone de réception vers l'entrepôt principal. L'analyse de l'utilisation du stockage et de la fréquence des mouvements par magasin aide à optimiser l'agencement de l'entrepôt et la logistique interne. Pourquoi c'est important Il offre une vue granulaire de l'emplacement du stock au sein d'une usine, aidant à analyser les mouvements internes et l'efficacité du stockage. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ LGORT (Magasin). Exemples 0001RM01FG01QI01 | |||
| Nom d'utilisateur UserName | L'ID utilisateur de la personne qui a exécuté la transaction dans SAP. | ||
| Description Cet attribut capture l'ID utilisateur SAP de l'employé qui a enregistré le document ou exécuté l'activité. Il assure la traçabilité en montrant qui est responsable d'actions spécifiques au sein du processus de gestion des stocks. L'analyse par utilisateur est essentielle pour comprendre les performances, la conformité et les besoins en formation. Par exemple, le tableau de bord « Facteurs d'ajustement manuel des stocks » utilise cet attribut pour voir qui effectue le plus d'ajustements. Il peut aider à identifier les utilisateurs qui pourraient nécessiter une formation supplémentaire, à mettre en évidence les activités non autorisées ou à reconnaître les meilleurs performeurs. Pourquoi c'est important Il assure la traçabilité et aide à identifier les comportements spécifiques des utilisateurs, les besoins en formation ou les problèmes de conformité. Où obtenir Trouvé dans la table d'en-tête du document de mouvement MKPF, champ USNAM (Nom d'utilisateur). Exemples JSMITHMBROWNWAREHOUSE_OPS | |||
| Quantité Quantity | La quantité de matière impliquée dans le mouvement de stock. | ||
| Description Cet attribut représente la quantité de matière qui a été déplacée, reçue, sortie ou ajustée lors d'une activité donnée. Il est enregistré dans l'unité de mesure de base pour la matière. L'analyse de la quantité est cruciale pour comprendre l'ampleur et l'impact des processus d'inventaire. Elle permet la création de tableaux de bord qui visualisent le volume de marchandises traitées, tels que le « Débit de sortie de marchandises par SKU ». Elle est également utilisée pour calculer des KPI comme le « Ratio stock mis au rebut/éliminé », fournissant une dimension quantitative à l'analyse de processus qui va au-delà du simple comptage des événements. Pourquoi c'est important Il quantifie le volume de matière dans chaque activité, permettant l'analyse du débit, du volume de rebut et de l'impact des ajustements. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ MENGE (Quantité). Exemples 10012.55000-10 | |||
| Type de Mouvement MovementType | Une clé à trois chiffres dans SAP qui contrôle la manière dont un mouvement de marchandises est enregistré. | ||
| Description Le type de mouvement est une clé de contrôle critique dans la gestion des stocks SAP qui détermine les caractéristiques d'un mouvement de matière. Il spécifie quels comptes sont mis à jour, comment la disposition de l'écran apparaît pour la transaction, et quels champs de quantité ou de valeur sont mis à jour. Par exemple, « 101 » est pour la réception de marchandises, « 311 » est pour un transfert, et « 551 » est pour la mise au rebut. Cet attribut est souvent la source pour dériver le nom convivial de l'« Activité ». L'analyse des processus par type de mouvement permet une vue détaillée et technique de la circulation des stocks. Elle est essentielle pour valider l'exactitude de la carte de processus et pour identifier les types spécifiques de transactions qui peuvent causer des goulots d'étranglement ou des écarts. Pourquoi c'est important Il fournit une classification précise et technique de chaque événement d'inventaire, ce qui est crucial pour la dérivation des activités et une analyse détaillée. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ BWART (Type de mouvement). Exemples 101311261551601 | |||
| Usine Plant | L'unité organisationnelle représentant une installation où l'inventaire est situé, telle qu'une usine ou un centre de distribution. | ||
| Description Une Division (Plant) est une unité organisationnelle centrale dans SAP qui peut représenter une installation de production, un site de stockage central ou un siège social. Tout l'inventaire est physiquement ou logiquement situé au sein d'une Division. L'analyse par Division est fondamentale pour comparer les performances des processus entre différents sites physiques. Elle permet de répondre à des questions telles que : « Quelle division a le temps de cycle de rangement le plus long ? » ou « Le taux d'écart d'inventaire est-il plus élevé dans la Division A que dans la Division B ? ». Cette segmentation géographique ou organisationnelle est essentielle pour identifier les problèmes spécifiques à un site et partager les meilleures pratiques au sein de l'organisation. Pourquoi c'est important Il permet de comparer les processus et les performances des stocks entre les différents sites de l'entreprise. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ WERKS (Division). Exemples 10001710DE01US01 | |||
| Bac de stockage StorageBin | L'unité de stockage la plus granulaire dans un entrepôt où les matériaux sont physiquement situés. | ||
| Description Un Emplacement de stockage (Storage Bin) représente une coordonnée spécifique dans un entrepôt, comme un emplacement de rack. Ce niveau de détail est généralement utilisé lorsque SAP Warehouse Management (WM) ou Extended Warehouse Management (EWM) est implémenté. Pour le tableau de bord 'Utilisation de l'espace d'entrepôt', cet attribut est critique. Il permet d'analyser l'efficacité avec laquelle l'espace d'entrepôt est utilisé, identifie les points chauds de congestion potentiels et peut révéler des chemins de rangement ou de prélèvement inefficaces. L'analyse des mouvements entre les emplacements de stockage aide à optimiser l'agencement de l'entrepôt et à réduire le temps de déplacement des opérateurs. Pourquoi c'est important Il fournit les données d'emplacement les plus granulaires, permettant l'analyse de l'utilisation de l'espace d'entrepôt et de l'efficacité opérationnelle. Où obtenir Si vous utilisez WM, cela se trouve dans les tables d'ordres de transfert comme LTAK/LTAP. Pour les documents d'inventaire, cela pourrait être dans MSEG-LGPBE. Consultez la documentation SAP S/4HANA. Exemples A-01-01-AB-05-10-CRCV-AREA-01 | |||
| Date d'expiration ExpirationDate | La date à laquelle le lot de matière expire et n'est plus utilisable. | ||
| Description La date de péremption (SLED) est une donnée de base critique pour les marchandises périssables ou sensibles au temps. Elle est gérée au niveau du lot et dicte quand un produit ne peut plus être vendu ou consommé. Cet attribut est essentiel pour le tableau de bord « Analyse des stocks obsolètes et périmés ». En analysant les activités dans le contexte de la date de péremption, les entreprises peuvent identifier les lots à risque d'expiration et prendre des mesures proactives. Il aide à mesurer l'efficacité des politiques de rotation des stocks comme le Premier périmé, premier sorti (FEFO) et à quantifier les pertes dues aux stocks périmés mis au rebut. Pourquoi c'est important Il permet d'analyser les stocks obsolètes et périmés, aidant à minimiser le gaspillage et les pertes financières. Où obtenir Trouvé dans la table maître des lots MCH1 ou MCHA, champ VFDAT (Date de péremption). Exemples 2024-12-312025-06-302024-09-01 | |||
| Dernière mise à jour des données LastDataUpdate | Le timestamp indiquant la dernière actualisation des données de cet enregistrement depuis le système source. | ||
| Description Cet attribut enregistre la date et l'heure de la dernière extraction ou mise à jour des données du système source. Il fournit des métadonnées cruciales sur la fraîcheur des informations analysées. Cela aide les utilisateurs à comprendre s'ils consultent des données quasi en temps réel ou un instantané d'une période précédente. Dans toute analyse, connaître la rapidité des données est essentiel pour tirer des conclusions pertinentes et précises. Ce champ permet aux analystes et aux utilisateurs métier de confirmer l'actualité des données et est souvent affiché dans les tableaux de bord pour fournir un contexte aux informations présentées. Pourquoi c'est important Il informe les utilisateurs sur la fraîcheur des données, garantissant que les analyses sont basées sur des informations à jour. Où obtenir Ce Exemples 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Numéro de document matériel MaterialDocumentNumber | Le numéro unique identifiant le document de mouvement de marchandises qui enregistre le mouvement de stock. | ||
| Description Lorsqu'un mouvement de marchandises est enregistré dans SAP, le système génère un document matière comme preuve de ce mouvement. Cet attribut est l'identifiant unique de ce document. Un seul document matière peut contenir plusieurs postes ou activités. En Process Mining, le numéro de document matière est un identifiant transactionnel clé qui peut être utilisé pour regrouper les événements connexes enregistrés ensemble. Il est également essentiel pour l'audit et pour approfondir l'analyse de processus jusqu'au système source afin d'examiner des transactions spécifiques. Pourquoi c'est important Il sert de clé transactionnelle pour l'audit et permet de regrouper les activités qui ont été exécutées ensemble. Où obtenir Trouvé dans les tables MKPF (en-tête) et MSEG (poste), champ MBLNR (Numéro du document de mouvement). Exemples 490000123450000056784900002345 | |||
| Système source SourceSystem | Identifie le système source d'où les `données` ont été extraites. | ||
| Description Cet attribut spécifie le système d'enregistrement d'où proviennent les données de gestion des stocks. Dans ce contexte, il s'agirait de l'instance SAP S/4HANA spécifique. Cette information est cruciale dans les environnements où les données peuvent être extraites de plusieurs ERP, systèmes de gestion d'entrepôt ou plateformes héritées. Bien qu'il puisse sembler statique dans une analyse mono-système, il devient vital lors de la fusion de données de différentes sources pour créer une vue holistique du processus. Il aide à la gouvernance des données, au dépannage des problèmes d'extraction de données et à garantir une traçabilité claire des données. Pourquoi c'est important Il fournit le contexte sur l'origine des données, ce qui est essentiel pour la gouvernance des données et l'analyse multi-systèmes. Où obtenir Ceci est généralement une valeur codée en dur définie pendant le processus de transformation des données pour identifier l'instance SAP S/4HANA spécifique. Exemples S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
| Temps de cycle d'exécution des commandes OrderFulfillmentCycleTime | La durée de bout en bout, du début du prélèvement à l'émission des marchandises pour la livraison. | ||
| Description Ceci est une métrique calculée qui mesure le temps total depuis l'activité « Prélèvement initié » jusqu'à l'activité « Sortie de marchandises pour livraison enregistrée ». Elle représente le temps total nécessaire à l'entrepôt pour préparer et expédier une commande client une fois le processus démarré. Cet attribut est une mesure directe du KPI « Temps de cycle d'exécution des commandes ». L'analyse de cette durée aide les entreprises à comprendre leur réactivité à la demande client. Elle peut être ventilée par produit, entrepôt ou client pour identifier où les retards se produisent dans le processus de prélèvement, d'emballage et d'expédition, impactant directement la satisfaction client et l'efficacité logistique. Pourquoi c'est important Il mesure la rapidité et l'efficacité du processus de sortie d'entrepôt, un facteur clé de la satisfaction client. Où obtenir Ceci est un attribut calculé, dérivé en calculant la différence de temps entre les événements « Prélèvement initié » et « Sortie de marchandises pour livraison enregistrée » pour chaque lot. Exemples 7200144003600 | |||
| Temps de cycle du contrôle qualité QualityInspectionCycleTime | La durée pendant laquelle un lot est en contrôle qualité avant d'être libéré. | ||
| Description Cette métrique calculée mesure le temps écoulé entre l'activité « Stock enregistré en contrôle qualité » et l'activité « Stock en contrôle qualité libéré » pour un lot de stock donné. Elle représente le temps pendant lequel les marchandises sont indisponibles à l'utilisation en raison des processus de contrôle qualité. Cet attribut prend directement en charge le KPI et le tableau de bord « Temps de cycle du contrôle qualité ». En calculant et en analysant cette durée, les entreprises peuvent identifier les goulots d'étranglement dans le processus qualité, comparer les performances entre différents matériaux ou usines, et trouver des opportunités de rationaliser les inspections pour améliorer la disponibilité globale des stocks et réduire les délais. Pourquoi c'est important Il quantifie les retards causés par le contrôle qualité, mettant en évidence les opportunités d'augmenter la disponibilité des stocks et la vitesse des processus. Où obtenir Ceci est un champ calculé, dérivé en trouvant la différence de temps entre les horodatages des activités de début et de fin de la phase d'inspection qualité. Exemples 2880086400172800 | |||
| Type de stock StockType | Indique le statut du stock, tel que libre, en contrôle qualité ou bloqué. | ||
| Description Le type de stock catégorise l'inventaire en fonction de son utilisabilité. Les principaux types sont le stock à utilisation libre (disponible), le stock en contrôle qualité (en attente de vérifications qualité) et le stock bloqué (non disponible à l'utilisation). Les mouvements de marchandises impliquent souvent un changement de type de stock. Le suivi des changements de type de stock est fondamental pour comprendre le processus de disponibilité des stocks. Il prend directement en charge des activités comme « Stock enregistré en contrôle qualité » et « Statut du stock passé à bloqué ». L'analyse du temps passé dans chaque type de stock, en particulier en « contrôle qualité », est essentielle pour identifier les retards qui ont un impact sur la disponibilité des marchandises pour la vente ou la production. Pourquoi c'est important Il suit le statut d'utilisabilité des stocks, ce qui est crucial pour analyser les retards d'inspection qualité et la disponibilité des stocks. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ INSMK (Type de stock). Exemples Utilisation libreContrôle QualitéStock bloqué | |||
| Unité de Mesure UnitOfMeasure | L'unité dans laquelle la quantité de matière est mesurée (par exemple, pièces, kilogrammes). | ||
| Description L'unité de mesure spécifie l'unité pour l'attribut « Quantité ». Les exemples courants incluent les pièces (PC), les kilogrammes (KG), les litres (L) ou les boîtes (BOX). Cela fournit un contexte essentiel pour le champ de quantité. Bien que souvent utilisé comme un simple descripteur, cet attribut est important pour garantir la qualité des données et pour les analyses où différentes unités doivent être converties en une norme commune. Par exemple, pour calculer avec précision la valeur totale des stocks mis au rebut, les quantités dans différentes unités doivent être comprises et potentiellement converties. Pourquoi c'est important Il fournit un contexte essentiel à l'attribut « Quantité », garantissant une interprétation précise des volumes de matériaux. Où obtenir Trouvé dans la table des postes de document de mouvement MSEG, champ MEINS (Unité de mesure de base). Exemples PCKGEAM | |||
Activités de gestion des stocks
| Activité | Description | ||
|---|---|---|---|
| Ajustement d'inventaire enregistré | Enregistre un changement dans la quantité de stock résultant d'un décompte d'inventaire physique ou d'une autre divergence. Cet événement ajuste explicitement l'inventaire comptable pour qu'il corresponde au décompte physique. | ||
| Pourquoi c'est important Ces ajustements sont essentiels pour maintenir la précision des stocks. Une fréquence élevée d'ajustements indique des problèmes sous-jacents dans la gestion des stocks, la sécurité ou la saisie des données. Où obtenir Enregistré dans la table MATDOC. Identifié par les types de mouvement d'inventaire physique (BWART), tels que 701 (gain d'inventaire) ou 702 (perte d'inventaire). Capture Capturé à partir des documents de mouvement dans MATDOC avec les types de mouvement d'ajustement d'inventaire physique (par exemple, 701, 702). Type d'événement explicit | |||
| Réception de marchandises enregistrée | Marque l'entrée initiale d'un lot de stock dans l'entrepôt, généralement en provenance d'un fournisseur ou de la production. Cet événement est explicitement capturé dans SAP S/4HANA lorsqu'un document de mouvement de marchandises est créé à la réception des biens. | ||
| Pourquoi c'est important Ceci est l'événement de début principal pour le cycle de vie des stocks. L'analyse du temps entre cette activité et d'autres, comme le rangement, est cruciale pour mesurer l'efficacité du quai de réception. Où obtenir Enregistré dans la table MATDOC. Identifié par des types de mouvement spécifiques (BWART), tels que 101 pour les réceptions de commande d'achat ou 103 pour la réception en stock bloqué. Capture Capturé à partir des documents de mouvement dans MATDOC avec les types de mouvement de réception de marchandises correspondants. Type d'événement explicit | |||
| Sortie de marchandises pour livraison enregistrée | Enregistre l'étape finale du processus d'expédition, où la propriété du lot est transférée à un client ou à un transporteur. Il s'agit d'une transaction explicite qui réduit les stocks et est comptabilisée. | ||
| Pourquoi c'est important Ceci est un événement de fin clé pour le processus d'exécution des commandes. Il est crucial pour mesurer la livraison à temps et calculer le temps de cycle global d'exécution des commandes. Où obtenir Enregistré dans la table MATDOC. Identifié par le type de mouvement (BWART) pour la sortie de marchandises pour une livraison de commande client, généralement 601. Capture Capturé à partir des documents de mouvement dans MATDOC avec le type de mouvement 601. Type d'événement explicit | |||
| Sortie de marchandises pour production enregistrée | Représente la consommation d'un lot de stock par un ordre de fabrication ou de processus. Cette transaction réduit les stocks et alloue le coût de la matière à l'ordre de fabrication. | ||
| Pourquoi c'est important Ceci est un événement de consommation primaire, marquant la fin du cycle de vie des stocks pour les composants. Il est critique pour analyser la disponibilité des matières pour la production et les modèles de consommation. Où obtenir Enregistré dans la table MATDOC. Identifié par les types de mouvement (BWART) pour la sortie de marchandises pour une commande, tel que 261. Capture Capturé à partir des documents de mouvement dans MATDOC avec le type de mouvement 261. Type d'événement explicit | |||
| Stock en contrôle qualité libéré | Indique qu'un lot a passé l'inspection qualité et est maintenant disponible pour utilisation ou rangement. Ceci est enregistré comme un transfert explicite du stock qualité vers un autre type de stock, comme le stock libre. | ||
| Pourquoi c'est important Ce jalon marque l'achèvement du processus qualité, rendant l'inventaire disponible. Les retards ici peuvent causer des problèmes importants en aval dans la production ou l'exécution. Où obtenir Enregistré dans la table MATDOC comme un transfert. Généralement identifié par le type de mouvement (BWART) 321, déplaçant le stock de « Contrôle qualité » à « Utilisation libre ». Capture Capturé à partir des documents de mouvement dans MATDOC avec le type de mouvement 321. Type d'événement explicit | |||
| Stock mis au rebut | Marque l'élimination finale d'un lot de stock, le retirant définitivement des registres d'inventaire. Cela se produit généralement pour les stocks périmés, endommagés ou obsolètes. | ||
| Pourquoi c'est important Ceci est un événement de fin représentant une perte financière. L'analyse des événements de mise au rebut aide à identifier les problèmes liés au vieillissement des stocks, aux procédures de manipulation ou à la prévision de la demande. Où obtenir Enregistré dans la table MATDOC. Identifié par les types de mouvement (BWART) pour la mise au rebut, tels que 551 (depuis utilisation libre), 553 (depuis CQ) ou 555 (depuis stock bloqué). Capture Capturé à partir des documents de mouvement dans MATDOC avec les types de mouvement de mise au rebut (par exemple, 551). Type d'événement explicit | |||
| Transfert de rangement enregistré | Représente le mouvement physique du lot d'une zone de réception ou de transit vers son emplacement de stockage final ou son casier. Ceci est enregistré comme un document de mouvement de matières (transfert) dans SAP. | ||
| Pourquoi c'est important Complète le processus de réception entrante. Le temps nécessaire pour achever cette activité, connu sous le nom de temps de rangement, est un KPI critique pour l'efficacité de l'entrepôt. Où obtenir Enregistré dans la table MATDOC comme un transfert, souvent entre emplacements de stockage (par exemple, type de mouvement 311). Le mouvement spécifique peut varier en fonction de la structure de l'entrepôt. Capture Identifié par les documents de transfert dans MATDOC qui déplacent le stock d'un Magasin (SLoc) intermédiaire/de réception vers un Magasin (SLoc) de stockage final. Type d'événement explicit | |||
| Mouvement de stock interne enregistré | Capture le mouvement d'un lot de stock entre différents magasins ou emplacements au sein de la même division. Il s'agit d'une transaction explicite créant un document de mouvement. | ||
| Pourquoi c'est important Le suivi des transferts internes aide à analyser l'efficacité opérationnelle de l'entrepôt, à identifier les mouvements inutiles et à mesurer le délai d'approvisionnement pour le réapprovisionnement des stocks entre les emplacements. Où obtenir Enregistré dans la table MATDOC. Généralement identifié par le type de mouvement (BWART) 311 pour les transferts entre emplacements de stockage. Capture Capturé à partir des documents de mouvement dans MATDOC avec les types de mouvement pour les transferts de stock internes (par exemple, 311). Type d'événement explicit | |||
| Prélèvement initié | Marque le début du processus d'exécution des commandes où une tâche d'entrepôt est créée pour prélever un lot de son emplacement de stockage. Cela est souvent enregistré lors de la création d'un ordre de transfert ou d'une tâche d'entrepôt. | ||
| Pourquoi c'est important Cette activité est le déclencheur du processus de prélèvement. L'analyse du temps entre cet événement et l'achèvement du prélèvement aide à mesurer l'efficacité des opérateurs d'entrepôt et à identifier les retards. Où obtenir Ceci n'est généralement pas dans MATDOC. Dans les systèmes de gestion d'entrepôt (WM/EWM), cela est déduit de l'horodatage de création d'un ordre de transfert (table LTAK) ou d'une tâche d'entrepôt. Capture Déduit de l'enregistrement de création d'un Ordre de transfert (dans WM) ou d'une Tâche d'entrepôt (dans EWM) lié au lot de matériel. Type d'événement inferred | |||
| Retour client reçu | Capture le retour d'un lot précédemment sorti d'un client vers l'entrepôt. Il s'agit d'une transaction explicite qui augmente l'inventaire. | ||
| Pourquoi c'est important Le suivi des retours est essentiel pour comprendre les problèmes de qualité des produits et l'insatisfaction des clients. Le processus de traitement et d'élimination des retours peut également être une source d'inefficacité. Où obtenir Enregistré dans la table MATDOC. Identifié par les types de mouvement (BWART) pour les retours de ventes, tels que 651 (vers utilisation libre) ou 653 (vers contrôle qualité). Capture Capturé à partir des documents de mouvement dans MATDOC avec les types de mouvement de retour client (par exemple, 651, 653). Type d'événement explicit | |||
| Statut du lot modifié | Reflète un changement dans l'enregistrement de la fiche lot, tel que le passage de son statut de « Utilisation libre » à « Restreint ». Ce n'est pas un mouvement de matière mais un changement dans les données de base, qui est enregistré. | ||
| Pourquoi c'est important Les changements de statut de lot impactent directement son utilisation dans les ventes ou la production. L'analyse de ces changements peut révéler des problèmes de stock périmé ou de contrôle qualité qui n'impliquent pas de mouvement physique. Où obtenir Déduit des journaux de modifications des tables Batch Master (MCH1, MCHA). Les tables CDHDR et CDPOS suivent les modifications apportées au champ de statut du lot (MCH1-ZUSTD). Capture Dérivé des documents de modification dans CDHDR/CDPOS pour le champ de statut dans l'enregistrement du lot maître (MCH1-ZUSTD). Type d'événement inferred | |||
| Statut du stock passé à bloqué | Représente un changement de statut du lot, le rendant indisponible pour la sortie, souvent en raison de dommages, de demandes de blocage ou d'autres raisons. Il s'agit d'un transfert explicite dans SAP. | ||
| Pourquoi c'est important Met en évidence les interruptions de la disponibilité des stocks. Une fréquence élevée d'événements de blocage peut indiquer des problèmes de manipulation, de conditions de stockage ou de qualité des fournisseurs. Où obtenir Enregistré dans la table MATDOC comme un transfert. Utilise couramment le type de mouvement (BWART) 344 pour déplacer le stock de « Bloqué » à « Utilisation libre », et 343 pour déplacer de « Utilisation libre » à « Bloqué ». Cette activité concerne le 343. Capture Identifié par les documents de mouvement dans MATDOC avec le type de mouvement 343. Type d'événement explicit | |||
| Statut du stock passé à utilisation libre | Représente un changement de statut du lot, le libérant d'un blocage ou d'une retenue qualité et le rendant disponible à l'utilisation. Cela est enregistré comme un transfert explicite. | ||
| Pourquoi c'est important Cette activité marque la résolution d'un blocage de stock. Le temps passé par le stock en état bloqué peut être analysé pour améliorer les processus de résolution. Où obtenir Enregistré dans la table MATDOC comme un transfert. Le type de mouvement (BWART) 344 déplace le stock de « Bloqué » à « Utilisation libre ». Capture Identifié par les documents de mouvement dans MATDOC avec le type de mouvement 344. Type d'événement explicit | |||
| Stock enregistré en contrôle qualité | Représente le mouvement d'un lot reçu vers un statut de stock en contrôle qualité, le rendant indisponible jusqu'à sa libération. Il s'agit d'une transaction explicite dans SAP, modifiant le type de stock du lot. | ||
| Pourquoi c'est important Cette activité initie le processus d'inspection qualité. La durée entre celle-ci et la libération du CQ est une métrique clé pour comprendre les retards liés à la qualité. Où obtenir Enregistré dans la table MATDOC. Il peut s'agir d'un mouvement d'entrée de marchandises (par exemple, 101) avec le type de stock (INSMK) défini sur « Q » (Contrôle Qualité) ou d'un transfert (par exemple, 322). Capture Identifié par les documents de mouvement dans MATDOC qui placent le stock dans le type de stock « Contrôle qualité ». Type d'événement explicit | |||
Guides d'extraction
Étapes
- Établir l'accès au système : Assurez-vous de disposer d'un utilisateur avec les autorisations nécessaires pour interroger les vues Core Data Services (CDS) dans le système SAP S/4HANA. Cela nécessite généralement un accès accordé par un administrateur système.
- Choisir un client SQL : Sélectionnez un outil client SQL capable de se connecter à la base de données SAP HANA. Les choix courants incluent SAP HANA Studio, SAP HANA Database Explorer ou des outils tiers comme DBeaver.
- Configurer la connexion à la base de données : À l'aide de votre client SQL, créez une nouvelle connexion à la base de données. Vous aurez besoin du nom d'hôte de la base de données HANA, du numéro de port (généralement 3<numéro_d'instance>15) et de vos identifiants d'utilisateur de base de données.
- Préparer la requête SQL : Copiez la requête SQL complète fournie dans la section 'requête' de ce document dans l'éditeur de votre client SQL.
- Définir les paramètres de la requête : Localisez les valeurs de remplacement dans la requête. Vous devez remplacer
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'par la plage de dates souhaitée, par exemple,BETWEEN '20230101' AND '20230630'. De plus, mettez à jour tous les filtres spécifiques à la société ou à la division commeMaterialDocumentItem.Plant IN ('Plant1', 'Plant2')pour qu'ils correspondent à votre structure organisationnelle. - Exécuter la requête : Exécutez la requête SQL modifiée sur la base de données S/4HANA. Le temps d'exécution variera en fonction de la plage de dates et du volume de données d'inventaire dans votre système.
- Vérifier les données : Une fois la requête terminée, examinez les résultats dans votre client SQL pour vous assurer qu'ils sont corrects et complets. Vérifiez la présence de différentes activités et le renseignement des attributs clés.
- Exporter le journal des événements : Exportez l'ensemble du jeu de résultats de votre client SQL vers un fichier CSV. Assurez-vous que les paramètres d'exportation utilisent l'encodage UTF-8 pour éviter les problèmes de caractères.
- Préparer le téléchargement : Nommez les colonnes du fichier CSV exactement comme elles sont aliasées dans la requête, par exemple,
InventoryBatchLot,ActivityName,EventTime, et ainsi de suite. Ce fichier est maintenant prêt à être téléchargé vers un outil de process mining.
Configuration
- Autorisations : L'utilisateur exécutant la requête doit disposer des permissions
SELECTsur les vues CDS suivantes :I_MaterialDocumentItem,I_BatchChangeDocumentetI_WarehouseTask. L'accès au schéma de base de données sous-jacent où résident ces vues est également requis. - Filtrage par plage de dates : Il est crucial d'appliquer un filtre de plage de dates aux champs
PostingDate,ChangeDocumentCreationDateouWarehouseTaskCreationDate. Une plage typique pour l'analyse est de 3 à 12 mois. L'interrogation sur plusieurs années peut entraîner des problèmes de performance significatifs. - Filtres organisationnels : Pour de meilleures performances et une analyse ciblée, ajoutez des clauses
WHEREpour filtrer parPlant(Division) ouCompanyCode(Société). Cela réduit le volume de données et concentre l'extraction sur les parties pertinentes de l'entreprise. - Volume de données : Soyez conscient que les systèmes de gestion des stocks génèrent un volume élevé de données. Une large plage de dates peut entraîner des millions de lignes, impactant potentiellement à la fois le système source pendant l'extraction et les performances de votre outil client.
- Extended Warehouse Management (EWM) : L'activité « Lancement du prélèvement » repose sur la vue CDS
I_WarehouseTask, qui n'est renseignée que si vous utilisez SAP Extended Warehouse Management. Si votre organisation utilise l'ancien module Warehouse Management (WM) ou uniquement Inventory Management (IM), cette activité spécifique ne sera pas extraite.
a Exemple de requête sql
SELECT
mat_doc.Batch AS "InventoryBatchLot",
CASE
WHEN mat_doc.MovementType = '101' AND mat_doc.InventoryStockType = '2' THEN 'Stock Posted to Quality Inspection'
WHEN mat_doc.MovementType = '101' THEN 'Goods Receipt Posted'
WHEN mat_doc.MovementType = '321' THEN 'Quality Inspection Stock Released'
WHEN mat_doc.MovementType = '311' THEN 'Internal Stock Transfer Posted'
WHEN mat_doc.MovementType = '344' THEN 'Stock Status Changed to Blocked'
WHEN mat_doc.MovementType IN ('343', '322') THEN 'Stock Status Changed to Unrestricted'
WHEN mat_doc.MovementType IN ('701', '702') THEN 'Inventory Adjustment Posted'
WHEN mat_doc.MovementType = '601' THEN 'Goods Issue for Delivery Posted'
WHEN mat_doc.MovementType = '261' THEN 'Goods Issue for Production Posted'
WHEN mat_doc.MovementType IN ('651', '653') THEN 'Sales Return Received'
WHEN mat_doc.MovementType = '551' THEN 'Stock Scrapped'
WHEN mat_doc.MovementType = '313' THEN 'Put-Away Transfer Posted' -- Example for two-step transfers
ELSE 'Unknown Material Movement'
END AS "ActivityName",
TO_TIMESTAMP(mat_doc.PostingDate || LPAD(mat_doc.CreationTime, 6, '0'), 'YYYYMMDDHH24MISS') AS "EventTime",
mat_doc.Material AS "MaterialNumber",
mat_doc.CreatedByUser AS "UserName",
mat_doc.MovementType AS "MovementType",
mat_doc.Plant AS "Plant",
mat_doc.StorageLocation AS "StorageLocation",
mat_doc.QuantityInEntryUnit AS "Quantity",
mat_doc.ReasonForMovement AS "MovementReasonCode"
FROM
I_MaterialDocumentItem AS mat_doc
WHERE
mat_doc.Batch IS NOT NULL AND mat_doc.Batch <> ''
AND mat_doc.PostingDate BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
-- AND mat_doc.Plant IN ('Plant1', 'Plant2') -- Placeholder: Add filters for relevant plants
UNION ALL
SELECT
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 3) AS "InventoryBatchLot",
'Batch Status Changed' AS "ActivityName",
change_doc.ChangeDocumentCreationDateTime AS "EventTime",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 1) AS "MaterialNumber",
change_doc.ChangedByUser AS "UserName",
NULL AS "MovementType",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 2) AS "Plant",
NULL AS "StorageLocation",
NULL AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_BatchChangeDocument AS change_doc
WHERE
change_doc.ChangeDocumentTable = 'MCHA' AND change_doc.ChangeDocumentTableFieldName = 'ZUSTD'
AND TO_VARCHAR(change_doc.ChangeDocumentCreationDate) BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
UNION ALL
SELECT
wh_task.Batch AS "InventoryBatchLot",
'Picking Initiated' AS "ActivityName",
wh_task.WarehouseTaskCreationDateTime AS "EventTime",
wh_task.Product AS "MaterialNumber",
wh_task.CreatedByUser AS "UserName",
NULL AS "MovementType",
wh_task.Plant AS "Plant",
wh_task.SourceStorageLocation AS "StorageLocation",
wh_task.TargetQuantity AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_WarehouseTask AS wh_task
WHERE
wh_task.Batch IS NOT NULL AND wh_task.Batch <> ''
AND wh_task.WarehouseProcessType IN ('P210', 'P220') -- Placeholder: Adjust process types based on your picking configuration
AND TO_VARCHAR(wh_task.WarehouseTaskCreationDate) BETWEEN '20230101' AND '20231231'; -- Placeholder: Set your date range Étapes
- Établir l'accès au système : Assurez-vous de disposer d'un utilisateur avec les autorisations nécessaires pour interroger les vues Core Data Services (CDS) dans le système SAP S/4HANA. Cela nécessite généralement un accès accordé par un administrateur système.
- Choisir un client SQL : Sélectionnez un outil client SQL capable de se connecter à la base de données SAP HANA. Les choix courants incluent SAP HANA Studio, SAP HANA Database Explorer ou des outils tiers comme DBeaver.
- Configurer la connexion à la base de données : À l'aide de votre client SQL, créez une nouvelle connexion à la base de données. Vous aurez besoin du nom d'hôte de la base de données HANA, du numéro de port (généralement 3<numéro_d'instance>15) et de vos identifiants d'utilisateur de base de données.
- Préparer la requête SQL : Copiez la requête SQL complète fournie dans la section 'requête' de ce document dans l'éditeur de votre client SQL.
- Définir les paramètres de la requête : Localisez les valeurs de remplacement dans la requête. Vous devez remplacer
I_MaterialDocumentItem.PostingDate BETWEEN 'YYYYMMDD' AND 'YYYYMMDD'par la plage de dates souhaitée, par exemple,BETWEEN '20230101' AND '20230630'. De plus, mettez à jour tous les filtres spécifiques à la société ou à la division commeMaterialDocumentItem.Plant IN ('Plant1', 'Plant2')pour qu'ils correspondent à votre structure organisationnelle. - Exécuter la requête : Exécutez la requête SQL modifiée sur la base de données S/4HANA. Le temps d'exécution variera en fonction de la plage de dates et du volume de données d'inventaire dans votre système.
- Vérifier les données : Une fois la requête terminée, examinez les résultats dans votre client SQL pour vous assurer qu'ils sont corrects et complets. Vérifiez la présence de différentes activités et le renseignement des attributs clés.
- Exporter le journal des événements : Exportez l'ensemble du jeu de résultats de votre client SQL vers un fichier CSV. Assurez-vous que les paramètres d'exportation utilisent l'encodage UTF-8 pour éviter les problèmes de caractères.
- Préparer le téléchargement : Nommez les colonnes du fichier CSV exactement comme elles sont aliasées dans la requête, par exemple,
InventoryBatchLot,ActivityName,EventTime, et ainsi de suite. Ce fichier est maintenant prêt à être téléchargé vers un outil de process mining.
Configuration
- Autorisations : L'utilisateur exécutant la requête doit disposer des permissions
SELECTsur les vues CDS suivantes :I_MaterialDocumentItem,I_BatchChangeDocumentetI_WarehouseTask. L'accès au schéma de base de données sous-jacent où résident ces vues est également requis. - Filtrage par plage de dates : Il est crucial d'appliquer un filtre de plage de dates aux champs
PostingDate,ChangeDocumentCreationDateouWarehouseTaskCreationDate. Une plage typique pour l'analyse est de 3 à 12 mois. L'interrogation sur plusieurs années peut entraîner des problèmes de performance significatifs. - Filtres organisationnels : Pour de meilleures performances et une analyse ciblée, ajoutez des clauses
WHEREpour filtrer parPlant(Division) ouCompanyCode(Société). Cela réduit le volume de données et concentre l'extraction sur les parties pertinentes de l'entreprise. - Volume de données : Soyez conscient que les systèmes de gestion des stocks génèrent un volume élevé de données. Une large plage de dates peut entraîner des millions de lignes, impactant potentiellement à la fois le système source pendant l'extraction et les performances de votre outil client.
- Extended Warehouse Management (EWM) : L'activité « Lancement du prélèvement » repose sur la vue CDS
I_WarehouseTask, qui n'est renseignée que si vous utilisez SAP Extended Warehouse Management. Si votre organisation utilise l'ancien module Warehouse Management (WM) ou uniquement Inventory Management (IM), cette activité spécifique ne sera pas extraite.
a Exemple de requête sql
SELECT
mat_doc.Batch AS "InventoryBatchLot",
CASE
WHEN mat_doc.MovementType = '101' AND mat_doc.InventoryStockType = '2' THEN 'Stock Posted to Quality Inspection'
WHEN mat_doc.MovementType = '101' THEN 'Goods Receipt Posted'
WHEN mat_doc.MovementType = '321' THEN 'Quality Inspection Stock Released'
WHEN mat_doc.MovementType = '311' THEN 'Internal Stock Transfer Posted'
WHEN mat_doc.MovementType = '344' THEN 'Stock Status Changed to Blocked'
WHEN mat_doc.MovementType IN ('343', '322') THEN 'Stock Status Changed to Unrestricted'
WHEN mat_doc.MovementType IN ('701', '702') THEN 'Inventory Adjustment Posted'
WHEN mat_doc.MovementType = '601' THEN 'Goods Issue for Delivery Posted'
WHEN mat_doc.MovementType = '261' THEN 'Goods Issue for Production Posted'
WHEN mat_doc.MovementType IN ('651', '653') THEN 'Sales Return Received'
WHEN mat_doc.MovementType = '551' THEN 'Stock Scrapped'
WHEN mat_doc.MovementType = '313' THEN 'Put-Away Transfer Posted' -- Example for two-step transfers
ELSE 'Unknown Material Movement'
END AS "ActivityName",
TO_TIMESTAMP(mat_doc.PostingDate || LPAD(mat_doc.CreationTime, 6, '0'), 'YYYYMMDDHH24MISS') AS "EventTime",
mat_doc.Material AS "MaterialNumber",
mat_doc.CreatedByUser AS "UserName",
mat_doc.MovementType AS "MovementType",
mat_doc.Plant AS "Plant",
mat_doc.StorageLocation AS "StorageLocation",
mat_doc.QuantityInEntryUnit AS "Quantity",
mat_doc.ReasonForMovement AS "MovementReasonCode"
FROM
I_MaterialDocumentItem AS mat_doc
WHERE
mat_doc.Batch IS NOT NULL AND mat_doc.Batch <> ''
AND mat_doc.PostingDate BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
-- AND mat_doc.Plant IN ('Plant1', 'Plant2') -- Placeholder: Add filters for relevant plants
UNION ALL
SELECT
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 3) AS "InventoryBatchLot",
'Batch Status Changed' AS "ActivityName",
change_doc.ChangeDocumentCreationDateTime AS "EventTime",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 1) AS "MaterialNumber",
change_doc.ChangedByUser AS "UserName",
NULL AS "MovementType",
SPLIT_PART(change_doc.ChangeableObjectDescription, '/', 2) AS "Plant",
NULL AS "StorageLocation",
NULL AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_BatchChangeDocument AS change_doc
WHERE
change_doc.ChangeDocumentTable = 'MCHA' AND change_doc.ChangeDocumentTableFieldName = 'ZUSTD'
AND TO_VARCHAR(change_doc.ChangeDocumentCreationDate) BETWEEN '20230101' AND '20231231' -- Placeholder: Set your date range
UNION ALL
SELECT
wh_task.Batch AS "InventoryBatchLot",
'Picking Initiated' AS "ActivityName",
wh_task.WarehouseTaskCreationDateTime AS "EventTime",
wh_task.Product AS "MaterialNumber",
wh_task.CreatedByUser AS "UserName",
NULL AS "MovementType",
wh_task.Plant AS "Plant",
wh_task.SourceStorageLocation AS "StorageLocation",
wh_task.TargetQuantity AS "Quantity",
NULL AS "MovementReasonCode"
FROM
I_WarehouseTask AS wh_task
WHERE
wh_task.Batch IS NOT NULL AND wh_task.Batch <> ''
AND wh_task.WarehouseProcessType IN ('P210', 'P220') -- Placeholder: Adjust process types based on your picking configuration
AND TO_VARCHAR(wh_task.WarehouseTaskCreationDate) BETWEEN '20230101' AND '20231231'; -- Placeholder: Set your date range Étapes
- Accéder à l'Éditeur ABAP : Connectez-vous à votre système SAP S/4HANA. Ouvrez l'Éditeur ABAP à l'aide du code de transaction
SE38. - Créer un nouveau programme : Saisissez un nom pour le nouveau programme dans le champ 'Programme', par exemple,
Z_PM_INVENTORY_EXTRACT, et cliquez sur le bouton 'Créer'. Fournissez un titre descriptif, définissez le 'Type' sur 'Programme exécutable' et enregistrez-le dans un package. - Définir les paramètres du programme : Dans l'éditeur de programme, définissez l'écran de sélection qui servira d'interface utilisateur pour l'extraction. Cela permet aux utilisateurs de spécifier des paramètres tels que la plage de dates et la division pour l'extraction des données.
- Implémenter la logique d'extraction : Copiez le code ABAP complet fourni dans la section 'Requête' et collez-le dans l'Éditeur ABAP. Ce code est conçu pour sélectionner les données des 14 activités d'inventaire requises à partir de diverses tables SAP.
- Comprendre la logique principale : Le programme fonctionne en sélectionnant les données pour chaque activité d'inventaire distincte à partir de ses tables sources, telles que
MKPFetMSEGpour les mouvements de matériel ouCDHDRetCDPOSpour les modifications des données de base. Chaque sélection est ensuite combinée à l'aide deUNION ALLdans une seule table interne qui représente le journal des événements. - Configurer la sortie du fichier : La dernière partie du code gère l'écriture des données consolidées de la table interne vers un fichier. Elle utilise l'instruction
OPEN DATASETpour créer un fichier sur le serveur d'applications SAP. Vous devez spécifier un chemin de serveur valide où l'utilisateur du système SAP dispose des permissions d'écriture. - Exécuter le programme : Enregistrez et activez le programme ABAP (Ctrl+F3). Exécutez-le en appuyant sur F8. Sur l'écran de sélection, entrez la plage de dates souhaitée et tout autre filtre pertinent, comme la division ou la société.
- Exécuter comme tâche de fond : Pour de grands volumes de données, il est crucial d'exécuter le programme comme une tâche de fond pour éviter les timeouts de session. Depuis l'écran d'exécution (F8), allez au menu
Programme -> Exécuter en arrière-plan. Planifiez la tâche pour qu'elle s'exécute pendant les heures creuses. - Récupérer le fichier de sortie : Une fois la tâche terminée, localisez le fichier de sortie sur le serveur d'applications SAP. Utilisez le code de transaction
AL11pour parcourir les répertoires du serveur et trouver votre fichier. Utilisez la transactionCG3Ypour télécharger le fichier du serveur d'applications vers votre ordinateur local. - Préparer le téléchargement : Ouvrez le fichier téléchargé dans un éditeur de texte ou un logiciel de feuille de calcul. Assurez-vous qu'il est formaté comme un fichier CSV avec une ligne d'en-tête, en utilisant une virgule comme délimiteur et des guillemets doubles comme qualificateur de texte. Vérifiez que les noms de colonnes correspondent aux exigences avant de le télécharger dans l'outil de process mining.
Configuration
- Plage de dates de comptabilisation : C'est le paramètre le plus critique. Nous recommandons d'extraire les données par lots gérables, par exemple 3 à 6 mois à la fois, afin d'assurer de bonnes performances et d'éviter les délais d'attente du système.
- Filtre par Division (Plant) : Il est fortement conseillé de filtrer par une ou plusieurs Divisions (
WERKS) spécifiques. Exécuter l'extraction pour toutes les divisions simultanément peut être extrêmement gourmand en ressources. - Filtre par Société (Company Code) : Vous pouvez ajouter un filtre optionnel par Société (
BUKRS) pour limiter davantage la portée des données si votre organisation opère avec plusieurs codes de société au sein du même système. - Chemin du fichier sur le serveur d'applications : Le programme ABAP nécessite un chemin de répertoire prédéfini et valide sur le serveur d'applications SAP. Assurez-vous que l'utilisateur du système SAP (
SY-UNAME) dispose des permissions de niveau OS nécessaires pour écrire des fichiers dans ce répertoire. - Autorisations : L'utilisateur exécutant cette extraction requiert des autorisations pour la transaction
SE38(pour créer et exécuter le programme), un accès en affichage aux tablesMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKetLTAP, et la capacité de planifier des jobs en arrière-plan (SM36/SM37).
a Exemple de requête abap
REPORT Z_PM_INVENTORY_EXTRACT.
" ====================================================================
" SELECTION SCREEN
" ====================================================================
SELECT-OPTIONS: s_budat FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: s_werks FOR mseg-werks.
PARAMETERS: p_fpath TYPE string DEFAULT '/usr/sap/trans/tmp/inventory_log.csv' OBLIGATORY.
" ====================================================================
" DATA STRUCTURES
" ====================================================================
TYPES: BEGIN OF ty_event_log,
InventoryBatchLot TYPE charg,
ActivityName TYPE string,
EventTime TYPE string,
MaterialNumber TYPE matnr,
UserName TYPE xubname,
MovementType TYPE bwart,
Plant TYPE werks_d,
StorageLocation TYPE lgort_d,
Quantity TYPE menge_d,
MovementReasonCode TYPE grund,
END OF ty_event_log.
DATA: lt_event_log TYPE TABLE OF ty_event_log.
" ====================================================================
" DATA SELECTION
" ====================================================================
START-OF-SELECTION.
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Receipt Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('101', '103', '105', '501', '521', '561')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~shkzg
WHEN 'H' THEN 'Stock Posted to Quality Inspection'
WHEN 'S' THEN 'Quality Inspection Stock Released'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '321' " For QI to Unrestricted
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Put-Away Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '311' AND mseg~shkzg = 'H' " Assume put-away is the credit side
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Internal Stock Transfer Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('301', '311', '313', '315')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
CASE mseg~bwart
WHEN '343' THEN 'Stock Status Changed to Blocked'
WHEN '344' THEN 'Stock Status Changed to Unrestricted'
END AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('343', '344')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Inventory Adjustment Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('701', '702', '711', '712')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Delivery Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '601'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Goods Issue for Production Posted' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '261'
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Sales Return Received' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart IN ('651', '653')
UNION ALL
SELECT
mseg~charg AS InventoryBatchLot,
'Stock Scrapped' AS ActivityName,
CONCAT( mkpf~cpudt, mkpf~cputm ) AS EventTime,
mseg~matnr AS MaterialNumber,
mkpf~usnam AS UserName,
mseg~bwart AS MovementType,
mseg~werks AS Plant,
mseg~lgort AS StorageLocation,
mseg~menge AS Quantity,
mseg~grund AS MovementReasonCode
FROM mseg
JOIN mkpf ON mkpf~mblnr = mseg~mblnr AND mkpf~mjahr = mseg~mjahr
WHERE mkpf~budat IN s_budat
AND mseg~werks IN s_werks
AND mseg~charg IS NOT NULL AND mseg~charg <> ''
AND mseg~bwart = '551'
UNION ALL
SELECT
ltap~charg AS InventoryBatchLot,
'Picking Initiated' AS ActivityName,
CONCAT( ltak~bdatu, ltak~bzeit ) AS EventTime,
ltap~matnr AS MaterialNumber,
ltak~bname AS UserName,
ltak~bwart AS MovementType,
ltap~werks AS Plant,
ltap~lgort AS StorageLocation,
ltap~nista AS Quantity,
'' AS MovementReasonCode
FROM ltap
JOIN ltak ON ltak~tanum = ltap~tanum
WHERE ltak~bdatu IN s_budat
AND ltap~werks IN s_werks
AND ltap~charg IS NOT NULL AND ltap~charg <> ''
UNION ALL
SELECT
SUBSTRING( cdhdr~objectid, 5, 18 ) AS InventoryBatchLot, " Object ID for BATCH is MATNR+WERKS+CHARG
'Batch Status Changed' AS ActivityName,
CONCAT( cdhdr~udate, cdhdr~utime ) AS EventTime,
SUBSTRING( cdhdr~objectid, 1, 4 ) AS MaterialNumber,
cdhdr~username AS UserName,
'' AS MovementType,
'' AS Plant,
'' AS StorageLocation,
0 AS Quantity,
'' AS MovementReasonCode
FROM cdhdr
JOIN cdpos ON cdpos~objectclas = cdhdr~objectclas
AND cdpos~objectid = cdhdr~objectid
AND cdpos~changenr = cdhdr~changenr
WHERE cdhdr~udate IN s_budat
AND cdhdr~objectclas = 'BATCH'
AND cdpos~tabname = 'MCH1'
AND cdpos~fname = 'ZUSTD'
INTO TABLE @lt_event_log.
" ====================================================================
" WRITE OUTPUT FILE
" ====================================================================
DATA: lv_string TYPE string.
DATA: lo_conv TYPE REF TO cl_abap_conv_out_ce.
lo_conv = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ).
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc <> 0.
MESSAGE 'Error opening file.' TYPE 'E'.
RETURN.
ENDIF.
" Write Header
lv_string = 'InventoryBatchLot,ActivityName,EventTime,MaterialNumber,UserName,MovementType,Plant,StorageLocation,Quantity,MovementReasonCode'.
TRANSFER lv_string TO p_fpath.
" Write Data
LOOP AT lt_event_log ASSIGNING FIELD-SYMBOL(<fs_log>).
CONCATENATE
<fs_log>-InventoryBatchLot
<fs_log>-ActivityName
<fs_log>-EventTime
<fs_log>-MaterialNumber
<fs_log>-UserName
<fs_log>-MovementType
<fs_log>-Plant
<fs_log>-StorageLocation
<fs_log>-Quantity
<fs_log>-MovementReasonCode
INTO lv_string
SEPARATED BY ','.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
WRITE: 'Extraction complete. File written to:', p_fpath.