Ihr Produktionsplanungsdaten-Template
Ihr Produktionsplanungsdaten-Template
- Empfohlene Attribute zur Erfassung
- Wichtige Aktivitäten zur Verfolgung
- Praktische Extraktionsanleitung
Produktionsplanungsattribute
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivitätsname ActivityName | Der Name des Geschäfts- oder Systemereignisses, das zu einem bestimmten Zeitpunkt für einen Fertigungsauftrag aufgetreten ist. | ||
| Beschreibung Der Aktivitätenname beschreibt einen spezifischen Schritt oder eine Statusänderung innerhalb des Produktionsplanungsprozesses. Diese Ereignisse werden aus Änderungsbelegen, Statusaktualisierungen und Transaktionsaufzeichnungen in SAP ECC PP extrahiert und stellen wichtige Meilensteine dar, wie z.B. 'Fertigungsauftrag angelegt', 'Materialverfügbarkeit geprüft' oder 'Wareneingang gebucht'. Dieses Attribut bildet das Rückgrat der Prozesslandkarte und ermöglicht es Analysten, die Abfolge von Ereignissen zu visualisieren, Prozessvarianten zu entdecken und Engpässe oder Nacharbeitszyklen zu identifizieren. Die Klarheit und Granularität der Aktivitätsnamen sind entscheidend für den Aufbau eines genauen und aufschlussreichen Prozessmodells, das die Realität der Abläufe widerspiegelt. Bedeutung Es definiert die Schritte in der Prozesslandkarte und ermöglicht so die Visualisierung, Analyse und das Verständnis des Produktions-Workflows. Datenquelle Generiert aus verschiedenen Quellen, einschließlich Statusänderungen in den Tabellen JEST/JSTO, Transaktionsprotokollen und Änderungsbelegen in CDHDR/CDPOS. Beispiele Fertigungsauftrag freigegebenWarenausgang gebuchtEndrückmeldung aufgezeichnetAuftrag technisch abgeschlossen | |||
| Ereigniszeit EventTime | Der `präzise Timestamp`, der anzeigt, wann die `Aktivität` stattfand. | ||
| Beschreibung Die Event Time erfasst Datum und Uhrzeit, zu der eine spezifische Aktivität ausgeführt oder ein Status im System protokolliert wurde. Dieser Timestamp ist grundlegend für alle zeitbasierten Prozessanalysen, einschließlich der Berechnung von Cycle Times, Wartezeiten und der gesamten Prozessdauer. Genaue Timestamps sind entscheidend für die korrekte Sequenzierung von Events und für die Performance-Analyse. Sie ermöglichen Analysten, die Dauer zwischen Aktivitäten zu messen, Verzögerungen zu identifizieren und die Leistung anhand von Zeitplänen oder Service Level Agreements zu bewerten. Im Kontext der Produktionsplanung hilft dies zu verstehen, wie lange jede Planungs- und Ausführungsphase dauert. Bedeutung Dieses Attribut liefert die chronologische Abfolge von Ereignissen, die wesentlich ist für die Berechnung von Dauern, die Analyse der Leistung und die Identifizierung von Engpässen. Datenquelle Abgeleitet aus verschiedenen Datums- und Zeitfeldern, die mit Transaktionen und Statusänderungen verknüpft sind, wie z.B. BUDAT (Buchungsdatum) aus Materialbelegen oder Änderungs-Timestamps aus CDHDR. Beispiele 2023-04-15T10:05:30Z2023-04-15T14:22:00Z2023-04-18T08:59:11Z2023-04-20T16:45:00Z | |||
| Fertigungsauftrag ProductionOrder | Der eindeutige Identifikator für einen Fertigungsauftrag, der als primärer Fallidentifikator für den Produktionsplanungs- und Ausführungsprozess dient. | ||
| Beschreibung Die Fertigungsauftragsnummer ist ein eindeutiger alphanumerischer Schlüssel, der jedem Fertigungsauftrag in SAP ECC PP zugewiesen wird. Sie fungiert als zentrales Objekt, das alle zusammenhängenden Aktivitäten, von der Erstellung und Planung bis zur Ausführung und endgültigen Abrechnung, miteinander verbindet. Im Process Mining ist dieses Attribut unerlässlich, um alle Ereignisse, die zu einem einzigen Produktionslauf gehören, zu gruppieren. Dies ermöglicht eine End-to-End-Analyse des gesamten Lebenszyklus eines Fertigungsauftrags, einschließlich der Verfolgung des Fortschritts, der Messung von Zykluszeiten und der Identifizierung von Abweichungen vom Standardprozess. Die Analyse von Prozessen nach Fertigungsauftrag bietet eine klare Sicht darauf, wie einzelne Fertigungsanforderungen erfüllt werden. Bedeutung Dies ist der Kernidentifikator, der alle zugehörigen Prozessereignisse verbindet und die Rekonstruktion und Analyse jeder Produktionsreise von Anfang bis Ende ermöglicht. Datenquelle Dieses Attribut ist in der SAP-Tabelle AUFK, Feld AUFNR, zu finden. Beispiele 1000345100034610003471000348 | |||
| Letzte Datenaktualisierung LastDataUpdate | Der Timestamp, der angibt, wann die Daten für dieses Ereignis zuletzt aktualisiert oder extrahiert wurden. | ||
| Beschreibung Dieses Attribut erfasst Datum und Uhrzeit, zu der die Daten aus dem Quellsystem in das Process Mining Tool geladen wurden. Es stellt kein Geschäftsereignis dar, sondern ist ein technischer Timestamp für Datenmanagementzwecke. Sein primärer Zweck ist es, die Aktualität der Daten sicherzustellen und Administratoren sowie Analysten zu helfen, die Aktualität der von ihnen analysierten Daten zu verstehen. Es ist entscheidend für die Validierung, dass die Prozessanalyse auf aktuellen Informationen basiert, insbesondere bei der Überwachung laufender Operationen. Bedeutung Es bestätigt die Aktualität der Daten und stellt sicher, dass Analysen auf den neuesten verfügbaren Informationen basieren. Datenquelle Dieser Wert wird typischerweise vom Datenextraktions-, Transformations- und Ladetool (ETL-Tool) oder -Skript während des Datenaufnahmevorgangs generiert und gestempelt. Beispiele 2023-10-27T02:00:00Z2023-10-28T02:00:00Z2023-10-29T02:00:00Z | |||
| Quellsystem SourceSystem | Identifiziert das spezifische System, aus dem die Daten extrahiert wurden. | ||
| Beschreibung Dieses Attribut gibt das Ursprungssystem des Datensatzes an, z.B. den spezifischen SAP ECC Instanznamen oder die ID. In Organisationen mit mehreren ERP-Systemen oder einer Mischung aus Legacy- und modernen Plattformen ist dieses Feld entscheidend für die Datenherkunft und den Kontext. Für die Analyse ermöglicht es das Filtern von Prozessen basierend auf ihrem Ursprungssystem. Dies kann nützlich sein, um die Prozessleistung über verschiedene Systeme hinweg zu vergleichen oder Daten bei Multi-System-Datenkonsolidierungsprojekten zu isolieren. Bedeutung Es liefert entscheidenden Kontext über die Datenherkunft, insbesondere in Umgebungen mit mehreren SAP-Instanzen oder integrierten Systemen. Datenquelle Typischerweise während des Datenextraktionsprozesses hinzugefügt, oft abgeleitet von der SAP-System-ID (SY-SYSID). Beispiele ECC_PROD_100S4H_FIN_200ECC_DE | |||
| Gelieferte Menge DeliveredQuantity | Die tatsächlich produzierte und in den Lagerbestand aufgenommene Menge des Produkts. | ||
| Beschreibung Die gelieferte Menge, auch als Goods Receipt Quantity bekannt, ist die Gesamtmenge des fertigen Produkts, die für einen bestimmten Produktionsauftrag als produziert bestätigt wurde. Dieser Wert wird aktualisiert, wenn „Goods Receipt Posted“ Events auftreten. Dieses Attribut ist das Gegenstück zu „Planned Quantity“ und unerlässlich für die Berechnung des KPIs „Planned vs. Actual Quantity Variance“. Es liefert ein definitives Maß für die Produktionsleistung, das Analysten ermöglicht, Diskrepanzen zu identifizieren, die durch Ausschuss, Minderertrag oder andere Produktionsprobleme verursacht werden können. Der Vergleich gelieferter Mengen über Werke, Produkte oder Zeiträume hinweg zeigt Bereiche mit Effizienzproblemen auf. Bedeutung Es misst die tatsächliche Leistung des Produktionsprozesses und ermöglicht einen direkten Vergleich mit geplanten Zielen, um die Performance zu bewerten. Datenquelle Gefunden in der SAP-Tabelle AFPO, Feld WEMNG (Wareneingangsmenge). Beispiele 984950751255 | |||
| Planmenge PlannedQuantity | Die Gesamtmenge des Produkts, die für den Auftrag produziert werden soll. | ||
| Beschreibung Die Planmenge stellt die im Planungsprozess definierte Zielausbringung eines Fertigungsauftrags dar. Dieser Wert dient als Basis, an der die tatsächliche Produktionsausgabe gemessen wird. Dieses Attribut ist grundlegend für KPIs im Zusammenhang mit der Produktionsleistung und Termintreue, wie z.B. die 'Plan-Ist-Mengenabweichung'. Es hilft bei der Beurteilung der Genauigkeit der Produktionsplanung und der Identifizierung systemischer Probleme im Zusammenhang mit Über- oder Unterproduktion. Die Analyse dieses Wertes ist entscheidend, um zu verstehen, wie gut die Produktionsausführung mit den ursprünglichen Plänen übereinstimmt. Bedeutung Dieses Attribut ist die Grundlage für die Messung der Produktionsausgabeabweichung und die Beurteilung der Planungsgenauigkeit. Datenquelle Dieser Wert ist in der SAP-Tabelle AFKO, Feld GAMNG (Gesamtbestellmenge) verfügbar. Beispiele 1005000751250 | |||
| Produktcode ProductCode | Der eindeutige Identifikator für das herzustellende Material oder Produkt. | ||
| Beschreibung Der Produktcode oder die Materialnummer identifiziert das Produkt, das der Fertigungsauftrag herstellen soll. Dies ist ein zentrales Stammdatenelement, das die Produktionsplanung mit der Bestandsführung, dem Vertrieb und der Kostenrechnung verbindet. Im Process Mining ist das Filtern oder Segmentieren nach Produktcode entscheidend für das Verständnis produktspezifischer Fertigungsprozesse. Es hilft, Fragen wie 'Welche Produkte haben die längsten Zykluszeiten?' oder 'Sind bestimmte Produkte anfälliger für Qualitätsprobleme oder Materialverzögerungen?' zu beantworten. Diese Analyse ist entscheidend für das Produktportfoliomanagement und die Identifizierung von Möglichkeiten zur Prozessstandardisierung oder Optimierung für spezifische Materialarten. Bedeutung Es ermöglicht eine produktspezifische Prozessanalyse, die aufzeigt, welche Materialien mit Prozessineffizienzen, Verzögerungen oder hohen Kosten verbunden sind. Datenquelle Dies ist in der SAP-Tabelle AFPO, Feld MATNR, zu finden. Beispiele FG-123RM-45AHALB-7890CHEM-22 | |||
| Produktionswerk ProductionPlant | Die Fertigungsstätte oder der Standort, an dem der Fertigungsauftrag ausgeführt wird. | ||
| Beschreibung Das Produktionswerk ist eine wichtige Organisationseinheit in SAP, die eine Fertigungsstätte darstellt. Es wird jedem Fertigungsauftrag zugeordnet und bestimmt, wo die Produktionsaktivitäten physisch stattfinden werden. Die Analyse des Prozesses nach Produktionswerk ermöglicht Leistungsvergleiche zwischen verschiedenen Standorten. Dies hilft zu identifizieren, welche Werke effizienter sind, welche mit mehr Verzögerungen oder Materialengpässen konfrontiert sind und wo Best Practices geteilt werden können. Es ist eine fundamentale Dimension für die Ursachenanalyse in Dashboards im Zusammenhang mit Durchsatz und Ressourcenauslastung. Bedeutung Es ermöglicht den Performance-Vergleich über verschiedene Fertigungsstandorte hinweg und hilft so, standortspezifische Probleme oder Best Practices zu identifizieren. Datenquelle Dieses Attribut ist in der SAP-Tabelle AUFK, Feld WERKS, gespeichert. Beispiele 100017102000DE01 | |||
| Tatsächliches Enddatum ActualEndDate | Der Timestamp der letzten Produktionsaktivität, der den tatsächlichen Abschluss des Auftrags markiert. | ||
| Beschreibung Das tatsächliche Enddatum ist der Timestamp des Ereignisses, das die Fertigstellung aller Produktionsaktivitäten für einen Auftrag kennzeichnet. Dies wird üblicherweise vom Timestamp der 'Endrückmeldung erfasst' oder dem letzten Ereignis 'Wareneingang gebucht' abgeleitet. Dieses Attribut ist entscheidend für die Messung der gesamten Produktionszykluszeit und für die Termintreueanalyse. Der Vergleich des 'Tatsächlichen Enddatums' mit dem 'Geplanten Enddatum' bestimmt, ob ein Auftrag pünktlich abgeschlossen wurde. Die Analyse der Dauer zwischen dem 'Tatsächlichen Startdatum' und dem 'Tatsächlichen Enddatum' ergibt die wahre Produktionsdurchlaufzeit. Bedeutung Es markiert den Abschluss der Produktion und ermöglicht eine genaue Messung der Liefertreue und der gesamten Ausführungszeit. Datenquelle Abgeleitet aus dem Event Log durch Ermittlung des maximalen Timestamps von Schlüssel-Abschlussaktivitäten wie „Final Confirmation Recorded“ oder „Goods Receipt Posted“. Beispiele 2023-05-14T16:00:00Z2023-06-29T11:30:00Z2023-07-05T17:00:00Z | |||
| Tatsächliches Startdatum ActualStartDate | Der Timestamp der ersten aufgezeichneten Produktionsaktivität, der den tatsächlichen Beginn der Ausführung markiert. | ||
| Beschreibung Das tatsächliche Startdatum ist der Timestamp des ersten Ereignisses, das den Beginn der physischen Produktionsarbeit kennzeichnet. Dies wird typischerweise vom ersten Produktionsrückmeldungsereignis oder dem ersten Warenausgang von Rohmaterialien für den Auftrag abgeleitet. Dieses abgeleitete Attribut ist entscheidend für die Termintreueanalyse. Es liefert den tatsächlichen Startpunkt zum Vergleich mit dem 'Geplanten Startdatum' und ermöglicht die präzise Berechnung von Startzeitabweichungen. Das Verständnis der Lücke zwischen geplantem und tatsächlichem Startdatum hilft, Verzögerungen vor der Produktion im Zusammenhang mit Materialbereitstellung, Maschineneinrichtung oder Ressourcenverfügbarkeit genau zu lokalisieren. Bedeutung Es liefert den wahren Startpunkt der Produktionsausführung und ermöglicht eine genaue Berechnung von Anlaufverzögerungen und der gesamten Produktions-Lead Time. Datenquelle Abgeleitet aus dem Event Log durch Ermittlung des minimalen Timestamps spezifischer Ausführungsaktivitäten wie „First Confirmation Recorded“ oder „Goods Issue Posted“ für jeden Produktionsauftrag. Beispiele 2023-05-11T08:30:00Z2023-06-22T14:00:00Z2023-07-02T09:15:00Z | |||
| Durchlaufzeit CycleTime | Die gesamte verstrichene Zeit von der Freigabe des Fertigungsauftrags bis zu dessen endgültiger Fertigstellung. | ||
| Beschreibung Die Zykluszeit ist ein zentraler Leistungsindikator, der die Dauer der Produktionsausführungsphase misst. Sie wird als Zeitdifferenz zwischen dem Event „Production Order Released“ und einem Abschluss-Event wie „Final Confirmation Recorded“ oder „Goods Receipt Posted“ berechnet. Diese berechnete Metrik ist grundlegend für die Bewertung der Fertigungseffizienz. Die Analyse von Zykluszeittrends und deren Vergleich über Produkte, Werke oder Zeiträume hinweg hilft, Möglichkeiten zur Reduzierung von Durchlaufzeiten, zur Verbesserung des Durchsatzes und zur Steigerung der Gesamtproduktionskapazität zu identifizieren. Sie ist eine Kernmetrik für viele der erforderlichen Dashboards und KPIs. Bedeutung Es misst direkt die Effizienz und Geschwindigkeit des Produktionsausführungsprozesses und zeigt Möglichkeiten zur Verkürzung der Durchlaufzeiten auf. Datenquelle Berechnetes Feld: Timestamp von 'Production Order Completed' minus Timestamp von 'Production Order Released'. Beispiele 3 Tage 4 Stunden10 Stunden 15 Minuten7 Tage 0 Stunden1 Tag 12 Stunden | |||
| Fertigungsauftragsstatus ProductionOrderStatus | Der aktuelle Bearbeitungsstatus des Fertigungsauftrags, z.B. angelegt, freigegeben oder technisch abgeschlossen. | ||
| Beschreibung Der Fertigungsauftragsstatus zeigt die aktuelle Phase des Auftrags in seinem Lebenszyklus an. SAP verwendet ein System von Statuscodes, um den Fortschritt des Auftrags zu steuern, z.B. CRTD (angelegt), REL (freigegeben), CNF (rückgemeldet), DLV (geliefert) und TECO (technisch abgeschlossen). Die Analyse der Verweildauer in verschiedenen Status ist ein Kernbestandteil des Process Mining für die Produktion. Sie hilft zu identifizieren, wie lange Aufträge nach der Erstellung auf die Freigabe warten oder wie lange sie sich in einem teilweise gelieferten Zustand befinden. Die Verfolgung von Statusänderungen als Aktivitäten bietet eine übergeordnete Ansicht des Prozessflusses. Bedeutung Es bietet einen Snapshot des Auftragsfortschritts und hilft, Engpässe zu identifizieren, an denen Aufträge über längere Zeiträume stecken bleiben. Datenquelle Statusinformationen werden in den Tabellen JEST und JSTO gespeichert und sind mit der Objektnr. des Auftrags (AUFK-OBJNR) verknüpft. Der Statustext befindet sich in TJ02T. Das Lesen des Status erfolgt oft über Funktionsbausteine wie STATUS_TEXT_EDIT. Beispiele CRTD (Angelegt)FREI (Freigegeben)DLV (Geliefert)TECO (Technisch abgeschlossen) | |||
| Geplantes Enddatum PlannedEndDate | Das geplante Datum, bis zu dem die Produktion für den Auftrag abgeschlossen sein soll. | ||
| Beschreibung Das geplante Enddatum ist der Soll-Fertigstellungstermin für einen Fertigungsauftrag, der während des Planungsprozesses festgelegt wird. Es definiert den erwarteten Zeitrahmen für den Abschluss aller Produktionsaktivitäten, einschließlich Endrückmeldungen und Wareneingang. Dieses Datum ist wesentlich für die Berechnung der KPI 'Termintreue-Rate'. Der Vergleich des 'Geplanten Enddatums' mit dem tatsächlichen Fertigstellungszeitpunkt (z.B. der Timestamp der Aktivität 'Wareneingang gebucht' oder 'Endrückmeldung erfasst') zeigt, ob Aufträge pünktlich abgeschlossen werden. Diese Analyse hilft bei der Bewertung der Zuverlässigkeit von Produktionsplänen und der Identifizierung der Grundursachen für verspätete Lieferungen. Bedeutung Es ist der Benchmark, anhand dessen beurteilt wird, ob Produktionsaufträge pünktlich abgeschlossen werden, was sich direkt auf die Kundenzufriedenheit und die Planungszuverlässigkeit auswirkt. Datenquelle Dies ist das Basisenddatum, zu finden in der SAP-Tabelle AFKO, Feld GLTRP. Beispiele 2023-05-152023-06-282023-07-05 | |||
| Geplantes Startdatum PlannedStartDate | Das geplante Datum, an dem die Produktion für den Auftrag beginnen soll. | ||
| Beschreibung Das geplante Startdatum ist ein wichtiger Planungsparameter, der während der Produktionsplanungs- und Terminierungsphase festgelegt wird. Es stellt das Zielstartdatum für den Beginn der Produktionsaktivitäten eines Auftrags dar. Dieses Attribut ist entscheidend für die Messung der Termintreue. Durch den Vergleich des 'Geplanten Startdatums' mit der tatsächlichen Startzeit der Produktion (z.B. dem Timestamp der Aktivität 'Erste Rückmeldung erfasst') können Organisationen Verzögerungen beim Produktionsstart identifizieren. Die Analyse der Gründe für diese Verzögerungen ist ein primärer Anwendungsfall für Process Mining in diesem Bereich. Bedeutung Es dient als Baseline für die Messung der Termintreue und die Identifizierung von Verzögerungen beim Start der Produktionsausführung. Datenquelle Dies ist das Basisstartdatum, zu finden in der SAP-Tabelle AFKO, Feld GSTRP. Beispiele 2023-05-102023-06-222023-07-01 | |||
| Materialverfügbarkeit MaterialAvailabilityStatus | Gibt an, ob alle benötigten Komponenten für den Produktionsauftrag verfügbar sind. | ||
| Beschreibung Der Materialverfügbarkeitsstatus ist ein kritischer Indikator für die Produktionsbereitschaft. Er wird durch die Systemprüfung der Verfügbarkeit aller für den Auftrag benötigten Komponentenmaterialien bestimmt. Ein Status von „Available“ bedeutet, dass die Produktion ohne materialbedingte Verzögerungen fortgesetzt werden kann, während „Shortage“ auf ein Problem hinweist. Dieses Attribut ist unerlässlich für das Dashboard „Material Shortage Impact Analysis“. Durch die Analyse der Wartezeit von Aufträgen bei Materialengpässen können Unternehmen die Auswirkungen von Supply Chain Issues auf die Produktionspläne quantifizieren. Dies hilft bei der Identifizierung unzuverlässiger Lieferanten oder problematischer Komponenten, die häufig Verzögerungen verursachen. Bedeutung Es hebt direkt Verzögerungen hervor, die durch Materialengpässe verursacht werden, welche eine häufige und bedeutende Ursache für Abweichungen im Produktionsplan sind. Datenquelle Dies ist kein einzelnes gespeichertes Feld. Es ist das Ergebnis einer Verfügbarkeitsprüfung (ATP-Prüfung). Die Ergebnisse sind oft in der Transaktion CO02 oder in der kollektiven Verfügbarkeitsprüfung COHV sichtbar. Der Status selbst (z.B. MACM - Material zugesichert) kann protokolliert werden. Konsultieren Sie die SAP ECC PP Dokumentation. Beispiele VerfügbarEngpassTeilweise verfügbarNicht geprüft | |||
| Mengenabweichung QuantityVariance | Die Differenz zwischen der geplanten Produktionsmenge und der tatsächlich gelieferten Menge. | ||
| Beschreibung Die Mengenabweichung ist eine berechnete Kennzahl, die die Abweichung der Produktionsausgabe vom ursprünglichen Plan misst. Sie wird berechnet als 'Gelieferte Menge' minus 'Planmenge'. Eine positive Abweichung deutet auf Überproduktion hin, während eine negative Abweichung auf Unterproduktion oder Ertragsverluste hindeutet. Dieses Attribut ist entscheidend für das 'Plan-Ist-Produktionsausgabe'-Dashboard und den entsprechenden KPI. Die Analyse der Abweichung hilft, Probleme im Zusammenhang mit der Produktionsleistung, Ausschussraten oder Datenerfassungsfehlern zu identifizieren. Sie bietet ein direktes Maß für die Zuverlässigkeit des Produktionsprozesses bei der Erreichung seiner Ausgabeziele. Bedeutung Es quantifiziert die Genauigkeit der Produktionsleistung im Vergleich zu den Plänen und hebt potenzielle Probleme mit Ausbeute, Ausschuss oder Prozesskontrolle hervor. Datenquelle Berechnetes Feld: 'DeliveredQuantity' - 'PlannedQuantity'. Beispiele -2-5005 | |||
| Planungsgruppe PlannerGroup | Die Gruppe der für den Auftrag zuständigen Disponenten oder Produktionsplaner. | ||
| Beschreibung Die Planergruppe ist ein Organisationselement, das eine Gruppe von Personen repräsentiert, die für die Planung und Verwaltung eines bestimmten Satzes von Materialien oder Fertigungsaufträgen verantwortlich sind. Die Zuordnung von Aufträgen zu Planergruppen hilft bei der Arbeitslastverteilung und der Festlegung klarer Verantwortlichkeiten. Im Process Mining ermöglicht dieses Attribut eine Leistungsanalyse basierend auf dem verantwortlichen Planungsteam. Es kann helfen, Fragen wie 'Welche Planergruppe erfährt die meisten Terminabweichungen?' oder 'Gibt es einen Unterschied in den Zykluszeiten für Aufträge, die von verschiedenen Gruppen verwaltet werden?' zu beantworten. Dies liefert Erkenntnisse für den Arbeitslastausgleich und die Identifizierung von Schulungsbedarfen. Bedeutung Es ermöglicht die Segmentierung der Performance-Analyse nach dem verantwortlichen Team und hilft so, Unterschiede in der Planungseffektivität und Arbeitslast zu identifizieren. Datenquelle Dies ist der Disponent, zu finden in der SAP-Tabelle AFKO, Feld DISPO. Beispiele 001002P01P02 | |||
| Produktionspriorität ProductionPriority | Eine Klassifizierung, die die Dringlichkeit oder Priorität des Produktionsauftrags angibt. | ||
| Beschreibung Die Produktionspriorität ist ein Feld, das die relative Wichtigkeit eines Fertigungsauftrags signalisiert. Dies ermöglicht Produktionsplanern und Mitarbeitern in der Fertigung, ihre Arbeit zu priorisieren und sicherzustellen, dass kritische Aufträge beschleunigt bearbeitet werden. Die Analyse dieses Attributs hilft bei der Bewertung der Wirksamkeit des Prioritätssystems. Durch den Vergleich der Zykluszeiten von Aufträgen mit hoher und niedriger Priorität kann ein Unternehmen feststellen, ob dringende Aufträge tatsächlich schneller bearbeitet werden. Ist dies nicht der Fall, kann dies auf Probleme in der Kommunikation, bei der Ressourcenzuordnung oder im gesamten Ausführungsprozess hindeuten. Bedeutung Es hilft zu beurteilen, ob das Prioritätsmanagementsystem effektiv ist und stellt sicher, dass Aufträge mit hoher Dringlichkeit schneller als Standardaufträge abgeschlossen werden. Datenquelle Dies ist oft kein Standardfeld im Fertigungsauftragskopf. Es kann ein kundenspezifisches Feld sein, das aus der Vertriebsauftragspriorität abgeleitet oder Teil eines Klassifizierungssystems ist. Konsultieren Sie die SAP ECC PP Dokumentation oder die Systemkonfiguration. Beispiele HochMittelNiedrigEilauftrag | |||
| Termintreuestatus ScheduleAdherenceStatus | Ein Kennzeichen, das angibt, ob der Produktionsauftrag bis zum geplanten Enddatum abgeschlossen wurde. | ||
| Beschreibung Der Termintreuestatus ist ein berechnetes boolesches oder kategoriales Attribut, das eine einfache, auf einen Blick erkennbare Ansicht der pünktlichen Leistung bietet. Er wird abgeleitet, indem das 'Tatsächliche Enddatum' mit dem 'Geplanten Enddatum' verglichen wird. Wenn das tatsächliche Ende am oder vor dem geplanten Ende liegt, ist der Status 'Pünktlich'; anderenfalls ist er 'Verspätet'. Dieses Attribut vereinfacht die Analyse und Visualisierung in Dashboards. Es ermöglicht einfaches Filtern und Aggregieren, um die KPI 'Termintreue-Rate' zu berechnen und die Hauptursachen für verspätete Aufträge, wie bestimmte Produkte, Werke oder Materialengpässe, zu identifizieren. Bedeutung Es vereinfacht die Performance-Analyse, indem es Aufträge als „On-Time“ oder „Late“ kategorisiert, was die Messung und Berichterstattung über die Zeitplanzuverlässigkeit erleichtert. Datenquelle Berechnetes Feld: IF('ActualEndDate' <= 'PlannedEndDate', 'On-Time', 'Late'). Beispiele FristgerechtVerspätet | |||
| Verantwortlicher Benutzer ResponsibleUser | Die Benutzer-ID der Person, die den Fertigungsauftrag angelegt oder zuletzt geändert hat. | ||
| Beschreibung Der verantwortliche Benutzer identifiziert das SAP-Benutzerkonto, das mit Schlüsselereignissen im Lebenszyklus des Fertigungsauftrags, wie z.B. Erstellung oder Freigabe, verknüpft ist. Dies bietet Verantwortlichkeit und Nachvollziehbarkeit für im System durchgeführte Aktionen. Im Process Mining wird dieses Attribut verwendet, um Prozessvariationen basierend auf dem Benutzerverhalten zu analysieren. Es kann helfen, Benutzer zu identifizieren, die möglicherweise zusätzliche Schulungen benötigen oder die nicht-standardisierte Verfahren befolgen. Es unterstützt auch die Ressourcenanalyse, indem es zeigt, wie die Arbeit auf verschiedene Benutzer verteilt ist. Bedeutung Es verknüpft Prozessaktivitäten mit spezifischen Personen, ermöglicht so eine Performance-Analyse auf Benutzerebene und fördert die Verantwortlichkeit. Datenquelle Der Benutzer, der den Auftrag angelegt hat, steht in AUFK-ERNAM. Der Benutzer, der ihn zuletzt geändert hat, steht in AUFK-AENAM. Änderungsbelege (CDHDR-USERNAME) liefern eine Historie der Benutzer für spezifische Änderungen. Beispiele JSMITHPROD_PLANNER1BATCH_USERAMILLER | |||
Produktionsplanungsaktivitäten
| Aktivität | Beschreibung | ||
|---|---|---|---|
| `Wareneingang` gebucht | Dieses Ereignis protokolliert den Eingang des fertigen Produkts aus dem Fertigungsauftrag in den Lagerbestand. Es signalisiert, dass die hergestellten Waren nun für den Versand oder die weitere Verarbeitung verfügbar sind. | ||
| Bedeutung Dies ist ein wichtiger Abschlussmeilenstein, der die Endausgabe des Produktionsprozesses darstellt. Die Zeit von der Freigabe bis zum Wareneingang ist die gesamte Produktionsdurchlaufzeit. Datenquelle Als Materialbeleg in den Tabellen MKPF/MSEG mit einer Bewegungsart, typischerweise '101', unter Bezugnahme auf den Fertigungsauftrag erfasst. Der Systemstatus 'DLV' (I0012, Geliefert) wird ebenfalls für den Auftrag gesetzt. Erfassen Erfassen Sie das Buchungsdatum aus dem Materialbeleg der Bewegungsart '101' oder den Zeitstempel der Statusänderung 'DLV'. Ereignistyp explicit | |||
| Auftrag technisch abgeschlossen | Dies ist ein administrativer Abschlussschritt, der einen Fertigungsauftrag aus logistischer Sicht finalisiert. Er verhindert weitere Materialbewegungen oder Rückmeldungen und ermöglicht die finanzielle Abrechnung. | ||
| Bedeutung Dies ist der definitive Endpunkt für den Lebenszyklus des Auftrags in der Logistik. Die Analyse dieses Ereignisses hilft, die gesamte Prozessdauer zu verstehen, einschließlich administrativer Aufgaben nach der Produktion. Datenquelle Explizit erfasst, wenn der Systemstatus 'TECO' (I0045, Technisch abgeschlossen) dem Auftrag zugewiesen wird. Die Änderung wird mit einem Zeitstempel in der Tabelle JCDS protokolliert. Erfassen Identifizieren Sie den Timestamp, wann der Status 'TECO' für den Auftrag in JCDS aktiv wird. Ereignistyp explicit | |||
| Endrückmeldung aufgezeichnet | Diese Aktivität zeigt an, dass alle Vorgänge für den Fertigungsauftrag aus Fertigungssicht abgeschlossen sind. Sie wird durch eine Endrückmeldung für den letzten Vorgang gekennzeichnet. | ||
| Bedeutung Dieser Meilenstein markiert das Ende der physischen Produktionsaktivitäten. Die Dauer von der ersten bis zur letzten Rückmeldung repräsentiert die tatsächliche Produktionsausführungszeit. Datenquelle Dies wird erfasst, wenn der Systemstatus 'CNF' (I0009, Rückgemeldet) gesetzt wird. Dies wird typischerweise durch die Endrückmeldung in Tabelle AFRU (AFRU-AUERU = 'X') ausgelöst. Die Statusänderung wird in JCDS protokolliert. Erfassen Identifizieren Sie den Timestamp, wann der Status 'CNF' gesetzt wird, oder finden Sie den letzten Rückmeldedatensatz in AFRU. Ereignistyp explicit | |||
| Erste Rückmeldung aufgezeichnet | Dieses Ereignis signalisiert den Beginn der eigentlichen Produktionsarbeit am Auftrag. Es wird erfasst, wenn die erste Zeitrückmeldung für einen Vorgang im Fertigungsauftrag in das System eingegeben wird. | ||
| Bedeutung Diese Aktivität liefert die tatsächliche Startzeit der Produktion, die wesentlich ist für die Messung der Termintreue und die Identifizierung von Verzögerungen zwischen Ressourcenzuordnung und Arbeitsbeginn. Datenquelle Dies wird durch die Ermittlung des frühesten Buchungsdatums (AFRU-BUDAT) unter allen für den Auftrag in der Tabelle AFRU erfassten Rückmeldungen abgeleitet. Der erste Eintrag markiert den Beginn der physischen Produktion. Erfassen Identifizieren Sie den ersten Rückmeldedatensatz für den Auftrag basierend auf dem Buchungsdatum in der Tabelle AFRU. Ereignistyp inferred | |||
| Fertigungsauftrag angelegt | Dieses Ereignis kennzeichnet die Erstellung eines neuen Fertigungsauftrags, typischerweise initiiert durch einen Planungslauf oder eine manuelle Erfassung. Es wird explizit erfasst, wenn ein neuer Auftragssatz im System gespeichert wird und den Status 'CRTD' (Angelegt) erhält. | ||
| Bedeutung Dies ist der Ausgangspunkt für jeden Fertigungsauftragsfall. Die Analyse der Zeit von diesem Ereignis bis zur Freigabe hilft, Verzögerungen in der Vorproduktionsplanung und der administrativen Einrichtung zu identifizieren. Datenquelle Dieses Ereignis wird vom Erstellungsdatum (AUFK-ERDAT) und der Uhrzeit (AUFK-ERZET) des Fertigungsauftrags erfasst. Der Systemstatus 'CRTD' (I0001) wird zugewiesen und in den Tabellen JEST und JCDS protokolliert, die mit der Auftrags-Objektnummer (AUFK-OBJNR) verknüpft sind. Erfassen Verfolgen Sie den Erstellungs-Timestamp und die Zuweisung des Status 'CRTD'. Ereignistyp explicit | |||
| Fertigungsauftrag freigegeben | Diese Aktivität signalisiert die offizielle Genehmigung und Freigabe des Fertigungsauftrags zur Ausführung. Nach der Freigabe werden Materialreservierungen aktiv, und Produktionsaktivitäten wie Warenausgang und Rückmeldungen können beginnen. | ||
| Bedeutung Dies ist ein kritischer Meilenstein, der die Übergabe von der Planung zur Ausführung darstellt. Die Zeit zwischen Erstellung und Freigabe ist ein Schlüsselindikator für die Planungseffizienz. Datenquelle Explizit erfasst, wenn der Systemstatus 'REL' (I0002) dem Produktionsauftrag zugewiesen wird. Die Änderung wird mit einem Zeitstempel in der Tabelle JCDS protokolliert, verknüpft mit der Objektnummer des Auftrags (AUFK-OBJNR). Erfassen Identifizieren Sie den Timestamp, wann der Status 'REL' für den Auftrag aktiv wird. Ereignistyp explicit | |||
| Auftragsabrechnung durchgeführt | Stellt die finanzielle Abrechnung des Fertigungsauftrags dar, bei der gesammelte Kosten den entsprechenden Kostenobjekten zugeordnet werden. Dies ist der letzte Schritt im Lebenszyklus des Auftrags aus Controlling-Sicht. | ||
| Bedeutung Obwohl es sich um eine Finanzaktivität handelt, können Verzögerungen bei der Abrechnung auf Probleme bei der Kostenberichterstattung oder der Genauigkeit von Auftragsdaten hinweisen. Sie kennzeichnet den wahren finanziellen Abschluss des Produktionsprozesses. Datenquelle Dies kann abgeleitet werden, wenn der Auftragssaldo null wird oder wenn dem Systemstatus 'SETC' (I0076, Abrechnungsregel angelegt) Abrechnungsläufe folgen. Die tatsächliche Abrechnung wird in Controlling-Tabellen wie COSP und COSS erfasst. Erfassen Ableitung aus Abrechnungsbelegen, die mit dem Auftrag in CO-Tabellen verknüpft sind, oder aus der Aktivierung des Status 'SETC'. Ereignistyp inferred | |||
| Auftragsdaten geändert | Dieses Ereignis erfasst wesentliche Änderungen, die an einem Fertigungsauftrag nach dessen ursprünglicher Erstellung vorgenommen wurden, z.B. Änderungen an der Planmenge, Daten oder Stückliste. Diese Änderungen werden vom System zu Revisionszwecken protokolliert. | ||
| Bedeutung Die Verfolgung dieser Änderungen hilft, Prozessinstabilität und häufige Neuplanung zu identifizieren. Eine hohe Änderungsfrequenz kann auf eine mangelhafte anfängliche Planung, Nachfrageschwankungen oder Datenungenauigkeiten hindeuten. Datenquelle Änderungen an Schlüsselfeldern in Tabellen wie AFKO (Auftragskopf) und AFPO (Auftragsposition) werden in den Änderungsbelegtabellen CDHDR (Kopf) und CDPOS (Position) protokolliert. Jede relevante Änderung kann als Aktivität extrahiert werden. Erfassen Extrahieren Sie Änderungsbelegeinträge aus den Tabellen CDHDR und CDPOS für die Objektklasse des Produktionsauftrags. Ereignistyp explicit | |||
| Auftragsstornierung festgelegt | Dieses Ereignis zeigt an, dass ein Fertigungsauftrag vor der Fertigstellung storniert wurde. Dies geschieht typischerweise durch Setzen eines spezifischen Status oder einer Löschvormerkung, wodurch eine weitere Bearbeitung verhindert wird. | ||
| Bedeutung Dies ist ein negatives Ergebnis, das wichtig zu verfolgen ist. Die Analyse stornierter Aufträge kann Probleme bei der Nachfrageprognose, Planungsgenauigkeit oder Stammdatenverwaltung aufzeigen. Datenquelle Dies kann aus der Zuweisung des Status 'DLFL' (I0076, Löschvormerkung) oder eines spezifischen Status 'Storniert', falls konfiguriert, abgeleitet werden. Die Änderung wird mit einem Timestamp in der JCDS-Tabelle protokolliert. Erfassen Identifizieren Sie den Timestamp, wann das Löschkennzeichen ('DLFL') oder ein Stornierungsstatus für den Auftrag gesetzt wird. Ereignistyp inferred | |||
| Materialverfügbarkeit geprüft | Stellt die Durchführung einer Prüfung dar, um festzustellen, ob alle erforderlichen Komponenten für den Fertigungsauftrag verfügbar sind. Dies kann eine automatische Prüfung bei Auftragserstellung oder -freigabe oder eine manuell ausgelöste Aktion sein. | ||
| Bedeutung Diese Aktivität ist entscheidend, um Verzögerungen durch Materialengpässe zu verstehen. Häufige Prüfungen oder lange Zeitspannen bis zur Materialverfügbarkeit können auf Probleme in der Lieferkette oder im Bestandsmanagement hindeuten. Datenquelle Das System setzt einen Status wie 'MACM' (Material zugesichert) oder 'MSPT' (Materialengpass). Die Ausführung kann aus dem Timestamp dieser Statusänderung in den Tabellen JEST/JCDS abgeleitet werden. Die Ergebnisse sind im Auftragskopf sichtbar. Erfassen Ableitung aus dem Timestamp von Statusänderungen bezüglich der Materialverfügbarkeit, wie z.B. 'MACM' oder 'MSPT'. Ereignistyp inferred | |||
| Warenausgang gebucht | Diese Aktivität stellt die Entnahme von Komponentenmaterialien aus dem Lager dar, die im Fertigungsauftrag verwendet werden sollen. Sie bestätigt, dass die notwendigen Rohmaterialien oder Halbfabrikate für die Produktion bereitgestellt wurden. | ||
| Bedeutung Dieses Ereignis markiert den Beginn des Materialverbrauchs. Verzögerungen zwischen Auftragsfreigabe und Warenausgang können auf Probleme in der Lagerlogistik, Materialbereitstellung oder Bestandsgenauigkeit hinweisen. Datenquelle Als Materialbelege in den Tabellen MKPF (Kopf) und MSEG (Position) mit einer Bewegungsart, typischerweise '261', unter Bezugnahme auf die Fertigungsauftragsnummer (MSEG-AUFNR) erfasst. Erfassen Erfassen Sie das Buchungsdatum (MKPF-BUDAT) von Materialbelegen mit Bewegungsart '261', die mit dem Auftrag verknüpft sind. Ereignistyp explicit | |||
| Zwischenrückmeldung aufgezeichnet | Stellt eine Fortschrittsaktualisierung eines Fertigungsauftrags durch eine Teilrückmeldung eines Vorgangs dar. Dies ist bei langfristigen Aufträgen üblich, bei denen die Verfolgung des Fortschritts vor der endgültigen Fertigstellung erforderlich ist. | ||
| Bedeutung Die Analyse von Zwischenmeldungen hilft, den Fortschritt langer Produktionszyklen zu überwachen und Engpässe innerhalb des Produktionsprozesses selbst zu identifizieren, nicht nur am Anfang oder Ende. Datenquelle Erfasst aus Rückmeldedatensätzen in der Tabelle AFRU, die nicht als Endrückmeldung gekennzeichnet sind. Jeder Eintrag hat ein Buchungsdatum (AFRU-BUDAT) und eine Uhrzeit. Erfassen Extrahieren Sie alle Rückmeldedatensätze aus AFRU, die nicht als Endrückmeldung für einen Vorgang gekennzeichnet sind. Ereignistyp explicit | |||
Extraktionsleitfäden
Schritte
- InfoSet in SAP Query anlegen: Verwenden Sie den Transaktionscode
SQ02. Legen Sie ein neues InfoSet an, zum BeispielZPP_EVENTLOG. Wählen Sie die Datenquellenoption „Tabellen-Join über Basistabelle“. Verwenden SieAUFK(Auftragsstammdaten) als anfängliche Basistabelle. - Erforderliche Tabellen verknüpfen: Fügen Sie die folgenden Tabellen zum InfoSet-Join hinzu. Das System kann Joins vorschlagen, aber überprüfen Sie, ob diese korrekt sind:
AUFKzuAFKO(Auftragskopfdaten PP-Aufträge):AUFK-AUFNR = AFKO-AUFNRAUFKzuJEST(Einzelobjektstatus):AUFK-OBJNR = JEST-OBJNRJESTzuJCDS(Änderungsbelege für System-/Benutzerstatus):JEST-OBJNR = JCDS-OBJNRUNDJEST-STAT = JCDS-STAT. Hinweis: Dieser Join dient zum Lesen des Statusänderungsverlaufs.AUFKzuAFRU(Auftragsrückmeldungen):AUFK-AUFNR = AFRU-AUFNRAUFKzuMSEG(Belegsegment: Material):AUFK-AUFNR = MSEG-AUFNRMSEGzuMKPF(Kopf: Materialbeleg):MSEG-MBLNR = MKPF-MBLNRUNDMSEG-MJAHR = MKPF-MJAHR
- Feldgruppen definieren: Ziehen Sie die benötigten Felder aus den Quelltabellen in die Feldgruppen. Stellen Sie sicher, dass alle für die endgültige Query benötigten Felder, wie
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE,MKPF-BUDAT, enthalten sind. - Benutzerdefinierte Felder und Code hinzufügen: Navigieren Sie im InfoSet zur Registerkarte „Zusätze“. Sie müssen benutzerdefinierte Felder für
ActivityName,EventTime,SourceSystemundLastDataUpdatedefinieren und ABAP-Code schreiben, um diese basierend auf der im Query-Abschnitt definierten Logik zu füllen. Die Logik umfasst das Iterieren durch Statusänderungen, Rückmeldungen und Materialbelege, um einen eindeutigen Datensatz für jedes Business Event zu generieren. Dies ist der komplexeste Schritt, da Sie tabellarische Daten innerhalb der Code-Abschnitte des InfoSets in ein Event Log-Format transformieren. - InfoSet generieren und speichern: Sobald alle Joins, Felder und der benutzerdefinierte Code vorhanden sind, speichern und generieren Sie das InfoSet.
- SAP Query anlegen: Verwenden Sie den Transaktionscode
SQ01. Legen Sie eine neue Query an, zum BeispielZPP_EVENTS, basierend auf dem in den vorherigen Schritten erstellten InfoSet. - Query-Layout gestalten: Definieren Sie im Query Designer die Felder des Selektionsbildschirms. Gute Selektionen umfassen Produktionsauftrag
AUFNR, WerkWERKS, AuftragsartAUARTund einen Datumsbereich für die AuftragserstellungAUFK-ERDAT. - Ausgabeliste definieren: Wählen Sie die Felder aus, die in der Berichtsausgabe angezeigt werden sollen. Diese Liste sollte exakt den für das Event Log erforderlichen Spalten entsprechen, einschließlich der benutzerdefinierten Felder wie
ActivityNameundEventTime. - Query ausführen: Führen Sie die Query mit den gewünschten Selektionskriterien aus, zum Beispiel für die Produktionsaufträge der letzten 3 bis 6 Monate.
- Daten exportieren: Sobald die Query die Ergebnisse anzeigt, exportieren Sie die Liste. Das gängigste und zuverlässigste Format hierfür ist „Spreadsheet“ oder „Lokale Datei“ mit einem tabulatorgetrennten oder CSV-Format.
- Für ProcessMind formatieren: Öffnen Sie die exportierte Datei in einem Tabellenkalkulationsprogramm. Überprüfen Sie, ob die Spaltenüberschriften den erforderlichen Attributen (
ProductionOrder,ActivityName,EventTimeusw.) entsprechen und stellen Sie sicher, dass das Datums- und Zeitformat fürEventTimekonsistent ist und dem erforderlichen Standard (z.B. YYYY-MM-DD HH:MI:SS) entspricht. Speichern Sie die Datei als CSV für den Upload.
Konfiguration
- InfoSet Joins: Der Kern dieser Methode basiert auf einem komplexen InfoSet, das Kopf-, Status-, Bestätigungs- und Materialbewegungs-Tabellen miteinander verbindet. Die primären Joins sind
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRUundAUFK->MSEG->MKPF. Falsche oder ineffiziente Joins können zu schlechter Performance oder ungenauen Daten führen. - Selection Criteria: Es ist entscheidend, einen handhabbaren Selektionsbereich zu definieren, um System-Performance-Probleme zu vermeiden. Wichtige Selektionsfelder auf dem Startbildschirm der Query sollten Folgendes umfassen:
- Fertigungswerk (
AUFK-WERKS) - Produktionsauftragsart (
AUFK-AUART) - Auftragserstellungsdatum (
AUFK-ERDAT): Wir empfehlen, Daten für einen rollierenden Zeitraum von 3-6 Monaten zu extrahieren, um die Dataset-Größe überschaubar zu halten.
- Fertigungswerk (
- System Statuses: Die Logik zur Identifizierung von Events wie „Angelegt“, „Freigegeben“, „Technisch abgeschlossen“ und „Storniert“ hängt von spezifischen Systemstatuscodes ab (z.B. I0001, I0002, I0045, I0047). Diese sind im Allgemeinen in allen SAP-Systemen Standard, sollten aber verifiziert werden.
- Movement Types: Events wie „Warenausgang“ und „Wareneingang“ werden durch ihre spezifischen Bewegungsarten (
MSEG-BWART) identifiziert, typischerweise „261“ bzw. „101“. Bestätigen Sie, dass diese Werte mit der Konfiguration Ihres Unternehmens übereinstimmen. - Authorizations: Der Benutzer, der die Query ausführt, benötigt die Berechtigung, auf die Transaktionen
SQ01,SQ02undSQ03zuzugreifen, sowie Anzeigezugriff auf alle zugrunde liegenden Tabellen (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF).
a Beispielabfrage abap
/*
The following ABAP-style SQL script represents the complete logic required to build the event log.
This logic must be implemented within the code sections of the SQ02 InfoSet, as a direct SQL query of this nature is not run.
Each SELECT block corresponds to a specific business activity.
*/
-- 1. Production Order Created
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Created' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0001' AND JCDS.INACT = ''
UNION ALL
-- 2. Material Availability Checked (using 'Material shortage' status as an indicator)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Material Availability Checked' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0033' AND JCDS.INACT = '' -- I0033 is MSPT (Material Shortage)
UNION ALL
-- 3. Production Order Released
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Released' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0002' AND JCDS.INACT = ''
UNION ALL
-- 4. Order Data Changed (using last change date as a proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Data Changed' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime, -- Time is not available in AUFK
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.AEDAT IS NOT NULL AND AUFK.AEDAT > AUFK.ERDAT
UNION ALL
-- 5. Goods Issue Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Issue Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
CONF.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
CONF.EventTime,
CONF.ProductionPlant,
CONF.ProductCode,
CONF.PlannedQuantity,
CONF.DeliveredQuantity,
CONF.ActualStartDate,
CONF.ActualEndDate,
CONF.SourceSystem,
CONF.LastDataUpdate
FROM (
SELECT
AUFK.AUFNR AS ProductionOrder,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
ROW_NUMBER() OVER(PARTITION BY AUFK.AUFNR ORDER BY AFRU.BUDAT, AFRU.ERFZEIT) as rn
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
) AS CONF
WHERE CONF.rn = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'T' -- T = Partial Confirmation
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'E' -- E = Final Confirmation
UNION ALL
-- 9. Goods Receipt Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Technically Completed' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0045' AND JCDS.INACT = ''
UNION ALL
-- 11. Order Settlement Ran (using 'Closed' status as proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Settlement Ran' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0046' AND JCDS.INACT = '' -- I0046 is CLSD (Closed)
UNION ALL
-- 12. Order Cancellation Set
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0047' AND JCDS.INACT = '' -- I0047 is CNF (Confirmed), use I0076 for Canceled. Recorrecting. Use Deletion Flag instead.
-- Corrected Logic for Cancellation:
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.LOEKZ = 'X'; Schritte
- Datenbankzugriff einrichten: Beschaffen Sie schreibgeschützte Zugangsdaten für die zugrunde liegende SAP ECC-Datenbank. Sie benötigen die Serveradresse, den Port, den Datenbanknamen, den Benutzernamen und das Passwort. Dieser Zugriff ist unerlässlich und muss mit Ihren SAP Basis- und Datenbankadministrationsteams abgestimmt werden.
- SAP-Schema identifizieren: Ermitteln Sie das korrekte Datenbankschema, in dem die SAP-Tabellen gespeichert sind. Dies ist oft
SAPSR3oder ein ähnlicher systemspezifischer Name. Sie müssen den Platzhalter[Ihr SAP Schema]in der Query durch diesen Wert ersetzen. - SQL-Abfrage vorbereiten: Kopieren Sie die vollständige SQL-Abfrage aus dem Abschnitt
query. Diese Query ist darauf ausgelegt, alle angegebenen Aktivitäten in einem einzigen Event Log-Format zu extrahieren. - Query-Parameter konfigurieren: Vor der Ausführung müssen Sie die Platzhalter innerhalb der Query anpassen. Legen Sie das
[Start Date]und[End Date]fest, um das Zeitfenster für die Extraktion zu definieren. Es wird außerdem dringend empfohlen, nach Fertigungswerk (WERKS) oder Auftragsart (AUART) zu filtern, um das Datenvolumen zu begrenzen. - Verbinden und Ausführen: Verwenden Sie einen Standard-SQL-Client, wie DBeaver, SAP HANA Studio oder ein benutzerdefiniertes Skript (Python, Java), um sich mit den Zugangsdaten aus Schritt 1 mit der SAP-Datenbank zu verbinden.
- Query ausführen: Fügen Sie die konfigurierte SQL-Abfrage in Ihren Client ein und führen Sie diese aus. Je nach Datumsbereich und Systemgröße kann dies mehrere Minuten dauern.
- Vorläufige Ergebnisse überprüfen: Sobald die Query abgeschlossen ist, überprüfen Sie kurz die ersten hundert Zeilen, um sicherzustellen, dass Spalten wie
ProductionOrder,ActivityNameundEventTimekorrekt gefüllt sind und Sinn ergeben. - Nach CSV exportieren: Exportieren Sie das gesamte Ergebnis Ihrer SQL-Client-Sitzung in eine CSV-Datei. Stellen Sie sicher, dass die Datei die UTF-8-Kodierung verwendet, um Zeichenprobleme zu vermeiden.
- CSV für den Upload finalisieren: Öffnen Sie die CSV-Datei und überprüfen Sie, ob die Spaltenüberschriften den erforderlichen Attributen (
ProductionOrder,ActivityName,EventTime,SourceSystem,LastDataUpdateusw.) entsprechen. Stellen Sie sicher, dass die SpalteEventTimekonsistent formatiert ist, z.B.YYYY-MM-DD HH:MI:SS. - In ProcessMind hochladen: Die vorbereitete CSV-Datei ist nun bereit für den Upload auf die ProcessMind-Plattform zur Analyse.
Konfiguration
- Database Schema: Sie müssen das SAP Schema angeben, in dem sich Ihre Produktionsplanungstabellen befinden. Ersetzen Sie den Platzhalter
[Ihr SAP Schema]in der Query durch den korrekten Namen für Ihre Umgebung, z.B.SAPSR3. - Date Range: Das Filtern nach einem spezifischen Datumsbereich ist entscheidend für die Performance. Die Query filtert nach dem Auftragserstellungsdatum (
AUFK.ERDAT). Wir empfehlen, mit einem aktuellen Zeitraum von 3 bis 6 Monaten zu beginnen, um ein überschaubares Datenvolumen zu gewährleisten. - Production Order Type: Um die Analyse zu fokussieren, filtern Sie die Query nach dem Feld für die Produktionsauftragsart (
AUFK.AUART). Dies ermöglicht Ihnen, spezifische Typen wie Standard-Produktionsaufträge, Prozessaufträge oder Nacharbeitsaufträge ein- oder auszuschließen. - Production Plant: Es ist dringend ratsam, nach einem oder mehreren Fertigungswerken (
AFKO.WERKS) zu filtern. Das Extrahieren von Daten für alle Werke auf einmal kann sehr ressourcenintensiv sein. - Database Access: Diese Methode erfordert einen Datenbankbenutzer mit mindestens Leseberechtigungen für die folgenden Tabellen:
AUFK,AFKO,JCDS,JEST,AFRU,MSEG,MKPF. Direkter Datenbankzugriff ist nicht für alle SAP-Benutzer Standard und erfordert eine spezielle Berechtigung.
a Beispielabfrage sql
WITH Orders AS (
SELECT
aufk.AUFNR AS ProductionOrder,
afko.WERKS AS ProductionPlant,
afko.PLNBEZ AS ProductCode,
afko.GAMNG AS PlannedQuantity,
afko.GMEIN AS PlannedUnit,
afko.GEMNG AS DeliveredQuantity,
CASE
WHEN afko.GSTRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GSTRI || afko.GSUZI, 'YYYYMMDDHH24MISS')
END AS ActualStartDate,
CASE
WHEN afko.GETRI = '00000000' THEN NULL
ELSE TO_TIMESTAMP(afko.GETRI || afko.GEUZI, 'YYYYMMDDHH24MISS')
END AS ActualEndDate,
aufk.OBJNR,
aufk.ERDAT AS CreationDate,
aufk.ERFAS AS CreationTime
FROM
"[Your SAP Schema]".AUFK aufk
JOIN
"[Your SAP Schema]".AFKO afko ON aufk.AUFNR = afko.AUFNR
WHERE
aufk.AUTYP = '10' -- Filter for Production Orders
AND aufk.ERDAT BETWEEN '[Start Date]' AND '[End Date]'
-- AND afko.WERKS IN ('[Your Plant]', '[Another Plant]') -- Optional: Filter by Plant
-- AND aufk.AUART IN ('[Your Order Type]') -- Optional: Filter by Order Type
),
Confirmations AS (
SELECT
o.ProductionOrder,
a.RUECK AS ConfirmationNumber,
a.RMZHL AS ConfirmationCounter,
TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
a.AUERU AS IsFinalConfirmation,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') ASC) as rn_asc,
ROW_NUMBER() OVER(PARTITION BY o.ProductionOrder ORDER BY TO_TIMESTAMP(a.BUDAT || a.UZEIT, 'YYYYMMDDHH24MISS') DESC) as rn_desc
FROM
Orders o
JOIN
"[Your SAP Schema]".AFRU a ON o.ProductionOrder = a.AUFNR
)
-- 1. Production Order Created
SELECT
o.ProductionOrder,
'Production Order Created' AS ActivityName,
TO_TIMESTAMP(o.CreationDate || o.CreationTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
UNION ALL
-- 2. Material Availability Checked (using 'Material Committed' status as proxy)
SELECT
o.ProductionOrder,
'Material Availability Checked' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0006' AND jcds.INACT != 'X'
UNION ALL
-- 3. Production Order Released
SELECT
o.ProductionOrder,
'Production Order Released' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0002' AND jcds.INACT != 'X'
UNION ALL
-- 4. Order Data Changed
SELECT
o.ProductionOrder,
'Order Data Changed' AS ActivityName,
TO_TIMESTAMP(aufk.AEDAT || aufk.AEZEIT, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".AUFK aufk ON o.ProductionOrder = aufk.AUFNR
WHERE aufk.AEDAT > o.CreationDate
UNION ALL
-- 5. Goods Issue Posted
SELECT
o.ProductionOrder,
'Goods Issue Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
c.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
c.ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.rn_asc > 1 AND c.IsFinalConfirmation IS NULL
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
c.ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
c.EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Confirmations c
JOIN Orders o ON c.ProductionOrder = o.ProductionOrder
WHERE c.IsFinalConfirmation = 'X'
UNION ALL
-- 9. Goods Receipt Posted
SELECT
o.ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
TO_TIMESTAMP(mkpf.CPUDT || mkpf.CPUTM, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".MSEG mseg ON o.ProductionOrder = mseg.AUFNR
JOIN "[Your SAP Schema]".MKPF mkpf ON mseg.MBLNR = mkpf.MBLNR AND mseg.MJAHR = mkpf.MJAHR
WHERE mseg.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
o.ProductionOrder,
'Order Technically Completed' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0045' AND jcds.INACT != 'X'
UNION ALL
-- 11. Order Settlement Ran
SELECT
o.ProductionOrder,
'Order Settlement Ran' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTIME, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0046' AND jcds.INACT != 'X'
UNION ALL
-- 12. Order Cancellation Set
SELECT
o.ProductionOrder,
'Order Cancellation Set' AS ActivityName,
TO_TIMESTAMP(jcds.UDATE || jcds.UTime, 'YYYYMMDDHH24MISS') AS EventTime,
'[Your Source System]' AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
o.ProductionPlant,
o.ProductCode,
o.PlannedQuantity,
o.DeliveredQuantity,
o.ActualStartDate,
o.ActualEndDate
FROM Orders o
JOIN "[Your SAP Schema]".JCDS jcds ON o.OBJNR = jcds.OBJNR
WHERE jcds.STAT = 'I0076' AND jcds.INACT != 'X'; Schritte
- InfoSet in SAP Query anlegen: Verwenden Sie den Transaktionscode
SQ02. Legen Sie ein neues InfoSet an, zum BeispielZPP_EVENTLOG. Wählen Sie die Datenquellenoption „Tabellen-Join über Basistabelle“. Verwenden SieAUFK(Auftragsstammdaten) als anfängliche Basistabelle. - Erforderliche Tabellen verknüpfen: Fügen Sie die folgenden Tabellen zum InfoSet-Join hinzu. Das System kann Joins vorschlagen, aber überprüfen Sie, ob diese korrekt sind:
AUFKzuAFKO(Auftragskopfdaten PP-Aufträge):AUFK-AUFNR = AFKO-AUFNRAUFKzuJEST(Einzelobjektstatus):AUFK-OBJNR = JEST-OBJNRJESTzuJCDS(Änderungsbelege für System-/Benutzerstatus):JEST-OBJNR = JCDS-OBJNRUNDJEST-STAT = JCDS-STAT. Hinweis: Dieser Join dient zum Lesen des Statusänderungsverlaufs.AUFKzuAFRU(Auftragsrückmeldungen):AUFK-AUFNR = AFRU-AUFNRAUFKzuMSEG(Belegsegment: Material):AUFK-AUFNR = MSEG-AUFNRMSEGzuMKPF(Kopf: Materialbeleg):MSEG-MBLNR = MKPF-MBLNRUNDMSEG-MJAHR = MKPF-MJAHR
- Feldgruppen definieren: Ziehen Sie die benötigten Felder aus den Quelltabellen in die Feldgruppen. Stellen Sie sicher, dass alle für die endgültige Query benötigten Felder, wie
AUFK-AUFNR,AUFK-WERKS,AFKO-GAMNG,AFKO-GASMG,JCDS-UDATE,MKPF-BUDAT, enthalten sind. - Benutzerdefinierte Felder und Code hinzufügen: Navigieren Sie im InfoSet zur Registerkarte „Zusätze“. Sie müssen benutzerdefinierte Felder für
ActivityName,EventTime,SourceSystemundLastDataUpdatedefinieren und ABAP-Code schreiben, um diese basierend auf der im Query-Abschnitt definierten Logik zu füllen. Die Logik umfasst das Iterieren durch Statusänderungen, Rückmeldungen und Materialbelege, um einen eindeutigen Datensatz für jedes Business Event zu generieren. Dies ist der komplexeste Schritt, da Sie tabellarische Daten innerhalb der Code-Abschnitte des InfoSets in ein Event Log-Format transformieren. - InfoSet generieren und speichern: Sobald alle Joins, Felder und der benutzerdefinierte Code vorhanden sind, speichern und generieren Sie das InfoSet.
- SAP Query anlegen: Verwenden Sie den Transaktionscode
SQ01. Legen Sie eine neue Query an, zum BeispielZPP_EVENTS, basierend auf dem in den vorherigen Schritten erstellten InfoSet. - Query-Layout gestalten: Definieren Sie im Query Designer die Felder des Selektionsbildschirms. Gute Selektionen umfassen Produktionsauftrag
AUFNR, WerkWERKS, AuftragsartAUARTund einen Datumsbereich für die AuftragserstellungAUFK-ERDAT. - Ausgabeliste definieren: Wählen Sie die Felder aus, die in der Berichtsausgabe angezeigt werden sollen. Diese Liste sollte exakt den für das Event Log erforderlichen Spalten entsprechen, einschließlich der benutzerdefinierten Felder wie
ActivityNameundEventTime. - Query ausführen: Führen Sie die Query mit den gewünschten Selektionskriterien aus, zum Beispiel für die Produktionsaufträge der letzten 3 bis 6 Monate.
- Daten exportieren: Sobald die Query die Ergebnisse anzeigt, exportieren Sie die Liste. Das gängigste und zuverlässigste Format hierfür ist „Spreadsheet“ oder „Lokale Datei“ mit einem tabulatorgetrennten oder CSV-Format.
- Für ProcessMind formatieren: Öffnen Sie die exportierte Datei in einem Tabellenkalkulationsprogramm. Überprüfen Sie, ob die Spaltenüberschriften den erforderlichen Attributen (
ProductionOrder,ActivityName,EventTimeusw.) entsprechen und stellen Sie sicher, dass das Datums- und Zeitformat fürEventTimekonsistent ist und dem erforderlichen Standard (z.B. YYYY-MM-DD HH:MI:SS) entspricht. Speichern Sie die Datei als CSV für den Upload.
Konfiguration
- InfoSet Joins: Der Kern dieser Methode basiert auf einem komplexen InfoSet, das Kopf-, Status-, Bestätigungs- und Materialbewegungs-Tabellen miteinander verbindet. Die primären Joins sind
AUFK->AFKO,AUFK->JEST->JCDS,AUFK->AFRUundAUFK->MSEG->MKPF. Falsche oder ineffiziente Joins können zu schlechter Performance oder ungenauen Daten führen. - Selection Criteria: Es ist entscheidend, einen handhabbaren Selektionsbereich zu definieren, um System-Performance-Probleme zu vermeiden. Wichtige Selektionsfelder auf dem Startbildschirm der Query sollten Folgendes umfassen:
- Fertigungswerk (
AUFK-WERKS) - Produktionsauftragsart (
AUFK-AUART) - Auftragserstellungsdatum (
AUFK-ERDAT): Wir empfehlen, Daten für einen rollierenden Zeitraum von 3-6 Monaten zu extrahieren, um die Dataset-Größe überschaubar zu halten.
- Fertigungswerk (
- System Statuses: Die Logik zur Identifizierung von Events wie „Angelegt“, „Freigegeben“, „Technisch abgeschlossen“ und „Storniert“ hängt von spezifischen Systemstatuscodes ab (z.B. I0001, I0002, I0045, I0047). Diese sind im Allgemeinen in allen SAP-Systemen Standard, sollten aber verifiziert werden.
- Movement Types: Events wie „Warenausgang“ und „Wareneingang“ werden durch ihre spezifischen Bewegungsarten (
MSEG-BWART) identifiziert, typischerweise „261“ bzw. „101“. Bestätigen Sie, dass diese Werte mit der Konfiguration Ihres Unternehmens übereinstimmen. - Authorizations: Der Benutzer, der die Query ausführt, benötigt die Berechtigung, auf die Transaktionen
SQ01,SQ02undSQ03zuzugreifen, sowie Anzeigezugriff auf alle zugrunde liegenden Tabellen (AUFK, AFKO, JEST, JCDS, AFRU, MSEG, MKPF).
a Beispielabfrage abap
/*
The following ABAP-style SQL script represents the complete logic required to build the event log.
This logic must be implemented within the code sections of the SQ02 InfoSet, as a direct SQL query of this nature is not run.
Each SELECT block corresponds to a specific business activity.
*/
-- 1. Production Order Created
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Created' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0001' AND JCDS.INACT = ''
UNION ALL
-- 2. Material Availability Checked (using 'Material shortage' status as an indicator)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Material Availability Checked' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0033' AND JCDS.INACT = '' -- I0033 is MSPT (Material Shortage)
UNION ALL
-- 3. Production Order Released
SELECT
AUFK.AUFNR AS ProductionOrder,
'Production Order Released' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0002' AND JCDS.INACT = ''
UNION ALL
-- 4. Order Data Changed (using last change date as a proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Data Changed' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime, -- Time is not available in AUFK
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.AEDAT IS NOT NULL AND AUFK.AEDAT > AUFK.ERDAT
UNION ALL
-- 5. Goods Issue Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Issue Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '261'
UNION ALL
-- 6. First Confirmation Recorded
SELECT
CONF.ProductionOrder,
'First Confirmation Recorded' AS ActivityName,
CONF.EventTime,
CONF.ProductionPlant,
CONF.ProductCode,
CONF.PlannedQuantity,
CONF.DeliveredQuantity,
CONF.ActualStartDate,
CONF.ActualEndDate,
CONF.SourceSystem,
CONF.LastDataUpdate
FROM (
SELECT
AUFK.AUFNR AS ProductionOrder,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate,
ROW_NUMBER() OVER(PARTITION BY AUFK.AUFNR ORDER BY AFRU.BUDAT, AFRU.ERFZEIT) as rn
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
) AS CONF
WHERE CONF.rn = 1
UNION ALL
-- 7. Intermediate Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Intermediate Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'T' -- T = Partial Confirmation
UNION ALL
-- 8. Final Confirmation Recorded
SELECT
AUFK.AUFNR AS ProductionOrder,
'Final Confirmation Recorded' AS ActivityName,
CAST(AFRU.BUDAT AS VARCHAR(8)) || ' ' || CAST(AFRU.ERFZEIT AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN AFRU ON AUFK.AUFNR = AFRU.AUFNR
WHERE AFRU.AUERU = 'E' -- E = Final Confirmation
UNION ALL
-- 9. Goods Receipt Posted
SELECT
AUFK.AUFNR AS ProductionOrder,
'Goods Receipt Posted' AS ActivityName,
CAST(MKPF.BUDAT AS VARCHAR(8)) || ' ' || CAST(MKPF.CPUTM AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN MSEG ON AUFK.AUFNR = MSEG.AUFNR
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR AND MSEG.MJAHR = MKPF.MJAHR
WHERE MSEG.BWART = '101'
UNION ALL
-- 10. Order Technically Completed
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Technically Completed' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0045' AND JCDS.INACT = ''
UNION ALL
-- 11. Order Settlement Ran (using 'Closed' status as proxy)
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Settlement Ran' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0046' AND JCDS.INACT = '' -- I0046 is CLSD (Closed)
UNION ALL
-- 12. Order Cancellation Set
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(JCDS.UDATE AS VARCHAR(8)) || ' ' || CAST(JCDS.UTIME AS VARCHAR(6)) AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
JOIN JCDS ON AUFK.OBJNR = JCDS.OBJNR
WHERE JCDS.STAT = 'I0047' AND JCDS.INACT = '' -- I0047 is CNF (Confirmed), use I0076 for Canceled. Recorrecting. Use Deletion Flag instead.
-- Corrected Logic for Cancellation:
SELECT
AUFK.AUFNR AS ProductionOrder,
'Order Cancellation Set' AS ActivityName,
CAST(AUFK.AEDAT AS VARCHAR(8)) || ' 000000' AS EventTime,
AUFK.WERKS AS ProductionPlant,
AUFK.MATNR AS ProductCode,
AFKO.GAMNG AS PlannedQuantity,
AFKO.GASMG AS DeliveredQuantity,
AUFK.GSTRP AS ActualStartDate,
AUFK.GETRI AS ActualEndDate,
SY-SYSID AS SourceSystem,
CURRENT_TIMESTAMP AS LastDataUpdate
FROM AUFK
WHERE AUFK.LOEKZ = 'X';