Ihr Daten-Template für das Bestandsmanagement
Ihr Daten-Template für das Bestandsmanagement
- Empfohlene Attribute zur Erfassung
- Schlüsselaktivitäten zur Verfolgung für die Prozesserkennung
- Extraktionsleitfaden speziell für SAP S/4HANA
Bestandsverwaltungsattribute
| Name | Beschreibung | ||
|---|---|---|---|
| Bestandscharge/Los InventoryBatchLot | Der eindeutige Identifikator für eine spezifische Menge eines Produkts, der als `Case`-`ID` zur Verfolgung seines Lebenszyklus dient. | ||
| Beschreibung Die Bestandschargen- oder Losnummer ist der primäre In der Bedeutung Dies ist der Kernidentifikator, der alle verwandten Bestands- Datenquelle Dies ist typischerweise die Chargennummer, die in SAP-Tabellen wie MCHA (Chargenstammsatz) oder MCH1 (Chargen) im Feld CHARG zu finden ist. Beispiele B001-A452023L202405-XYZ789456123BATCH-05-24 | |||
| Ereigniszeit EventTime | Das genaue Datum und die Uhrzeit, zu der die Bestandsaktivität im System erfasst wurde. | ||
| Beschreibung Event Time ist der Zeitstempel, der genau aufzeichnet, wann eine Aktivität stattgefunden hat. Dieser Datenpunkt ist unerlässlich, um Events chronologisch zu ordnen und den Prozessfluss für jede Bestandscharge zu rekonstruieren. Er dient als Grundlage für alle zeitbasierten Process Mining-Analysen. Die Genauigkeit der Event Time ist entscheidend für die Berechnung von Schlüssel-Performance-Indikatoren wie Zykluszeiten, Vorlaufzeiten und Dauern. Sie ermöglicht die Analyse der Prozessleistung über verschiedene Zeiträume hinweg, hilft zu erkennen, wann Engpässe auftreten, und liefert die faktische Grundlage für das Verständnis von Prozessverzögerungen, wie der Zeit, die eine Charge in der Qualitätsprüfung verbringt, bevor sie freigegeben wird. Bedeutung Dieser Datenquelle Dies ist typischerweise eine Kombination aus dem Buchungsdatum (MKPF-BUDAT) und der Eingabezeit (MKPF-CPUTM) aus der Materialbelegkopf-Tabelle MKPF. Beispiele 2023-10-26T09:00:00Z2023-11-15T14:35:10Z2024-01-05T23:15:00Z | |||
| Aktivität ActivityName | Der Name des Geschäfts-`Events`, das zu einem bestimmten Zeitpunkt im Bestandsverwaltungsprozess aufgetreten ist. | ||
| Beschreibung Das Die Analyse von Aktivitäten ist die Grundlage des Bedeutung Es definiert die Schritte im Prozess und ermöglicht so die Visualisierung und Analyse des Bestandslebenszyklus. Datenquelle Dies ist ein abgeleitetes Beispiele `Wareneingang` gebuchtEinlagerungs-Umlagerung gebuchtWarenausgang für Lieferung gebuchtBestand verschrottet | |||
| `Materialnummer` MaterialNumber | Der eindeutige Identifikator für das verwaltete Produkt oder Material. | ||
| Beschreibung Die Materialnummer, oft als SKU (Stock Keeping Unit) bezeichnet, ist der eindeutige Code, der einem spezifischen Produkt zugewiesen wird. Es ist ein fundamentales Stammdaten-Element in der Bestandsverwaltung, das zur Verfolgung von Mengen, Werten und Warenbewegungen verwendet wird. Im Bedeutung Es ermöglicht die Segmentierung der Analyse nach Produkt und deckt Muster und Probleme auf, die spezifisch für bestimmte Artikel sind. Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld MATNR. Stammdaten befinden sich in Tabelle MARA. Beispiele RM-1001FG-2050-B100-400-A | |||
| Benutzername UserName | Die Benutzer-`ID` der Person, die die Transaktion in SAP ausgeführt hat. | ||
| Beschreibung Dieses Die Analyse nach Benutzer ist wesentlich für das Verständnis von Performance, Bedeutung Es schafft Verantwortlichkeit und hilft, benutzerspezifisches Verhalten, Schulungsbedarf oder Datenquelle Gefunden in der Materialbelegkopftabelle MKPF, Feld USNAM (Benutzername). Beispiele JSMITHMBROWNWAREHOUSE_OPS | |||
| Bewegungsgrundcode MovementReasonCode | Ein Code, der den Grund für eine Bestandsbewegung angibt. | ||
| Beschreibung Der Bewegungsgrundcode liefert zusätzlichen Kontext dafür, warum eine Warenbewegung durchgeführt wurde. Er wird oft verwendet, um ungeplante Bewegungen zu erklären, wie Bestandsanpassungen, Retouren oder Verschrottung. Dieses Bedeutung Es erklärt das 'Warum' hinter ungeplanten Bestandsbewegungen und ermöglicht eine gezielte Ursachenanalyse. Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld GRUND (Grund für Bewegung). Beispiele 00010005102 | |||
| Bewegungstyp MovementType | Ein dreistelliger Schlüssel in SAP, der steuert, wie eine Warenbewegung gebucht wird. | ||
| Beschreibung Die Bewegungsart ist ein entscheidender Steuerungsschlüssel in der SAP Bestandsverwaltung, der die Merkmale einer Materialbewegung bestimmt. Sie legt fest, welche Konten aktualisiert werden, wie das Bildlayout für die Transaktion erscheint und welche Mengen- oder Wertfelder aktualisiert werden. Zum Beispiel steht '101' für den Wareneingang, '311' für eine Umbuchung und '551' für die Verschrottung. Dieses Bedeutung Es bietet eine präzise, technische Klassifizierung jedes Bestands-Events, was für die Ableitung von Aktivitäten und für detaillierte Analysen entscheidend ist. Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld BWART (Bewegungsart). Beispiele 101311261551601 | |||
| Lagerort StorageLocation | Ein spezifischer Lagerort innerhalb eines Werks, an dem Bestand physisch gelagert wird. | ||
| Beschreibung Ein Lagerort ist eine Organisationseinheit, die die Differenzierung von Materialbeständen innerhalb eines Werks ermöglicht. Ein Werk könnte beispielsweise separate Lagerorte für Rohmaterialien, Fertigwaren und Qualitätsprüfbestand haben. Dieses Attribut bietet einen detaillierteren Standortbezug als das Werk. Es wird in der Analyse verwendet, um Bewegungen zwischen verschiedenen Bestandsbereichen zu verstehen, wie zum Beispiel die Durchlaufzeit für Umlagerungen vom Wareneingangsbereich zum Hauptlager. Die Analyse der Lagerauslastung und Bewegungshäufigkeit nach Lagerort hilft, das Lagerlayout und die interne Logistik zu optimieren. Bedeutung Es bietet eine granulare Sicht auf den Lagerort innerhalb eines Werks und hilft, interne Bewegungen und die Lagereffizienz zu analysieren. Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld LGORT (Lagerort). Beispiele 0001RM01FG01QI01 | |||
| Menge Quantity | Die Menge des Materials, die an der Bestandsbewegung beteiligt ist. | ||
| Beschreibung Dieses Attribut gibt die Materialmenge an, die im Rahmen einer Aktivität bewegt, empfangen, ausgegeben oder angepasst wurde. Die Erfassung erfolgt dabei in der Basismengeneinheit des Materials. Die Analyse dieser Mengen ist essenziell, um Umfang und Auswirkungen von Bestandsprozessen zu verstehen. Sie erlaubt die Erstellung von Dashboards, die das bewegte Warenvolumen visualisieren – etwa den „Warenausgangs-Durchsatz nach SKU“. Zudem lassen sich so KPIs wie die „Ausschussquote“ berechnen. Dies verleiht der Prozessanalyse eine quantitative Tiefe, die über die reine Betrachtung von Event-Zahlen weit hinausgeht. Bedeutung Es quantifiziert das Materialvolumen in jeder Aktivität und ermöglicht die Analyse von Durchsatz, Verschrottungsvolumen und Anpassungseinfluss. Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld MENGE (Menge). Beispiele 10012.55000-10 | |||
| Werk Plant | Die Organisationseinheit, die eine Einrichtung repräsentiert, in der sich der Bestand befindet, wie z.B. eine Fabrik oder ein Distributionszentrum. | ||
| Beschreibung Ein Werk ist eine zentrale Organisationseinheit in SAP, die eine Produktionsstätte, einen zentralen Lagerort oder einen Unternehmenshauptsitz darstellen kann. Alle Bestände sind physisch oder logisch einem Werk zugeordnet. Die Analyse nach Werk ist grundlegend, um die Prozessleistung über verschiedene physische Standorte hinweg zu vergleichen. Sie hilft, Fragen zu beantworten wie: 'Welches Werk hat die längste Einlagerungszykluszeit?' oder 'Ist die Bestandsdifferenzrate in Werk A höher als in Werk B?'. Diese geografische oder organisatorische Segmentierung ist entscheidend, um standortspezifische Probleme zu identifizieren und Best Practices im gesamten Unternehmen zu teilen. Bedeutung Es ermöglicht den Vergleich von Bestandsprozessen und -leistungen über verschiedene Unternehmensstandorte hinweg. Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld WERKS (Werk). Beispiele 10001710DE01US01 | |||
| Ablaufdatum ExpirationDate | Das Datum, an dem die Materialcharge abläuft und nicht mehr verwendbar ist. | ||
| Beschreibung Das Haltbarkeitsdatum (SLED) ist ein kritisches Stammdaten-Element für verderbliche oder zeitkritische Güter. Es wird auf Chargenebene verwaltet und bestimmt, wann ein Produkt nicht mehr verkauft oder konsumiert werden kann. Dieses Bedeutung Es ermöglicht die Analyse von veraltetem und abgelaufenem Bestand und hilft, Abfall und finanzielle Verluste zu minimieren. Datenquelle Gefunden in der Chargenstammtabelle MCH1 oder MCHA, Feld VFDAT (Mindesthaltbarkeitsdatum). Beispiele 2024-12-312025-06-302024-09-01 | |||
| Auftragsabwicklungs-`Zykluszeit` OrderFulfillmentCycleTime | Die End-to-End-Dauer vom Beginn der Kommissionierung bis zur Warenausgabe für die Lieferung. | ||
| Beschreibung Dies ist eine berechnete Dieses Bedeutung Es misst die Geschwindigkeit und Effizienz des Lagerabflussprozesses, was ein Schlüsselfaktor für die Kundenzufriedenheit ist. Datenquelle Dies ist ein berechnetes Beispiele 7200144003600 | |||
| Bestandstyp StockType | Gibt den Status des Bestands an, z.B. freier Verwendungsbestand, in Qualitätsprüfung oder gesperrt. | ||
| Beschreibung Der Bestandstyp kategorisiert den Bestand nach seiner Verwendbarkeit. Die Haupttypen sind freiverwendbarer Bestand (frei verfügbar), Qualitätsprüfbestand (wartet auf Qualitätsprüfungen) und Sperrbestand (nicht zur Verwendung verfügbar). Warenbewegungen beinhalten oft eine Änderung des Bestandstyps. Die Verfolgung von Änderungen des Bestandstyps ist grundlegend für das Verständnis des Bestandsverfügbarkeitsprozesses. Sie unterstützt direkt Aktivitäten wie 'Bestand in Qualitätsprüfung gebucht' und 'Bestandsstatus auf gesperrt geändert'. Die Analyse der Verweildauer in jedem Bestandstyp, insbesondere in der 'Qualitätsprüfung', ist entscheidend, um Verzögerungen zu identifizieren, die die Verfügbarkeit von Waren für Verkauf oder Produktion beeinträchtigen. Bedeutung Es verfolgt den Verwendbarkeitsstatus des Bestands, was entscheidend für die Analyse von Verzögerungen bei der Qualitätsprüfung und der Bestandsverfügbarkeit ist. Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld INSMK (Bestandsart). Beispiele Frei verwendbarer BestandQualitätsprüfungSperrbestand | |||
| Lagerplatz StorageBin | Die granularste Lagereinheit in einem Lager, wo Materialien physisch lokalisiert sind. | ||
| Beschreibung Ein Lagerplatz (Storage Bin) stellt eine spezifische Koordinate in einem Lager dar, wie zum Beispiel einen Regalplatz. Dieser Detailgrad wird typischerweise verwendet, wenn SAP Warehouse Management (WM) oder Extended Warehouse Management (EWM) implementiert ist. Für das Dashboard 'Lagerplatzauslastung' ist dieses Attribut entscheidend. Es ermöglicht die Analyse, wie effektiv der Lagerplatz genutzt wird, identifiziert potenzielle Engpassstellen und kann ineffiziente Einlagerungs- oder Kommissionierwege aufzeigen. Die Analyse von Bewegungen zwischen Lagerplätzen hilft, das Lagerlayout zu optimieren und die Fahrzeit für die Bediener zu reduzieren. Bedeutung Es liefert die granularsten Standortdaten und ermöglicht die Analyse der Lagerauslastung und der operativen Effizienz. Datenquelle Bei Verwendung von WM ist dies in Transportauftragstabellen wie LTAK/LTAP zu finden. Für Bestandsbelege könnte es in MSEG-LGPBE sein. Konsultieren Sie die SAP S/4HANA-Dokumentation. Beispiele A-01-01-AB-05-10-CRCV-AREA-01 | |||
| Letzte Datenaktualisierung LastDataUpdate | Der Zeitstempel, der angibt, wann die Daten für diesen Datensatz zuletzt aus dem Quellsystem aktualisiert wurden. | ||
| Beschreibung Dieses In jeder Analyse ist die Kenntnis der Aktualität der Bedeutung Es informiert Benutzer über die Aktualität der Daten und stellt sicher, dass Analysen auf aktuellen Informationen basieren. Datenquelle Dieser Beispiele 2024-05-21T08:00:00Z2024-05-20T08:00:00Z | |||
| Maßeinheit UnitOfMeasure | Die Einheit, in der die Menge des Materials gemessen wird (z.B. Stück, Kilogramm). | ||
| Beschreibung Die Maßeinheit gibt die Einheit für das Obwohl oft als einfacher Deskriptor verwendet, ist dieses Bedeutung Es liefert wesentlichen Kontext zum Datenquelle Gefunden in der Materialbelegpositionstabelle MSEG, Feld MEINS (Basismengeneinheit). Beispiele PCKGEAM | |||
| Materialbelegnummer MaterialDocumentNumber | Die eindeutige Nummer, die den Materialbeleg identifiziert, der die Warenbewegung aufzeichnet. | ||
| Beschreibung Wird eine Warenbewegung in SAP gebucht, erstellt das System einen Materialbeleg als Nachweis der Bewegung. Dieses Attribut ist der eindeutige Bezeichner für diesen Beleg. Ein einzelner Materialbeleg kann mehrere Positionen oder Aktivitäten enthalten. Im Process Mining ist die Materialbelegnummer ein zentraler Transaktionsidentifikator, der verwendet werden kann, um zusammengehörende, gleichzeitig gebuchte Ereignisse zu gruppieren. Sie ist auch für Audits unerlässlich und um von der Prozessanalyse ins Quellsystem zu gehen, um spezifische Transaktionen zu untersuchen. Bedeutung Es dient als Transaktionsschlüssel für die Prüfung und ermöglicht die Gruppierung von Aktivitäten, die zusammen ausgeführt wurden. Datenquelle Gefunden in den Tabellen MKPF (Kopf) und MSEG (Position), Feld MBLNR (Materialbelegnummer). Beispiele 490000123450000056784900002345 | |||
| Qualitätsprüfungs-`Zykluszeit` QualityInspectionCycleTime | Die Dauer, die eine Charge in der Qualitätsprüfung verbringt, bevor sie freigegeben wird. | ||
| Beschreibung Diese berechnete Dieses Bedeutung Es quantifiziert Verzögerungen, die durch die Qualitätskontrolle verursacht werden, und hebt Möglichkeiten hervor, die Bestandsverfügbarkeit und Prozessgeschwindigkeit zu erhöhen. Datenquelle Dies ist ein berechnetes Feld, abgeleitet durch die Ermittlung der Zeitdifferenz zwischen den Beispiele 2880086400172800 | |||
| Quellsystem SourceSystem | Identifiziert das Quellsystem, aus dem die Daten extrahiert wurden. | ||
| Beschreibung Dieses Obwohl es in einer Einzelsystemanalyse statisch erscheinen mag, wird es bei der Zusammenführung von Bedeutung Es liefert Kontext über den Ursprung der Daten, was für Datenquelle Dies ist typischerweise ein fest codierter Wert, der während des Datentransformationsprozesses festgelegt wird, um die spezifische SAP S/4HANA-Instanz zu identifizieren. Beispiele S4H_PROD_100SAP_S4_FINANCES4HANA_GLOBAL | |||
Bestandsverwaltungsaktivitäten
| Aktivität | Beschreibung | ||
|---|---|---|---|
| `Wareneingang` gebucht | Kennzeichnet den ersten Eingang einer Bestandscharge ins Lager, typischerweise von einem Lieferanten oder aus der Produktion. Dieses `Event` wird in SAP S/4HANA explizit erfasst, da bei Wareneingang ein Materialbeleg erstellt wird. | ||
| Bedeutung Dies ist das primäre Start- Datenquelle In der MATDOC-Tabelle erfasst. Identifiziert durch spezifische Bewegungsarten (BWART), wie 101 für Bestellwareneingänge oder 103 für WE in Sperrbestand. Erfassen Erfasst aus Materialbelegen in MATDOC mit entsprechenden Wareneingangsbewegungsarten. Ereignistyp explicit | |||
| Bestand aus Qualitätsprüfung freigegeben | Zeigt an, dass eine Charge die Qualitätsprüfung bestanden hat und nun zur Verwendung oder Einlagerung verfügbar ist. Dies wird als explizite Umbuchung vom Qualitätsbestand zu einer anderen Bestandsart, wie z.B. freiem Verwendungsbestand, erfasst. | ||
| Bedeutung Dieser Meilenstein markiert den Abschluss des Qualitätsprozesses und stellt den Bestand zur Verfügung. Verzögerungen hier können erhebliche nachgelagerte Probleme in Produktion oder Abwicklung verursachen. Datenquelle In der MATDOC-Tabelle als Umbuchung erfasst. Typischerweise durch Bewegungsart (BWART) 321 identifiziert, die Bestand von 'Qualitätsprüfung' in 'frei verwendbar' verschiebt. Erfassen Erfasst aus Materialbelegen in MATDOC mit Bewegungsart 321. Ereignistyp explicit | |||
| Bestand verschrottet | Kennzeichnet die endgültige Entsorgung einer Bestandscharge, die dauerhaft aus den Bestandsaufzeichnungen entfernt wird. Dies geschieht typischerweise bei abgelaufenem, beschädigtem oder veraltetem Bestand. | ||
| Bedeutung Dies ist ein End- Datenquelle In der MATDOC-Tabelle erfasst. Identifiziert durch Bewegungsarten (BWART) für Verschrottung, wie 551 (von freiverwendbar), 553 (von QI) oder 555 (von gesperrt). Erfassen Erfasst aus Materialbelegen in MATDOC mit Verschrottungsbewegungsarten (z.B. 551). Ereignistyp explicit | |||
| Bestandsanpassung gebucht | Erfasst eine Änderung der Bestandsmenge, die sich aus einer physischen Inventur oder anderen Differenzen ergibt. Dieses `Event` passt den Buchbestand explizit an die physische Zählung an. | ||
| Bedeutung Diese Anpassungen sind entscheidend für die Aufrechterhaltung der Bestandsgenauigkeit. Eine hohe Häufigkeit von Anpassungen weist auf zugrunde liegende Probleme bei der Lagerhaltung, Sicherheit oder Datenquelle In der MATDOC-Tabelle erfasst. Identifiziert durch physische Inventur-Bewegungsarten (BWART), wie 701 (Bestandszugang) oder 702 (Bestandsabgang). Erfassen Erfasst aus Materialbelegen in MATDOC mit Bewegungsarten für physische Inventuranpassungen (z.B. 701, 702). Ereignistyp explicit | |||
| Einlagerungs-Umlagerung gebucht | Stellt die physische Bewegung der Charge von einem Wareneingangs- oder Bereitstellungsbereich zu ihrem endgültigen Lagerort oder Lagerplatz dar. Dies wird als Materialbeleg für eine Umbuchung in SAP erfasst. | ||
| Bedeutung Schließt den Wareneingangsprozess ab. Die für diese Aktivität benötigte Zeit, bekannt als Einlagerungszeit, ist ein kritischer KPI für die Lagereffizienz. Datenquelle In der MATDOC-Tabelle als Umbuchung erfasst, oft zwischen Lagerorten (z.B. Bewegungsart 311). Die spezifische Bewegung kann je nach Lagerstruktur variieren. Erfassen Identifiziert durch Umbuchungsbelege in MATDOC, die Bestand von einem Zwischen-/Wareneingangslagerort zu einem endgültigen Lagerort bewegen. Ereignistyp explicit | |||
| Warenausgang für Lieferung gebucht | Erfasst den letzten Schritt des Outbound-Prozesses, bei dem das Eigentum an der Charge auf einen Kunden oder Spediteur übertragen wird. Dies ist eine explizite Transaktion, die den Bestand reduziert und in der Buchhaltung verbucht wird. | ||
| Bedeutung Dies ist ein wichtiges Abschluss- Datenquelle In der MATDOC-Tabelle erfasst. Identifiziert durch die Bewegungsart (BWART) für den Warenausgang zu einer Kundenauftragslieferung, typischerweise 601. Erfassen Erfasst aus Materialbelegen in MATDOC mit Bewegungsart 601. Ereignistyp explicit | |||
| Warenausgang für Produktion gebucht | Stellt den Verbrauch einer Bestandscharge durch einen Produktions- oder Prozessauftrag dar. Diese Transaktion reduziert den Bestand und ordnet die Materialkosten dem Fertigungsauftrag zu. | ||
| Bedeutung Dies ist ein primäres Verbrauchs- Datenquelle In der MATDOC-Tabelle erfasst. Identifiziert durch Bewegungsarten (BWART) für Warenausgänge an einen Auftrag, wie 261. Erfassen Erfasst aus Materialbelegen in MATDOC mit Bewegungsart 261. Ereignistyp explicit | |||
| Bestand in Qualitätsprüfung gebucht | Stellt die Bewegung einer erhaltenen Charge in einen Qualitätsprüfungsstatus dar, wodurch sie bis zur Freigabe nicht verfügbar ist. Dies ist eine explizite Transaktion in SAP, die den Bestandstyp der Charge ändert. | ||
| Bedeutung Diese Datenquelle In der MATDOC-Tabelle erfasst. Dies kann eine Wareneingangsbewegung (z.B. 101) mit dem Bestandstyp (INSMK) 'Q' (Qualitätsprüfung) oder eine Umbuchung (z.B. 322) sein. Erfassen Identifiziert durch Materialbelege in MATDOC, die den Bestand in die Bestandsart 'Qualitätsprüfung' überführen. Ereignistyp explicit | |||
| Bestandsstatus auf freiverwendbar geändert | Repräsentiert eine Statusänderung der Charge, die sie aus einer Sperre oder Qualitätsprüfung freigibt und für die Verwendung verfügbar macht. Dies wird als explizite Umbuchung erfasst. | ||
| Bedeutung Diese Datenquelle In der MATDOC-Tabelle als Umbuchung erfasst. Bewegungsart (BWART) 344 verschiebt Bestand von 'gesperrt' in 'frei verwendbar'. Erfassen Identifiziert durch Materialbelege in MATDOC mit Bewegungsart 344. Ereignistyp explicit | |||
| Bestandsstatus auf gesperrt geändert | Repräsentiert eine Statusänderung der Charge, die sie für die Ausgabe nicht verfügbar macht, oft aufgrund von Beschädigung, Sperranforderungen oder anderen Gründen. Dies ist eine explizite Umbuchung in SAP. | ||
| Bedeutung Hebt Unterbrechungen in der Bestandsverfügbarkeit hervor. Eine hohe Häufigkeit von Sperrungs-Events kann auf Probleme bei der Handhabung, Lagerbedingungen oder Lieferantenqualität hinweisen. Datenquelle In der MATDOC-Tabelle als Umbuchung erfasst. Verwendet üblicherweise die Bewegungsart (BWART) 344, um Bestand von 'gesperrt' zu 'frei verfügbar' zu verschieben, und 343, um von 'frei verfügbar' zu 'gesperrt' zu verschieben. Diese Aktivität ist für 343. Erfassen Identifiziert durch Materialbelege in MATDOC mit Bewegungsart 343. Ereignistyp explicit | |||
| Chargenstatus geändert | Spiegelt eine Änderung im Chargenstammsatz wider, wie die Statusänderung von 'frei verwendbar' zu 'eingeschränkt'. Dies ist keine Materialbewegung, sondern eine protokollierte Stammdatenänderung. | ||
| Bedeutung Änderungen im Chargenstatus wirken sich direkt auf deren Verwendbarkeit im Vertrieb oder in der Produktion aus. Die Analyse dieser Änderungen kann Probleme mit ablaufendem Bestand oder der Qualitätskontrolle aufdecken, die keine physische Bewegung involvieren. Datenquelle Abgeleitet aus Änderungslogs für die Chargenstammtabellen (MCH1, MCHA). Die Tabellen CDHDR und CDPOS verfolgen Änderungen am Chargenstatusfeld (MCH1-ZUSTD). Erfassen Abgeleitet aus Änderungsbelegen in CDHDR/CDPOS für das Statusfeld im Chargenstammsatz (MCH1-ZUSTD). Ereignistyp inferred | |||
| Interne Umlagerung gebucht | Erfasst die Bewegung einer Bestandscharge zwischen verschiedenen Lagerorten oder Lagerplätzen innerhalb desselben Werks. Dies ist eine explizite Transaktion, die einen Materialbeleg erzeugt. | ||
| Bedeutung Die Verfolgung interner Umlagerungen hilft, die operative Effizienz des Lagers zu analysieren, unnötige Bewegungen zu identifizieren und die Durchlaufzeit für die Bestandsauffüllung zwischen Standorten zu messen. Datenquelle In der MATDOC-Tabelle erfasst. Üblicherweise durch Bewegungsart (BWART) 311 für Umlagerungen von Lagerort zu Lagerort identifiziert. Erfassen Erfasst aus Materialbelegen in MATDOC mit Bewegungsarten für interne Umlagerungen (z.B. 311). Ereignistyp explicit | |||
| Kommissionierung initiiert | Kennzeichnet den Beginn des Auftragsabwicklungsprozesses, bei dem ein Lagerauftrag zur Kommissionierung einer Charge aus ihrem Lagerplatz erstellt wird. Dies wird oft bei der Erstellung eines Transportauftrags oder Lagerauftrags erfasst. | ||
| Bedeutung Diese Datenquelle Dies ist typischerweise nicht in MATDOC enthalten. In Systemen mit Warehouse Management (WM/EWM) wird dies aus dem Erstellungs- Erfassen Abgeleitet aus dem Erstellungsdatensatz eines Transportauftrags (in WM) oder einer Lageraufgabe (in EWM), verknüpft mit der Materialcharge. Ereignistyp inferred | |||
| Verkaufsretoure erhalten | Erfasst die Rückgabe einer zuvor ausgegebenen Charge von einem Kunden zurück ins Lager. Dies ist eine explizite Transaktion, die den Bestand erhöht. | ||
| Bedeutung Die Verfolgung von Retouren ist entscheidend, um Produktqualitätsprobleme und Kundenunzufriedenheit zu verstehen. Auch der Prozess zur Bearbeitung und Entsorgung von Retouren kann eine Ineffizienzquelle darstellen. Datenquelle In der MATDOC-Tabelle erfasst. Identifiziert durch Bewegungsarten (BWART) für Verkaufsretouren, wie 651 (zu freiverwendbar) oder 653 (zu Qualitätsprüfung). Erfassen Erfasst aus Materialbelegen in MATDOC mit Bewegungsarten für Verkaufsretouren (z.B. 651, 653). Ereignistyp explicit | |||
Extraktionsleitfäden
Schritte
- Systemzugang herstellen: Stellen Sie sicher, dass Sie einen Benutzer mit den erforderlichen Berechtigungen haben, um Core Data Services (CDS)-Views im SAP S/4HANA-System abzufragen. Dies erfordert typischerweise vom Systemadministrator gewährten Zugriff.
- SQL-Client auswählen: Wählen Sie ein SQL-Client-Tool aus, das sich mit der SAP HANA-Datenbank verbinden kann. Gängige Optionen sind SAP HANA Studio, SAP HANA Database Explorer oder Drittanbieter-Tools wie DBeaver.
- Datenbankverbindung konfigurieren: Erstellen Sie mit Ihrem SQL-Client eine neue Datenbankverbindung. Sie benötigen den HANA-Datenbank-Hostnamen, die Portnummer (typischerweise 3
15) und Ihre Datenbank-Benutzerdaten. - SQL-Abfrage vorbereiten: Kopieren Sie die vollständige SQL-Abfrage aus dem Abschnitt 'Abfrage' dieses Dokuments in den Editor Ihres SQL-Clients.
- Abfrageparameter festlegen: Suchen Sie die Platzhalterwerte innerhalb der Abfrage. Sie müssen
I_MaterialDocumentItem.PostingDate BETWEEN 'JJJJMMTT' AND 'JJJJMMTT'durch Ihren gewünschten Datumsbereich ersetzen, zum BeispielBETWEEN '20230101' AND '20230630'. Aktualisieren Sie außerdem alle unternehmens- oder werkspezifischen Filter wieMaterialDocumentItem.Plant IN ('Werk1', 'Werk2'), um sie an Ihre Organisationsstruktur anzupassen. - Abfrage ausführen: Führen Sie die modifizierte SQL-Abfrage gegen die S/4HANA-Datenbank aus. Die Ausführungszeit variiert je nach Datumsbereich und dem Volumen der Bestandsdaten in Ihrem System.
- Daten überprüfen: Sobald die Abfrage abgeschlossen ist, überprüfen Sie die Ergebnisse in Ihrem SQL-Client, um sicherzustellen, dass sie korrekt und vollständig sind. Überprüfen Sie das Vorhandensein verschiedener Aktivitäten und die Belegung der Schlüsselattribute.
- Event Log exportieren: Exportieren Sie das gesamte Ergebnisset aus Ihrem SQL-Client in eine CSV-Datei. Stellen Sie sicher, dass die Exporteinstellungen die UTF-8-Kodierung verwenden, um Zeichenprobleme zu vermeiden.
- Für den Upload vorbereiten: Benennen Sie die Spalten in der CSV-Datei genau wie in der Abfrage aliasiert, zum Beispiel
InventoryBatchLot,ActivityName,EventTimeund so weiter. Diese Datei ist nun bereit für den Upload in ein Process Mining Tool.
Konfiguration
- Berechtigungen: Der Benutzer, der die Abfrage ausführt, benötigt
SELECT-Berechtigungen für die folgenden CDS-Views:I_MaterialDocumentItem,I_BatchChangeDocumentundI_WarehouseTask. Der Zugriff auf das zugrunde liegende Datenbankschema, in dem sich diese Views befinden, ist ebenfalls erforderlich. - Datumsbereichsfilterung: Es ist unerlässlich, einen Datumsbereichsfilter auf die Felder
PostingDate,ChangeDocumentCreationDateoderWarehouseTaskCreationDateanzuwenden. Ein typischer Bereich für die Analyse beträgt 3 bis 12 Monate. Das Abfragen mehrerer Jahre kann erhebliche Leistungsprobleme verursachen. - Organisatorische Filter: Für eine bessere Leistung und gezieltere Analyse fügen Sie
WHERE-Klauseln hinzu, um nachPlantoderCompanyCodezu filtern. Dies reduziert das Datenvolumen und konzentriert die Extraktion auf relevante Geschäftsbereiche. - Datenvolumen: Beachten Sie, dass Bestandsführungssysteme ein hohes Datenvolumen generieren. Ein großer Datumsbereich kann zu Millionen von Zeilen führen, was sich potenziell sowohl auf das Quellsystem während der Extraktion als auch auf die Leistung Ihres Client-Tools auswirken kann.
- Extended Warehouse Management (EWM): Die Aktivität 'Kommissionierung initiiert' basiert auf dem
I_WarehouseTaskCDS-View, der nur gefüllt wird, wenn Sie SAP Extended Warehouse Management verwenden. Wenn Ihr Unternehmen das ältere Warehouse Management (WM)-Modul oder nur Inventory Management (IM) verwendet, wird diese spezifische Aktivität nicht extrahiert.
a Beispielabfrage 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 Schritte
- Systemzugang herstellen: Stellen Sie sicher, dass Sie einen Benutzer mit den erforderlichen Berechtigungen haben, um Core Data Services (CDS)-Views im SAP S/4HANA-System abzufragen. Dies erfordert typischerweise vom Systemadministrator gewährten Zugriff.
- SQL-Client auswählen: Wählen Sie ein SQL-Client-Tool aus, das sich mit der SAP HANA-Datenbank verbinden kann. Gängige Optionen sind SAP HANA Studio, SAP HANA Database Explorer oder Drittanbieter-Tools wie DBeaver.
- Datenbankverbindung konfigurieren: Erstellen Sie mit Ihrem SQL-Client eine neue Datenbankverbindung. Sie benötigen den HANA-Datenbank-Hostnamen, die Portnummer (typischerweise 3
15) und Ihre Datenbank-Benutzerdaten. - SQL-Abfrage vorbereiten: Kopieren Sie die vollständige SQL-Abfrage aus dem Abschnitt 'Abfrage' dieses Dokuments in den Editor Ihres SQL-Clients.
- Abfrageparameter festlegen: Suchen Sie die Platzhalterwerte innerhalb der Abfrage. Sie müssen
I_MaterialDocumentItem.PostingDate BETWEEN 'JJJJMMTT' AND 'JJJJMMTT'durch Ihren gewünschten Datumsbereich ersetzen, zum BeispielBETWEEN '20230101' AND '20230630'. Aktualisieren Sie außerdem alle unternehmens- oder werkspezifischen Filter wieMaterialDocumentItem.Plant IN ('Werk1', 'Werk2'), um sie an Ihre Organisationsstruktur anzupassen. - Abfrage ausführen: Führen Sie die modifizierte SQL-Abfrage gegen die S/4HANA-Datenbank aus. Die Ausführungszeit variiert je nach Datumsbereich und dem Volumen der Bestandsdaten in Ihrem System.
- Daten überprüfen: Sobald die Abfrage abgeschlossen ist, überprüfen Sie die Ergebnisse in Ihrem SQL-Client, um sicherzustellen, dass sie korrekt und vollständig sind. Überprüfen Sie das Vorhandensein verschiedener Aktivitäten und die Belegung der Schlüsselattribute.
- Event Log exportieren: Exportieren Sie das gesamte Ergebnisset aus Ihrem SQL-Client in eine CSV-Datei. Stellen Sie sicher, dass die Exporteinstellungen die UTF-8-Kodierung verwenden, um Zeichenprobleme zu vermeiden.
- Für den Upload vorbereiten: Benennen Sie die Spalten in der CSV-Datei genau wie in der Abfrage aliasiert, zum Beispiel
InventoryBatchLot,ActivityName,EventTimeund so weiter. Diese Datei ist nun bereit für den Upload in ein Process Mining Tool.
Konfiguration
- Berechtigungen: Der Benutzer, der die Abfrage ausführt, benötigt
SELECT-Berechtigungen für die folgenden CDS-Views:I_MaterialDocumentItem,I_BatchChangeDocumentundI_WarehouseTask. Der Zugriff auf das zugrunde liegende Datenbankschema, in dem sich diese Views befinden, ist ebenfalls erforderlich. - Datumsbereichsfilterung: Es ist unerlässlich, einen Datumsbereichsfilter auf die Felder
PostingDate,ChangeDocumentCreationDateoderWarehouseTaskCreationDateanzuwenden. Ein typischer Bereich für die Analyse beträgt 3 bis 12 Monate. Das Abfragen mehrerer Jahre kann erhebliche Leistungsprobleme verursachen. - Organisatorische Filter: Für eine bessere Leistung und gezieltere Analyse fügen Sie
WHERE-Klauseln hinzu, um nachPlantoderCompanyCodezu filtern. Dies reduziert das Datenvolumen und konzentriert die Extraktion auf relevante Geschäftsbereiche. - Datenvolumen: Beachten Sie, dass Bestandsführungssysteme ein hohes Datenvolumen generieren. Ein großer Datumsbereich kann zu Millionen von Zeilen führen, was sich potenziell sowohl auf das Quellsystem während der Extraktion als auch auf die Leistung Ihres Client-Tools auswirken kann.
- Extended Warehouse Management (EWM): Die Aktivität 'Kommissionierung initiiert' basiert auf dem
I_WarehouseTaskCDS-View, der nur gefüllt wird, wenn Sie SAP Extended Warehouse Management verwenden. Wenn Ihr Unternehmen das ältere Warehouse Management (WM)-Modul oder nur Inventory Management (IM) verwendet, wird diese spezifische Aktivität nicht extrahiert.
a Beispielabfrage 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 Schritte
- ABAP-Editor aufrufen: Melden Sie sich an Ihrem SAP S/4HANA-System an. Öffnen Sie den ABAP-Editor mit dem Transaktionscode
SE38. - Neues Programm erstellen: Geben Sie einen Namen für das neue Programm im Feld 'Programm' ein, zum Beispiel
Z_PM_INVENTORY_EXTRACT, und klicken Sie auf die Schaltfläche 'Anlegen'. Geben Sie einen aussagekräftigen Titel ein, setzen Sie den 'Typ' auf 'Ausführbares Programm' und speichern Sie es in einem Paket. - Programmparameter definieren: Im Programmeditor definieren Sie den Selektionsbildschirm, der als Benutzeroberfläche für die Extraktion dient. Dies ermöglicht Benutzern, Parameter wie den Datumsbereich und das Werk für die Datenextraktion anzugeben.
- Extraktionslogik implementieren: Kopieren Sie den vollständigen ABAP-Code aus dem Abschnitt 'Query' und fügen Sie ihn in den ABAP-Editor ein. Dieser Code ist darauf ausgelegt, Daten für alle 14 erforderlichen Bestandsaktivitäten aus verschiedenen SAP-Tabellen auszuwählen.
- Die Kernlogik verstehen: Das Programm wählt Daten für jede einzelne Bestandsaktivität aus ihren Quelltabellen aus, wie z.B.
MKPFundMSEGfür Materialbewegungen oderCDHDRundCDPOSfür Stammdatenänderungen. Jede Auswahl wird dann mithilfe vonUNION ALLin einer einzigen internen Tabelle kombiniert, die das Event Log darstellt. - Dateiausgabe konfigurieren: Der letzte Teil des Codes schreibt die konsolidierten Daten aus der internen Tabelle in eine Datei. Es verwendet die Anweisung
OPEN DATASET, um eine Datei auf dem SAP-Applikationsserver zu erstellen. Sie müssen einen gültigen Serverpfad angeben, auf dem der SAP-Systembenutzer Schreibberechtigungen besitzt. - Programm ausführen: Speichern und aktivieren Sie das ABAP-Programm (Strg+F3). Führen Sie es durch Drücken von F8 aus. Geben Sie auf dem Selektionsbildschirm den gewünschten Datumsbereich und alle anderen relevanten Filter, wie Werk oder Buchungskreis, ein.
- Als Hintergrundjob ausführen: Bei großen Datenvolumen ist es entscheidend, das Programm als Hintergrundjob auszuführen, um Session-Timeouts zu vermeiden. Vom Ausführungsbildschirm (F8) aus gehen Sie zum Menü
Programm -> Im Hintergrund ausführen. Planen Sie den Job so, dass er außerhalb der Spitzenzeiten läuft. - Ausgabedatei abrufen: Nachdem der Job abgeschlossen ist, suchen Sie die Ausgabedatei auf dem SAP-Applikationsserver. Verwenden Sie den Transaktionscode
AL11, um die Serververzeichnisse zu durchsuchen und Ihre Datei zu finden. Verwenden Sie die TransaktionCG3Y, um die Datei vom Applikationsserver auf Ihren lokalen Computer herunterzuladen. - Für den Upload vorbereiten: Öffnen Sie die heruntergeladene Datei in einem Texteditor oder einer Tabellenkalkulationssoftware. Stellen Sie sicher, dass sie als CSV-Datei mit einer Kopfzeile formatiert ist, wobei ein Komma als Trennzeichen und doppelte Anführungszeichen als Textbegrenzer verwendet werden. Überprüfen Sie, ob die Spaltennamen den Anforderungen entsprechen, bevor Sie sie in das Process Mining Tool hochladen.
Konfiguration
- Buchungsdatumsbereich: Dies ist der wichtigste Parameter. Wir empfehlen, Daten in überschaubaren Batches, wie z.B. 3-6 Monate auf einmal, zu extrahieren, um eine gute Leistung sicherzustellen und System-Timeouts zu vermeiden.
- Werksfilter: Es ist dringend empfohlen, nach einem oder mehreren spezifischen Werken (
WERKS) zu filtern. Das gleichzeitige Ausführen der Extraktion für alle Werke kann extrem ressourcenintensiv sein. - Buchungskreisfilter: Sie können einen optionalen Filter für den Buchungskreis (
BUKRS) hinzufügen, um den Datenumfang weiter einzuschränken, wenn Ihr Unternehmen mit mehreren Buchungskreisen innerhalb desselben Systems arbeitet. - Dateipfad des Applikationsservers: Das ABAP-Programm erfordert einen vordefinierten, gültigen Verzeichnispfad auf dem SAP-Applikationsserver. Stellen Sie sicher, dass der SAP-Systembenutzer (
SY-UNAME) die erforderlichen Betriebssystemberechtigungen zum Schreiben von Dateien in dieses Verzeichnis besitzt. - Berechtigungen: Der Benutzer, der diese Extraktion ausführt, benötigt Berechtigungen für Transaktion
SE38(um das Programm zu erstellen und auszuführen), Anzeigeberechtigung für TabellenMKPF,MSEG,MCH1,CDHDR,CDPOS,LTAKundLTAPsowie die Möglichkeit, Hintergrundjobs (SM36/SM37) einzuplanen.
a Beispielabfrage 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.