Ihr Daten-Template für das Transportmanagement
Ihr Daten-Template für das Transportmanagement
- Empfohlene Attribute für die Datenerfassung
- Wichtige Aktivitäten zur Nachverfolgung
- Hinweise zur Datenextraktion aus SAP Transportation Management
Attribute des Transportmanagements
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivitätsname ActivityName | Der Name eines bestimmten Geschäftsereignisses oder Prozessschritts im Transportablauf. | ||
| Beschreibung Der Aktivitätsname bezeichnet eine einzelne Aufgabe oder einen Meilenstein im Lebenszyklus einer Sendung, zum Beispiel „Sendung geplant“, „Waren abgeholt“ oder „Waren zugestellt“. Diese Aktivitäten bilden die Knoten in der ermittelten Prozesslandkarte. Die Analyse von Reihenfolge und Häufigkeit der Aktivitäten hilft, den Standardprozess, Abweichungen, Engpässe und Nacharbeitsschleifen zu erkennen. Sie bildet die Grundlage für die Prozesserkennung und Konformitätsprüfung im Transportmanagement. Warum das wichtig ist Dieses Attribut beschreibt die Schritte des Transportprozesses und ermöglicht die Visualisierung und Analyse des durchgängigen Sendungsablaufs. Woher beziehen Dieses Attribut wird üblicherweise aus Ereigniscodes oder Statusänderungen abgeleitet, die im Event Handler für die Ausführungsverfolgung von SAP TM erfasst werden. Als Datenquelle kommen Tabellen infrage, in denen Statusänderungen von Geschäftsobjekten oder bestimmte Ereignismeldungen protokolliert werden. Beispiele Sendung geplantFrachtführer zugewiesenWaren abgeholtWaren zugestelltZustellnachweis eingegangen | |||
| Ereigniszeit EventTime | Der Timestamp, der angibt, wann eine bestimmte Aktivität oder ein Ereignis stattgefunden hat. | ||
| Beschreibung Die Ereigniszeit gibt für jede Aktivität im Transportprozess das genaue Datum und die genaue Uhrzeit an. Diese Zeitangaben sind die Grundlage für die Berechnung von Zykluszeiten, Dauern und Wartezeiten zwischen Prozessschritten. Bei der Analyse dient dieses Attribut dazu, Ereignisse korrekt zu ordnen, ein chronologisches Protokoll zu erstellen und alle zeitbasierten Leistungsanalysen durchzuführen. Es ist entscheidend, um Verzögerungen zu erkennen, die Prozesseffizienz zu messen und die Leistung anhand von Zeitplänen oder Service-Level-Vereinbarungen zu bewerten. Warum das wichtig ist Der Timestamp ist entscheidend, um Ereignisse chronologisch zu ordnen und Kennzahlen wie Zykluszeiten und termingerechte Lieferungen zu berechnen. Woher beziehen Die Daten stammen aus Event-Handler-Tabellen in SAP TM, zum Beispiel /SAPTRX/EH_EVMSG, in denen die Timestamps gemeldeter Ereignisse gespeichert sind. Beispiele 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Sendung ShipmentId | Die eindeutige Kennung für einen einzelnen Warentransport. Sie dient als zentraler Case für die Analyse. | ||
| Beschreibung Die Shipment ID ist der Primärschlüssel, der alle zugehörigen Transportaktivitäten und Ereignisse zusammenfasst. Sie steht für einen einzelnen, durchgängigen Transportprozess, von der ersten Anfrage bis zum endgültigen Zustellnachweis und zur Zahlung. Im Process Mining ist dieses Attribut entscheidend für die Erstellung der Case-Ansicht. Analysten können damit den gesamten Weg jeder Sendung nachvollziehen. So lassen sich Prozessvarianten, Zykluszeiten und Ergebnisse einzelner Sendungen analysieren und die Transportleistung umfassend beurteilen. Warum das wichtig ist Diese Kennung ist die zentrale Case-ID. Sie verknüpft alle Ereignisse und Datenpunkte mit einem bestimmten Transportauftrag und ist damit entscheidend für die durchgängige Prozessanalyse. Woher beziehen Diese Kennung ist die Nummer des Freight Order oder Freight Booking in SAP TM. Sie ist in Tabellen wie /SCMTMS/D_TORROT und /SCMTMS/D_TRQROT zu finden. Beispiele 610000432161000056786100009876 | |||
| Angefordertes Lieferdatum RequestedDeliveryDate | Das vom Kunden gewünschte oder im Kundenauftrag festgelegte Lieferdatum und die Lieferzeit. | ||
| Beschreibung Das angeforderte Lieferdatum ist der Zieltermin für die Aktivität „Waren zugestellt“. Es dient als wichtigste Vergleichsgröße für die Leistung bei termingerechter Lieferung. Dieses Datum ist entscheidend für die Berechnung der KPI „Quote termingerechter Lieferungen“. Durch den Vergleich des tatsächlichen Liefer-Timestamp mit dem angeforderten Datum können Unternehmen feststellen, ob sie die vereinbarte Servicequalität eingehalten haben. Die Analyse von Abweichungen hilft, systematische Verzögerungsursachen zu erkennen, etwa Probleme mit der Leistung von Frachtführern, Verzögerungen bei der Planung oder Verzögerungen beim Zoll. Warum das wichtig ist Dient als Grundlage für die Messung der Leistung bei termingerechter Lieferung, einer wichtigen KPI für die Kundenzufriedenheit und operative Exzellenz. Woher beziehen Dieses Datum wird in der Regel aus dem vorangehenden Kundenauftrag oder Umlagerungsauftrag in SAP ERP übernommen. Es ist in den Datums- und Zeitfeldern der Frachteinheit oder des Frachtauftrags gespeichert. Beispiele 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| Endzeit EndTime | Der Timestamp, der angibt, wann eine bestimmte Aktivität abgeschlossen wurde. | ||
| Beschreibung Während StartTime den Beginn eines Ereignisses angibt, markiert EndTime dessen Abschluss. Das ist besonders nützlich für Aktivitäten mit einer bestimmten Dauer, etwa „Zollabfertigung“ oder „Warenverladung“. Die Differenz zwischen EndTime und StartTime entspricht der Bearbeitungszeit dieser Aktivität. Wenn sowohl Start- als auch Endzeit vorliegen, lassen sich Aktivitätsdauern im Process Mining genauer analysieren und Bearbeitungszeiten von Wartezeiten trennen. So wird sichtbar, wo Ineffizienzen entstehen: bei der Ausführung einer Aufgabe oder bei den Übergaben zwischen Aufgaben. Warum das wichtig ist Ermöglicht die genaue Berechnung der Bearbeitungszeiten von Aktivitäten und unterscheidet aktive Arbeitszeit von Wartezeiten zwischen Ereignissen. Woher beziehen Wie StartTime stammt dieser Wert aus Event-Handler-Tabellen. Er kann einem separaten Ereignis „Abgeschlossen“ für die jeweilige Aktivität entsprechen. Beispiele 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Gesamtfrachtkosten TotalFreightCost | Die berechneten oder in Rechnung gestellten Gesamtkosten der Sendung. | ||
| Beschreibung Die Gesamtfrachtkosten zeigen die finanziellen Auswirkungen einer Sendung. Dabei kann es sich um die vom Transportmanagementsystem berechneten Kosten oder um den endgültigen Rechnungsbetrag des Frachtführers nach der Abrechnung handeln. Mit diesem Attribut lässt sich die finanzielle Dimension in die Prozessanalyse einbeziehen. Analysten können die teuersten Prozessvarianten ermitteln, die Kosten von Verzögerungen oder Umleitungen berechnen und die Kosteneffizienz verschiedener Frachtführer oder Transportarten vergleichen. Es ist eine wichtige Grundlage für Dashboards zu Transportausgaben und Kosten der Leistungserbringung. Warum das wichtig ist Ergänzt die Prozessanalyse um die finanzielle Dimension und ermöglicht die Auswertung der Transportausgaben, der Kosten je Sendung und der finanziellen Auswirkungen ineffizienter Prozesse. Woher beziehen Stammt aus dem Frachtabrechnungsbeleg in SAP TM, nachdem die Kostenberechnung erfolgt ist. Das Feld ist beispielsweise in Tabellen wie /SCMTMS/D_SFIRHD zu finden. Beispiele 250.751200.005430.50 | |||
| Name des Frachtführers CarrierName | Name des Frachtführers oder Logistikdienstleisters, der mit dem Transport beauftragt wurde. | ||
| Beschreibung Der Name des Frachtführers gibt an, welches Unternehmen für den physischen Warentransport verantwortlich ist. Für die Leistungsanalyse ist dieses Attribut entscheidend, da sich Servicequalität, Kosten und Zuverlässigkeit je nach Frachtführer unterscheiden können. Beim Process Mining dient dieses Attribut dazu, die Leistung verschiedener Frachtführer zu segmentieren und miteinander zu vergleichen. Damit lassen sich Leistungsübersichten für Frachtführer erstellen, die termingerechte Lieferung je Frachtführer überwachen, Kosten vergleichen und feststellen, bei welchen Frachtführern besonders häufig Verzögerungen oder Streitfälle auftreten. Diese Erkenntnisse sind wichtig für das strategische Frachtführermanagement und die Beschaffung. Warum das wichtig ist Ermöglicht den Leistungsvergleich verschiedener Frachtführer. Das ist entscheidend, um die Auswahl der Frachtführer, die Kosten und das Serviceniveau zu optimieren. Woher beziehen Diese Information ist im Frachtauftrag oder in der Frachtbuchung gespeichert. Die Zuordnung erfolgt über die Geschäftspartnerfunktion des Frachtführers. Beispiele DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| Termingerecht geliefert IsOnTimeDelivery | Ein boolesches Kennzeichen dafür, ob die Waren am oder vor dem angeforderten Lieferdatum zugestellt wurden. | ||
| Beschreibung Dieses berechnete Attribut vergleicht den Timestamp der Aktivität „Waren zugestellt“ mit dem „Angeforderten Lieferdatum“. Es ist wahr, wenn die Lieferung pünktlich oder vorzeitig erfolgte, und falsch, wenn sie verspätet war. Das Attribut vereinfacht die Leistungsanalyse, indem es für jede Sendung ein eindeutiges binäres Ergebnis liefert. Es bildet die Grundlage für das Dashboard „Leistung bei termingerechter Lieferung“ und die zugehörige KPI. Analysten können verspätete Sendungen einfach herausfiltern und die Ursachen der schlechten Leistung untersuchen. Warum das wichtig ist Misst direkt, ob Lieferzusagen eingehalten wurden, und vereinfacht die Berechnung und Darstellung der wichtigen KPI für termingerechte Lieferungen. Woher beziehen Dieses Attribut ist nicht in SAP TM gespeichert. Es muss bei der Datentransformation berechnet werden, indem der Timestamp des tatsächlichen Lieferereignisses mit dem angeforderten Lieferdatum verglichen wird. Beispiele truefalse | |||
| Transportart ModeOfTransport | Die für die Sendung verwendete Transportart, zum Beispiel Straße, Schiene, Luft- oder Seefracht. | ||
| Beschreibung Dieses Attribut gibt die Transportart an. Die verschiedenen Transportarten unterscheiden sich hinsichtlich Kostenstruktur, Transportdauer und Prozesskomplexität. Bei einer internationalen Luftfrachtsendung sind beispielsweise andere Aktivitäten wie die Zollabfertigung erforderlich als bei einer nationalen Lkw-Komplettladung. Die Analyse nach Transportart ermöglicht gezielte Verbesserungsmaßnahmen. Sie ist auch für die Kostenanalyse wichtig, insbesondere um den Einsatz von Premiumfracht, etwa beschleunigter Luftfracht, mit dem von regulären, kostengünstigeren Transportarten zu vergleichen. Diese Segmentierung ist entscheidend, um die Transportausgaben zu verstehen und zu steuern. Warum das wichtig ist Ermöglicht die Analyse von Kosten, Transportdauer und Prozessabweichungen nach Transportart. Das ist entscheidend für die Kostenoptimierung und die Erkennung des Einsatzes von Premiumfracht. Woher beziehen Dies ist ein wichtiges Feld im Frachtauftrag oder in der Frachtbuchung, häufig mit „Transportart“ oder „MOT“ bezeichnet. Beispiele 01 (Straße)02 (Schiene)04 (Luft)05 (See) | |||
| Benutzername UserName | Die Benutzer-ID oder der Name der Person, die eine Aktivität ausgeführt hat. | ||
| Beschreibung Dieses Attribut gibt an, welcher Mitarbeitende oder Benutzer für eine manuelle Aktivität verantwortlich war, etwa „Sendung geplant“ oder „Rechnung geprüft“. Es verknüpft Prozessschritte mit den Personen oder Teams, die sie ausgeführt haben. Die Analyse der Aktivitäten nach Benutzer hilft, die Arbeitslastverteilung zu verstehen, Schulungsbedarf zu erkennen und besonders leistungsstarke Mitarbeitende zu identifizieren. Sie ist auch für Compliance und Audits wichtig, da sie nachvollziehbar dokumentiert, wer was wann erledigt hat. Außerdem können Unterschiede darin sichtbar werden, wie verschiedene Benutzer dieselbe Aufgabe ausführen. Warum das wichtig ist Ordnet manuelle Prozessschritte bestimmten Benutzern zu und ermöglicht so die Analyse von Arbeitslast, individueller Leistung und Schulungsbedarf. Woher beziehen Typischerweise in Änderungsprotokollen oder Tabellen mit Dokumentkopfdaten für Transportdokumente zu finden, etwa in den Feldern „Erstellt von“ oder „Geändert von“ (z. B. ERNAM, AENAM). Beispiele CB998030SMITHJPLANNER_EU | |||
| Geplantes Abholdatum ScheduledPickupDate | Das geplante Datum und die Uhrzeit, zu denen der Frachtführer die Waren am Versandort abholt. | ||
| Beschreibung Das geplante Abholdatum bezeichnet den vereinbarten Zeitpunkt, zu dem der physische Transport beginnt. Es ist ein wichtiger Meilenstein in der Ausführungsphase der Sendung. Dieses Attribut ist unverzichtbar, um die Pünktlichkeit des ersten Transportabschnitts zu überwachen. Durch den Vergleich der geplanten Abholzeit mit dem tatsächlichen Timestamp des Ereignisses „Waren abgeholt“ können Unternehmen Abholverzögerungen berechnen. So lässt sich die Leistung und Zuverlässigkeit sowohl des Versandorts als auch des Frachtführers bewerten. Warum das wichtig ist Dient als Grundlage für die Messung der Pünktlichkeit bei der Abholung und hilft, Verzögerungen gleich zu Beginn des physischen Transports zu erkennen. Woher beziehen Dies ist ein geplantes Datum mit Uhrzeit, das in SAP TM in der Stoppfolge des Frachtauftrags gespeichert ist. Beispiele 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
| Grund des Streitfalls DisputeReason | Der angegebene Grund für einen Streitfall zu einer Frachtrechnung. | ||
| Beschreibung Weicht die Rechnung eines Frachtführers von den in SAP TM erwarteten Kosten ab, wird ein Streitfall angelegt. Dieses Attribut erfasst den Grund für die Abweichung, etwa „Falscher Tarif“, „Doppelte Rechnung“ oder „Nicht genehmigter Zusatzaufwand“. Die Analyse der Streitfallgründe ist entscheidend für das Dashboard zu Fehlern und Streitfällen bei Frachtrechnungen. Sie hilft, die Ursachen fehlerhafter Abrechnungen zu ermitteln, unabhängig davon, ob diese auf Probleme mit Stammdaten, Fehler des Frachtführers oder operative Mängel zurückgehen. Auf dieser Grundlage kann das Unternehmen gezielte Maßnahmen ergreifen, um Streitfälle zu reduzieren. Das beschleunigt den Zahlungszyklus und verringert den Verwaltungsaufwand. Warum das wichtig ist Zeigt die Ursachen von Fehlern bei Frachtabrechnungen auf und ermöglicht gezielte Maßnahmen, um Rechnungsstreitfälle zu reduzieren und den Abrechnungsprozess zu verbessern. Woher beziehen Diese Information wird im Streitfall erfasst, der mit einem Frachtabrechnungsbeleg verknüpft ist. Beispiele Abweichender TarifFalsches GewichtNicht genehmigte StandgeldgebührDoppelte Rechnung | |||
| Letzte Datenaktualisierung LastDataUpdate | Der Timestamp der letzten Datenextraktion oder Aktualisierung des Process-Mining-Datensatzes. | ||
| Beschreibung Dieses Attribut gibt an, wie aktuell die analysierten Daten sind. Es zeigt Datum und Uhrzeit an, zu denen die Daten zuletzt aus den Quellsystemen, etwa SAP TM, in das Process-Mining-Werkzeug übernommen wurden. Diese Metadaten sind für jedes Dashboard und jede Analyse wichtig, da sie den zeitlichen Bezug der Erkenntnisse verdeutlichen. Benutzer können so erkennen, ob sie Echtzeitinformationen oder einen älteren Datenstand betrachten. Das ist entscheidend, um rechtzeitig fundierte Entscheidungen zu treffen. Warum das wichtig ist Liefert wichtigen Kontext zur Aktualität der Daten, damit Benutzer den zeitlichen Stand der Analyse einschätzen können. Woher beziehen Dieses Attribut wird üblicherweise während der Datenübernahme vom ETL-Werkzeug (Extract, Transform, Load) oder der Datenpipeline erzeugt und gespeichert. Beispiele 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
| Quellsystem SourceSystem | Das System, aus dem die Ereignisdaten stammen. | ||
| Beschreibung Dieses Attribut gibt das Quellsystem an, das die Daten erzeugt hat, zum Beispiel SAP TM, SAP ERP oder ein externes Frachtführerportal. Es liefert Kontext zur Herkunft der Daten und hilft, die Integrationspunkte zu verstehen. In einer komplexen Systemlandschaft ist das Quellsystem wichtig für die Datenvalidierung, die Fehlerbehebung bei Integrationsproblemen und das Verständnis dafür, wie verschiedene Systeme zum Gesamtprozess beitragen. So lässt sich beispielsweise unterscheiden, ob ein Ereignis von einem internen System oder einem externen Logistikdienstleister gemeldet wurde. Warum das wichtig ist Gibt die Herkunft der Daten an. Das ist wichtig für die Data Governance, die Fehlerbehebung und das Verständnis der Prozesssteuerung über mehrere Systeme hinweg. Woher beziehen Diese Information wird häufig im Systemprotokoll gespeichert oder lässt sich anhand der Schnittstelle oder des Benutzers ableiten, der den Datensatz erstellt hat. Beispiele SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Sendungsstatus ShipmentStatus | Der aktuelle Gesamtstatus der Sendung zum Zeitpunkt der Datenextraktion. | ||
| Beschreibung Der Sendungsstatus zeigt, an welchem Punkt ihres Lebenszyklus sich die Sendung befindet, etwa „In Planung“, „In Ausführung“, „Zugestellt“ oder „Storniert“. Er gibt den zuletzt bekannten Zustand des Cases wieder. Dieses Attribut eignet sich dazu, Sendungen nach ihrem Ergebnis zu filtern und zu analysieren. So kann ein Analyst beispielsweise nur abgeschlossene Sendungen betrachten, um die durchgängige Zykluszeit zu messen, oder ausschließlich stornierte Sendungen untersuchen, um die Ursachen der Stornierungen zu ermitteln. Der Status liefert wichtigen Kontext für die Interpretation des Prozessablaufs. Warum das wichtig ist Zeigt das Gesamtergebnis jeder Sendung an und ermöglicht Analysen und Filterungen danach, ob eine Sendung abgeschlossen, storniert oder noch unterwegs ist. Woher beziehen Dies ist das Feld für den Gesamtstatus im Kopf des Frachtauftrags oder der Frachtbuchung in SAP TM. Beispiele In PlanungTransportbereitIn AusführungAusgeführtStorniert | |||
| Streitfall vorhanden IsDisputed | Ein boolesches Kennzeichen dafür, ob es zu einem Streitfall bezüglich der Frachtrechnung für die Sendung kam. | ||
| Beschreibung Dieses berechnete Kennzeichen zeigt Sendungen mit einem zugehörigen Streitfall bei der Frachtabrechnung an. Es ist wahr, wenn ein Streitfall angelegt wurde, andernfalls falsch. Das Kennzeichen lässt sich aus dem Vorhandensein der Aktivität „Frachtstreitfall angelegt“ oder eines ausgefüllten Felds „Grund des Streitfalls“ ableiten. Dieses Attribut vereinfacht die Analyse des Frachtabrechnungsprozesses. Es ermöglicht die einfache Berechnung der KPI „Abweichungsquote bei Frachtabrechnungen“ und das Filtern aller Sendungen mit Streitfällen. Anschließend können Analysten gemeinsame Merkmale dieser Sendungen untersuchen, etwa Frachtführer, Transportstrecken oder Gebührenarten, um die Ursachen von Abrechnungsfehlern zu ermitteln. Warum das wichtig ist Erleichtert das Erkennen problematischer Frachtabrechnungen und ermöglicht die schnelle Berechnung der Streitfallquote sowie die Ursachenanalyse von Abrechnungsfehlern. Woher beziehen Dieses Attribut ist nicht in SAP TM gespeichert. Es muss anhand des Vorhandenseins eines Streitfalls berechnet werden, der mit dem Frachtabrechnungsbeleg verknüpft ist. Beispiele truefalse | |||
| Ursprungsland OriginCountry | Das Land, aus dem die Sendung stammt. | ||
| Beschreibung Dieses Attribut gibt das Ausgangsland des Transports an. Es wird aus der Adresse des ersten Abholorts abgeleitet. Die Analyse nach Ursprungsland hilft, regionale Unterschiede bei Leistung, Kosten und Komplexität zu erkennen. Sie kann Länder mit längeren Zollabfertigungszeiten, höheren Frachtführerkosten oder häufigeren Verzögerungen aufzeigen. Diese geografische Segmentierung ist wichtig, um eine globale Lieferkette zu steuern und Logistikstrategien auf bestimmte Regionen abzustimmen. Warum das wichtig ist Ermöglicht die geografische Analyse der Sendungsleistung und hilft, regionale Engpässe, Kostentreiber oder Prozessabweichungen zu erkennen. Woher beziehen Diese Information ist Teil der Adressdaten des Ausgangsorts des ersten Stopps im Frachtauftrag. Beispiele DEUSCNMX | |||
| Verzögerungsgrund DelayReason | Ein Code oder Text, der den Grund für eine Verzögerung der Sendung erläutert. | ||
| Beschreibung Das Attribut „Verzögerungsgrund“ erfasst die Ursache einer Abweichung vom geplanten Zeitplan, etwa „Schlechtes Wetter“, „Zollkontrolle“ oder „Verzögerung durch den Frachtführer“. Diese Information wird häufig manuell oder über eine Ereignismeldung des Frachtführers übermittelt. Dieses Attribut ist besonders hilfreich bei der Ursachenanalyse. Es zeigt nicht nur, dass eine Sendung verspätet war, sondern auch warum. Durch die Kategorisierung und Auswertung der Verzögerungsgründe können Unternehmen wiederkehrende Probleme erkennen und Verbesserungsmaßnahmen auf die wichtigsten Bereiche konzentrieren, etwa auf eine bessere Kommunikation mit Frachtführern oder die Optimierung von Routen zur Vermeidung von Staus. Warum das wichtig ist Erklärt die Ursachen von Sendungsverzögerungen und ermöglicht eine fundierte Ursachenanalyse, um Ausnahmefälle zu reduzieren und die Pünktlichkeit zu verbessern. Woher beziehen Dies kann als Ereigniscode und Grund im Ereignismanagement von SAP TM erfasst werden, wenn ein Ereignis „Ankunft/Abfahrt verzögert“ gemeldet wird. Beispiele WEATHER_DELAYCUSTOMS_INSPECTIONPORT_CONGESTIONMECHANICAL_FAILURE | |||
| Zielland DestinationCountry | Das Land, in das die Sendung geliefert wird. | ||
| Beschreibung Dieses Attribut gibt das endgültige Zielland der Sendung an. Es wird aus der Adresse des letzten Lieferorts abgeleitet. Wie beim Ursprungsland ist die Analyse nach Zielland wichtig, um regionale Herausforderungen in der Logistik zu verstehen. Sie kann Muster aufzeigen, etwa welche Ziele besonders häufig von Lieferverzögerungen betroffen sind oder höhere Kosten auf der letzten Meile verursachen. Diese Erkenntnisse sind wertvoll für die Netzwerkoptimierung, realistische Lieferzusagen und die Einhaltung internationaler Handelsvorschriften. Warum das wichtig ist Ermöglicht die Analyse der Prozessleistung nach Zielort und zeigt Probleme in bestimmten Lieferregionen, bei Zollbehörden oder bei Frachtführern auf der letzten Meile auf. Woher beziehen Diese Information ist Teil der Adressdaten des Zielorts des letzten Stopps im Frachtauftrag. Beispiele FRCAGBJP | |||
Aktivitäten im Transportmanagement
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Frachtabrechnung erstellt | Diese Aktivität markiert die Erstellung des Freight Settlement Document (FSD), in dem die an den Frachtführer zu zahlenden Transportkosten berechnet werden. Es ist der zentrale Beleg für Rückstellungen und Rechnungsprüfung. | ||
| Warum das wichtig ist Damit beginnt die finanzielle Abrechnungsphase des Transportprozesses. Die Zeitspanne von der Zustellung bis zur Erstellung der Abrechnung zeigt mögliche Engpässe in der Finanzverarbeitung auf. Woher beziehen Dieses Ereignis wird ausdrücklich durch die Erstellung eines Freight Settlement Document erfasst. Der Erstellungs-Timestamp ist in der Kopftabelle dieses Belegs, /SCMTMS/D_SFIRHD, verfügbar. Erfassung Verwenden Sie Erstellungsdatum und -uhrzeit des Freight Settlement Document. Ereignistyp explicit | |||
| Frachtführer zugewiesen | Diese Aktivität zeigt an, dass ein bestimmter Transportdienstleister, also ein Frachtführer, ausgewählt und der Sendung zugewiesen wurde. Die Zuweisung kann manuell, durch automatische Planung oder im Rahmen einer Ausschreibung erfolgen. | ||
| Warum das wichtig ist Die Zuweisung eines Frachtführers ist ein wichtiger Schritt, bevor eine Sendung bestätigt und ausgeführt werden kann. Die Nachverfolgung hilft, die Auswahlprozesse für Frachtführer zu analysieren und eine rechtzeitige Buchung sicherzustellen. Woher beziehen Das Ereignis wird erfasst, sobald das Frachtführerfeld (Partner mit der Rolle „Carrier“) im Freight Order oder Freight Booking ausgefüllt ist. Bei einer Ausschreibung erfolgt die Erfassung, wenn ein Freight Request for Quotation vergeben wird. Erfassung Ermitteln Sie den Timestamp, zu dem die Partnerfunktion des Frachtführers erstmals im Freight Order ausgefüllt oder bestätigt wird. Ereignistyp inferred | |||
| Sendung geplant | Diese Aktivität zeigt an, dass der Transportbedarf in einem konkreten Sendungsplan zusammengeführt wurde. Sie wird erfasst, wenn ein Freight Order (für Straße oder Schiene) oder ein Freight Booking (für See- oder Luftfracht) mit geplanter Route und Ressourcen erstellt und gespeichert wird. | ||
| Warum das wichtig ist Dieser Meilenstein muss erreicht sein, bevor die Logistikausführung beginnen kann. Die Zykluszeit vom Eingang des Transportbedarfs bis zu dieser Aktivität ist eine wichtige Kennzahl für die Planungseffizienz. Woher beziehen Dieses Ereignis entspricht der Erstellung eines Freight Order oder Freight Booking. Es lässt sich auch aus einer Statusänderung des Belegs ableiten, etwa wenn der Planungsstatus auf „Geplant“ wechselt. Für die Kopfdaten wird üblicherweise die Tabelle /SCMTMS/D_TORROT verwendet. Erfassung Verwenden Sie den Erstellungs-Timestamp des Freight Order oder Freight Booking. Ereignistyp explicit | |||
| Sendung storniert | Diese Aktivität steht für die Stornierung einer angeforderten oder geplanten Sendung. Sie bildet den Endpunkt von Prozessen, die nicht in die Ausführung übergehen. | ||
| Warum das wichtig ist Die Nachverfolgung von Stornierungen hilft, Gründe für Prozessabbrüche wie Änderungen der Kundennachfrage oder Planungsfehler zu ermitteln. Eine hohe Stornierungsquote kann auf grundlegende Probleme im Auftragsmanagement oder in der Planung hinweisen. Woher beziehen Das Ereignis lässt sich aus einer Änderung des Lebenszyklusstatus des Forwarding Order oder Freight Order zu „Storniert“ ableiten. Der Timestamp dieser Statusänderung markiert das Ereignis. Erfassung Erfassen Sie den Timestamp, zu dem der Lebenszyklusstatus des Belegs auf „Storniert“ gesetzt wird. Ereignistyp inferred | |||
| Transportbedarf eingegangen | Diese Aktivität markiert den Beginn des Transportprozesses und steht für die Erfassung eines Transportbedarfs. In SAP TM wird sie üblicherweise durch die Erstellung eines Forwarding Order (FWO) oder eines Order-based Transportation Requirement (OTR) erfasst. | ||
| Warum das wichtig ist Dies ist das zentrale Start-Event für den durchgängigen Sendungsprozess. Die Zeitspanne von dieser Aktivität bis zum Abschluss der Planung ist eine wichtige Kennzahl für die Planungseffizienz. Woher beziehen Dieses Ereignis wird erfasst, wenn ein Forwarding Order (Belegart FWO) oder ein anderer Transportbedarfsbeleg erstellt wird. Als Ereigniszeit dient der Erstellungs-Timestamp im Kopftabelle, beispielsweise in /SCMTMS/D_TORROT. Erfassung Erfassen Sie Erstellungsdatum und -uhrzeit des Forwarding Order oder des Transportbedarfsbelegs. Ereignistyp explicit | |||
| Waren abgeholt | Diese Aktivität markiert den Beginn des physischen Transports der Waren. Sie wird erfasst, wenn der Frachtführer meldet, dass die Waren verladen wurden und den Standort des Versenders verlassen haben. | ||
| Warum das wichtig ist Dieser wichtige Meilenstein der Ausführung markiert den Beginn des Transports. Er ist entscheidend, um die Termintreue zu verfolgen und einen präzisen Überblick über die Sendung zu gewährleisten. Woher beziehen Dieses Ereignis wird üblicherweise in SAP Event Management erfasst, das in SAP TM integriert ist, und als Ereignis „Abfahrt“ oder „Ende der Verladung“ geführt. Es aktualisiert den Ausführungsstatus des Freight Order. Die Erfassung kann auch direkt im Freight Order erfolgen. Erfassung Verwenden Sie den Timestamp des gemeldeten Ausführungsereignisses „Abfahrt“ am Ausgangsort des Freight Order. Ereignistyp explicit | |||
| Waren zugestellt | Diese Aktivität steht für die Ankunft der Sendung am endgültigen Zielort und den Abschluss des physischen Transports. Sie wird erfasst, wenn der Frachtführer meldet, dass die Waren am Standort des Empfängers entladen wurden. | ||
| Warum das wichtig ist Dies ist der wichtigste Meilenstein zur Messung der Leistung bei termingerechter Lieferung und der Kundenzufriedenheit. Üblicherweise löst er außerdem die Rechnungsstellung und Abrechnung aus. Woher beziehen Dieses Ereignis wird in SAP TM als Ausführungsereignis „Ankunft am Zielort“ oder „Ende der Entladung“ erfasst und aktualisiert den Ausführungsstatus des Freight Order. Die Daten stammen häufig vom Frachtführer. Erfassung Verwenden Sie den Timestamp des gemeldeten Ausführungsereignisses „Ankunft am Zielort“ für den letzten Halt des Freight Order. Ereignistyp explicit | |||
| Zahlung verarbeitet | Diese abschließende Aktivität bestätigt, dass der Frachtführer für die Transportleistungen bezahlt wurde. Das Ereignis tritt üblicherweise im angebundenen ERP-System ein, nachdem die geprüfte Rechnung aus SAP TM eingegangen ist. | ||
| Warum das wichtig ist Damit endet der durchgängige Lebenszyklus des Transportprozesses. Das Ereignis ist wichtig, um die gesamte Prozessdauer und Kennzahlen zur termingerechten Zahlung zu messen. Woher beziehen Diese Informationen liegen im ERP-System, zum Beispiel in S/4HANA Finance. Über die Rechnungsnummer lassen sie sich mit dem Freight Settlement Document verknüpfen. Eine Statusaktualisierung kann an SAP TM zurückgesendet werden. Alternativ müssen die Daten aus ERP-Tabellen wie BKPF und BSEG bezogen werden. Erfassung Beziehen Sie das Ausgleichsdatum der Zahlung aus dem ERP-System und verknüpfen Sie es über den Rechnungsbezug mit der Sendung. Ereignistyp explicit | |||
| Zustellnachweis eingegangen | Diese Aktivität tritt ein, wenn der unterschriebene Zustellnachweis (Proof of Delivery, POD) vom Frachtführer eingeht und im System erfasst wird. Damit wird bestätigt, dass der Empfänger die Waren angenommen hat. | ||
| Warum das wichtig ist Der Eingang des POD ist Voraussetzung dafür, dem Kunden eine Rechnung zu stellen und die Frachtkosten mit dem Frachtführer abzurechnen. Verzögerungen wirken sich unmittelbar auf den Cash-to-Cash-Zyklus aus. Woher beziehen Das Ereignis lässt sich üblicherweise aus einer Statusänderung im Freight Order ableiten, etwa wenn der POD-Status auf „Eingegangen“ gesetzt wird. Der Timestamp der Statusänderung gibt den Zeitpunkt der Aktivität an. Erfassung Erfassen Sie den Timestamp, zu dem der Status des Zustellnachweises im Freight Order auf „Eingegangen“ gesetzt wird. Ereignistyp inferred | |||
| Frachtstreitfall angelegt | Dieses Ereignis zeigt an, dass eine Abweichung zwischen der Rechnung des Frachtführers und den berechneten Kosten im Freight Settlement Document festgestellt wurde. Dadurch wird ein Workflow zur Klärung des Streitfalls ausgelöst. | ||
| Warum das wichtig ist Streitfälle verzögern Zahlungen an Frachtführer und verursachen Verwaltungsaufwand. Die Nachverfolgung dieser Aktivität hilft, Ursachen für fehlerhafte Abrechnungen zu ermitteln, etwa falsche Tarife oder Zusatzkosten. Woher beziehen Das Ereignis lässt sich aus einer Statusänderung im Freight Settlement Document ableiten, wenn dort der Status „Streitfall“ gesetzt wird. Möglicherweise wird zusätzlich ein separater Beleg für den Streitfall angelegt. Erfassung Erfassen Sie den Timestamp, zu dem der Streitfallstatus im Freight Settlement Document gesetzt wird. Ereignistyp inferred | |||
| Rechnung geprüft | Diese Aktivität zeigt an, dass die Rechnung des Frachtführers erfolgreich mit dem Freight Settlement Document abgeglichen und zur Zahlung freigegeben wurde. Sie ist der letzte Schritt, bevor der Zahlungsvorgang im ERP-System beginnt. | ||
| Warum das wichtig ist Mit dieser Aktivität werden Prüfung und Kontrolle der Frachtkosten abgeschlossen. Verzögerungen in dieser Phase können zu verspäteten Zahlungen an Frachtführer führen und die Geschäftsbeziehung belasten. Woher beziehen Das Ereignis lässt sich aus einer Statusänderung im Freight Settlement Document ableiten, etwa zu „Rückstellungsbereit“ oder „Zur Buchung übertragen“. Dies zeigt an, dass der Beleg zur Zahlung an das ERP-System übermittelt wurde. Erfassung Verfolgen Sie den Timestamp, zu dem sich der Lebenszyklusstatus des FSD ändert und anzeigt, dass der Beleg zahlungsbereit oder gebucht ist. Ereignistyp inferred | |||
| Sendung umgeleitet | Diese Aktivität steht für eine ungeplante Änderung der Route oder des Zeitplans einer bereits bestätigten Sendung. Gründe dafür können Störungen, Kundenwünsche oder logistische Probleme sein. | ||
| Warum das wichtig ist Umleitungen führen häufig zu höheren Kosten und Verzögerungen. Wenn Sie Häufigkeit und Gründe für Umleitungen ermitteln, können Sie die Planungsgenauigkeit und die Stabilität des Betriebs verbessern. Woher beziehen Dieses Ereignis lässt sich anhand wesentlicher Änderungen an Etappen, Orten oder Terminen in einem Freight Order erkennen, nachdem die Ausführung begonnen hat. Dazu können Änderungsbelege in den Tabellen CDHDR und CDPOS analysiert werden. Erfassung Ermitteln Sie Änderungen an wichtigen Routenfeldern im Freight Order nach dem Ereignis „Sendung vom Frachtführer bestätigt“. Ereignistyp inferred | |||
| Sendung vom Frachtführer bestätigt | Dieses Ereignis zeigt an, dass der Frachtführer der geplanten Durchführung des Transports zugestimmt hat. Die Bestätigung geht üblicherweise per EDI-Nachricht, über eine Aktualisierung im Frachtführerportal oder durch manuelle Eingabe ein und aktualisiert den Status des Freight Order. | ||
| Warum das wichtig ist Mit der Bestätigung verpflichtet sich der Frachtführer zur Durchführung des Sendungsplans, wodurch Unsicherheit abnimmt. Verzögert sich die Bestätigung, kann der gesamte Sendungszeitplan gefährdet sein. Woher beziehen Das Ereignis lässt sich aus einer Änderung des Bestätigungsstatus im Freight Order oder Freight Booking ableiten. In der Statusverwaltung des Belegs wird dann beispielsweise der Status „Bestätigt“ gesetzt. Erfassung Verfolgen Sie Änderungen der Bestätigungsstatusfelder im Freight Order. Ereignistyp inferred | |||
| Zollabfertigung abgeschlossen | Diese Aktivität zeigt an, dass die Zollbehörden die Sendung freigegeben haben und sie weitertransportiert werden kann. Für die internationale Logistik ist dies ein wichtiger Meilenstein, da ein erheblicher möglicher Engpass entfällt. | ||
| Warum das wichtig ist Die Zollabfertigung ist häufig eine wesentliche Ursache für Verzögerungen in globalen Lieferketten. Um internationale Transportzeiten zu verbessern, sollten Dauer und Erfolgsquote dieser Aktivität verfolgt werden. Woher beziehen Das Ereignis wird als Ausführungsereignis „Zollabfertigung“ erfasst. Üblicherweise meldet es ein Zollagent oder ein externer Anbieter für Sendungstransparenz; anschließend wird es in der Ausführungsverfolgung des Freight Order aktualisiert. Erfassung Verwenden Sie den Timestamp des gemeldeten Ausführungsereignisses „Zollabfertigung“ für den Freight Order. Ereignistyp explicit | |||
| Zollanmeldung eingereicht | Bei internationalen Sendungen steht diese Aktivität für die Übermittlung der erforderlichen Zolldokumente an die Behörden. Sie ist Voraussetzung für die Freigabe der Waren zur Ein- oder Ausfuhr. | ||
| Warum das wichtig ist Zollanmeldungen rechtzeitig einzureichen ist entscheidend, um Verzögerungen an den Grenzen zu vermeiden. Anhand dieser Aktivität lässt sich die Effizienz der Zollabwicklung überwachen. Woher beziehen Dieses Ereignis kann als spezifisches Ausführungsereignis erfasst werden, das ein Zollagent meldet, oder aus einer Statusänderung in einem integrierten Zollverwaltungssystem wie SAP GTS abgeleitet werden. Der Freight Order wird entsprechend aktualisiert. Erfassung Erfassen Sie den Timestamp des Ausführungsereignisses „Zollanmeldung eingereicht“ oder einer entsprechenden Statusänderung. Ereignistyp explicit | |||
Anleitungen zur Datenextraktion
Schritte
- CDS-View-APIs ermitteln und aktivieren: Melden Sie sich bei Ihrem SAP-S/4HANA-System an. Prüfen Sie mit der Transaktion
/IWFND/MAINT_SERVICE, ob die erforderlichen OData-Services für die zentralen CDS-Views aktiv sind. Prüfen Sie insbesondere Services zu I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder und I_FreightSettlementDocument. Sind sie nicht aktiv, bitten Sie Ihre SAP-Administration, sie im Backend-System hinzuzufügen und zu aktivieren. - API-Verbindung einrichten: Lassen Sie sich von Ihrer SAP-Administration die Basis-URL der OData-Services geben. Richten Sie eine Client-Anwendung ein, zum Beispiel ein Python-Skript mit der Bibliothek requests, ein kommerzielles ETL-Tool oder Postman, um eine Verbindung zur API herzustellen. Konfigurieren Sie die Authentifizierung, in der Regel mit Basic Authentication (Benutzername und Passwort) oder für eine sicherere Verbindung mit OAuth 2.0.
- Umfang der Extraktion festlegen: Bestimmen Sie, welche Daten extrahiert werden sollen. Legen Sie einen Zeitraum fest, zum Beispiel die letzten 6 Monate. Wählen Sie die relevanten Organisationseinheiten aus, etwa den Buchungskreis, oder bestimmte Belegarten wie den Frachtauftragsart, damit die Daten zum analysierten Prozess passen.
- Abfrage für Sendungen erstellen: Fragen Sie zunächst die CDS-View I_TransportationOrder ab. Sie bildet das zentrale Objekt für Sendungen, auch als Freight Orders oder Freight Bookings bezeichnet. Wählen Sie mit dem OData-Parameter
$selectdie benötigten Spalten aus, darunter die empfohlenen Attribute wie CarrierName, ModeOfTransport und RequestedDeliveryDate. Begrenzen Sie die Daten mit$filternach Datum und weiteren Kriterien. - Ausführungs- und Transportereignisse abfragen: Extrahieren Sie wichtige Logistikereignisse über die CDS-View C_TranspOrdExecutionEvent. Filtern Sie nach bestimmten Werten für
EventCode, die Aktivitäten wie „Ware abgeholt“ (DEPARTURE) und „Ware zugestellt“ (ARRIVAL_AT_DESTINATION) entsprechen. Verknüpfen Sie diese Daten über die UUID des Transportauftrags mit den Daten der Sendungsabfrage. - Zugehörige Geschäftsobjekte abfragen: Für den vollständigen Prozess müssen Sie weitere zugehörige CDS-Views abfragen. Verwenden Sie I_ForwardingOrder für die Aktivität „Transportanfrage eingegangen“ und I_FreightSettlementDocument für finanzielle Aktivitäten wie „Frachtabrechnung erstellt“, „Frachtreklamation erstellt“ und „Rechnung geprüft“.
- Aktivitäten anhand von Statusänderungen extrahieren: Viele Aktivitäten sind keine einzelnen Ereignisse, sondern Statusänderungen am Hauptbeleg. Für Aktivitäten wie „Frachtführer zugewiesen“, „Sendung vom Frachtführer bestätigt“ und „Sendung storniert“ fragen Sie die View I_TransportationOrder ab und verwenden den Wert
LastChangeDateTimedes jeweiligen Statusfelds als Ereigniszeitpunkt. Dazu müssen Statuscodes sorgfältig den Geschäftsaktivitäten zugeordnet werden. - Daten zusammenführen und transformieren: Fassen Sie die aus allen Quellen extrahierten Daten in einer gemeinsamen Event-Log-Struktur zusammen. Erstellen Sie für jede extrahierte Aktivität eine Zeile mit den erforderlichen Spalten ShipmentId, ActivityName und EventTime. Stellen Sie sicher, dass jede Zeile der jeweiligen Sendung alle empfohlenen Attribute aus der Basisabfrage enthält. Dieser Schritt entspricht konzeptionell einer SQL-Operation
UNION ALL. - Komplexe und externe Ereignisse berücksichtigen: Bei Aktivitäten wie „Zollabfertigung abgeschlossen“ oder „Zahlung verarbeitet“ können die Daten in bestimmten Feldern oder sogar in externen Systemen liegen. Die bereitgestellte Abfragelogik verwendet ersatzweise Standardfelder. Möglicherweise müssen Sie die Abfrage um Verknüpfungen mit zollspezifischen CDS-Views erweitern oder Zahlungsdaten anhand der Nummer des Frachtabrechnungsbelegs mit einer separaten ERP-Extraktion abgleichen.
- Daten für ProcessMind formatieren: Speichern Sie den zusammengeführten Datensatz als CSV-Datei. Achten Sie darauf, dass die Spaltenüberschriften den Upload-Anforderungen entsprechen. Ordnen Sie beispielsweise in den Tool-Einstellungen die Spalte
ShipmentIddem FeldCaseIdzu. Prüfen Sie, ob alle Zeitstempel ein einheitliches Format haben, vorzugsweise UTC (YYYY-MM-DDTHH:MM:SSZ).
Konfiguration
- Zentrale CDS-Views: Die Extraktion basiert hauptsächlich auf I_TransportationOrder (für Frachtaufträge), C_TranspOrdExecutionEvent (für Ausführungsereignisse), I_ForwardingOrder (für Transportanfragen) und I_FreightSettlementDocument (für die Abrechnung).
- Filter für den Zeitraum: Ein Datumsfilter ist entscheidend, um das Datenvolumen zu begrenzen. Verwenden Sie CreationDateTime in I_TransportationOrder oder ActualBusinessDateTime in C_TranspOrdExecutionEvent. Für eine erste Analyse empfiehlt sich ein Zeitraum von 3 bis 6 Monaten.
- Filter für Belegarten: Begrenzen Sie die Analyse über das Feld
TransportationOrderTypeauf bestimmte Belegarten. So lassen sich unterschiedliche Logistikszenarien wie Standard-Ausgangssendungen und Umlagerungen getrennt betrachten. - Organisationsfilter: Filtern Sie bei Bedarf nach
PurchasingOrganizationoder anderen Feldern auf Organisationsebene, um die Daten auf eine Geschäftseinheit oder Region zu beschränken. - API-Paginierung: Verwenden Sie bei großen Datensätzen die OData-Parameter
$topund$skip, um die Daten in kleineren Seiten abzurufen. So vermeiden Sie API-Zeitüberschreitungen und senken den Speicherbedarf auf der Client-Seite. Eine Seitengröße von 1.000 bis 5.000 Zeilen ist oft geeignet. - Voraussetzungen: Das Benutzer- oder Servicekonto für die Extraktion benötigt Berechtigungen für die zugrunde liegenden OData-Services (Berechtigungsobjekt S_SERVICE) und die Geschäftsdaten in den CDS-Views. Die entsprechenden Services müssen im SAP Gateway (
/IWFND/MAINT_SERVICE) aktiviert sein.
a Beispielabfrage sql
WITH Shipments AS (
SELECT
TransportationOrder AS ShipmentId,
CarrierName,
TranspOrdExecutionBlockRsnCode,
TransportationMode AS ModeOfTransport,
ShippingType AS ShipmentType,
CreationDateTime AS ShipmentCreationTime,
LastChangeDateTime,
LifeCycleStatus,
ConfirmationStatus,
OverallExecutionStatus,
DeliveryOverallStatus,
PlannedDepDateTimeReqByCust AS RequestedDeliveryDate,
TotalChargesAmountInTransacCrcy AS TotalFreightCost
FROM I_TransportationOrder
WHERE
CreationDateTime >= '[START_DATE]' AND CreationDateTime <= '[END_DATE]'
-- AND TransportationOrderType IN ('[Your_Type_1]', '[Your_Type_2]')
)
SELECT
fwo.PurchasingDocument AS ShipmentId,
'Transportation Request Received' AS ActivityName,
fwo.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM I_ForwardingOrder AS fwo
LEFT JOIN Shipments s ON fwo.PurchasingDocument = s.ShipmentId
WHERE fwo.CreationDateTime >= '[START_DATE]' AND fwo.CreationDateTime <= '[END_DATE]'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Planned' AS ActivityName,
s.ShipmentCreationTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
UNION ALL
SELECT
s.ShipmentId,
'Carrier Assigned' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CarrierName IS NOT NULL
UNION ALL
SELECT
s.ShipmentId,
'Shipment Confirmed By Carrier' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Best approximation using last change time
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.ConfirmationStatus = 'C' -- 'Confirmed'
UNION ALL
SELECT
s.ShipmentId,
'Goods Picked Up' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'DEPARTURE'
UNION ALL
SELECT
s.ShipmentId,
'Customs Declaration Filed' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsRelevance IS NOT NULL -- This is a proxy, system config dependent
UNION ALL
SELECT
s.ShipmentId,
'Customs Cleared' AS ActivityName,
s.LastChangeDateTime AS EventTime, -- Approximation based on status change
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.CustomsOverallStatus = '4' -- 'Customs Cleared'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Rerouted' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.TranspOrdExecutionBlockRsnCode = '[Your Rerouting Reason Code]'
UNION ALL
SELECT
s.ShipmentId,
'Goods Delivered' AS ActivityName,
evt.ActualBusinessDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM C_TranspOrdExecutionEvent AS evt
JOIN Shipments s ON evt.TransportationOrder = s.ShipmentId
WHERE evt.EventCode = 'ARRIVAL_AT_DESTINATION'
UNION ALL
SELECT
s.ShipmentId,
'Proof Of Delivery Received' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.DeliveryOverallStatus = 'C' -- 'POD Received'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Settlement Created' AS ActivityName,
fsd.CreationDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Freight Dispute Created' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.DisputeStatus = '1' -- 'In Dispute'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Invoice Verified' AS ActivityName,
fsd.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.OverallLifeCycleStatus = '06' -- 'Posted for Accruals'
UNION ALL
SELECT
s.ShipmentId,
'Shipment Cancelled' AS ActivityName,
s.LastChangeDateTime AS EventTime,
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
s.TotalFreightCost
FROM Shipments AS s
WHERE s.LifeCycleStatus = 'X' -- 'Cancelled'
UNION ALL
SELECT
fsd.SourceDocument AS ShipmentId,
'Payment Processed' AS ActivityName,
fsd.LastChangeDateTime AS EventTime, -- Approximation, actual payment is in ERP
s.CarrierName,
s.ModeOfTransport,
s.RequestedDeliveryDate,
fsd.TotalAmount AS TotalFreightCost
FROM I_FreightSettlementDocument AS fsd
JOIN Shipments s ON fsd.SourceDocument = s.ShipmentId
WHERE fsd.InvoiceProcessingStatus = 'C' -- 'Completely Invoiced' Schritte
- Stellen Sie sicher, dass ein genehmigter SQL-Client, eine Datenbank-View oder ein Extraktionsservice direkten Lesezugriff auf das SAP-TM-HANA-Schema ermöglicht. Lassen Sie sich die Verbindungszeichenfolge, Zugangsdaten, den Schemanamen und die erforderlichen Berechtigungen zum Lesen der relevanten SAP-TM-Tabellen geben. Fragen Sie das Produktivsystem nicht ohne die erforderlichen Sicherheits- und Änderungsfreigaben direkt ab.
- Prüfen Sie die tatsächlichen Tabellen- und Spaltennamen in Ihrem System. Die folgende Abfrage verwendet /SCMTMS/D_TORROT und /SCMTMS/D_TOSTOP als zentrale Tabellen. Status-, Partner-, Datums-, Kosten-, Zoll-, Beleg- und Zahlungsdaten können je nach SAP-TM-Version und Implementierung jedoch in weiteren Tabellen oder Erweiterungen gespeichert sein. Ersetzen Sie Platzhalter nur, nachdem Sie sie anhand des Systemkatalogs und Datenmodells überprüft haben.
- Legen Sie den Extraktionszeitraum mit [Start timestamp] und [End timestamp] fest. Für eine erste Analyse eignet sich in der Regel ein rollierender Zeitraum von drei bis sechs Monaten. Verwenden Sie einen längeren Zeitraum erst, nachdem Sie die Abfrageleistung und die Aufbewahrungsdauer der Ereignishistorie geprüft haben.
- Bestimmen Sie den Schlüssel für den Sendungs-Case. Die Abfrage verwendet TOR_ID aus /SCMTMS/D_TORROT als Sendungskennung. Verwendet Ihre Implementierung eine andere stabile Kennung, ersetzen Sie den Case-Schlüssel in allen Aktivitätszweigen einheitlich. Bewahren Sie die ursprüngliche Belegkennung, sofern verfügbar, als zusätzliches Audit-Attribut auf.
- Ordnen Sie jeder Geschäftsaktivität eine eindeutige Quellbedingung zu. ProcessMind übernimmt das Event Log unverändert. Die Abfrage erstellt daher für jede extrahierte Aktivität eine Zeile. Meilensteine werden nicht aus der Belegreihenfolge, fehlenden Zeitstempeln oder Statusverläufen abgeleitet.
- Prüfen Sie die Zuordnung von Status und Zeitstempeln gemeinsam mit Transportplanern und Prozessverantwortlichen. Klären Sie insbesondere, welche Werte für Anfrageerstellung, Planung, Frachtführerzuweisung und -bestätigung, Abholung, Zollanmeldung und Zollabfertigung, Umleitung, Zustellung, POD-Eingang, Frachtabrechnung, Reklamation, Rechnungsprüfung, Stornierung und Zahlung stehen.
- Führen Sie die Abfrage im genehmigten SQL-Client aus. Prüfen Sie, ob pro Ereignis eine Zeile mit einer nicht leeren ShipmentId, einer nicht leeren ActivityName und einem gültigen EventTime vorliegt. Achten Sie auf doppelte Zeilen durch 1:n-Verknüpfungen und passen Sie bei Bedarf die Quellzuordnungen oder Aggregationslogik an.
- Ergänzen Sie die empfohlenen Attribute, sofern die entsprechenden Quellfelder verfügbar sind. Die Abfrage enthält Platzhalter für Felder, deren Namen sich ohne systemspezifische Metadaten nicht zuverlässig angeben lassen. Ersetzen Sie diese nur durch geprüfte Spalten oder genehmigte Views.
- Wenden Sie abschließend die Regeln zur Datenqualität an. Entfernen Sie Zeilen ohne Case-Kennung oder Ereigniszeitstempel, vereinheitlichen Sie die Zeitzone der Zeitstempel, bewahren Sie die Quellzeitstempel zu Prüfzwecken auf und stellen Sie sicher, dass EndTime nicht vor EventTime liegt. Erzeugen Sie keine künstlichen Ereignisse für fehlende Quelldatensätze.
- Exportieren Sie das Ergebnis als UTF-8-CSV oder in einem anderen von ProcessMind unterstützten Tabellenformat. Verwenden Sie exakt die erforderlichen Spaltennamen ShipmentId, ActivityName und EventTime. Fügen Sie EndTime und die empfohlenen Attribute hinzu, sofern sie befüllt sind. Laden Sie die Datei hoch oder verbinden Sie das genehmigte Abfrageergebnis mit ProcessMind. Prüfen Sie anschließend, ob die Felder für die Sendungskennung und den Aktivitätsnamen korrekt zugeordnet sind.
Konfiguration
- Zentrale Quelltabellen: Verwenden Sie /SCMTMS/D_TORROT für Kopfdaten von Transport- oder Frachtaufträgen und /SCMTMS/D_TOSTOP für Stopp- und Meilensteindaten. Prüfen Sie alle weiteren Quellobjekte vor der Bereitstellung im jeweiligen SAP-TM-Zielsystem.
- Case-Kennung: Verwenden Sie eine stabile Sendungs- oder Frachtauftragskennung. Die Beispielabfrage verwendet TOR_ID als ShipmentId. Stellen Sie sicher, dass diese Kennung bei Planung, Ausführung, Abrechnung und ERP-Zahlungsdatensätzen stabil bleibt.
- Aktivitätszuordnung: Richten Sie für alle 15 erforderlichen Aktivitäten eindeutige Quellbedingungen ein. Jede Aktivität muss als eigene Zeile im Event Log ausgegeben werden. ProcessMind leitet Aktivitäten nicht aus anderen Zeilen ab.
- Zeitraum: Beginnen Sie mit drei bis sechs Monaten Historie. Verwenden Sie in jedem Quellzweig so früh wie möglich EventTime-Bedingungen. Nutzen Sie für inkrementelle Ladevorgänge einen kontrollierten Wasserstand und ein kurzes Überlappungsfenster, damit verspätete Aktualisierungen erfasst werden.
- Geschäftsfilter: Richten Sie Filter für Buchungskreis, Einkaufsorganisation, Verkaufsorganisation, Belegart, Transportart, Frachtführer, Werk, Standort und Status entsprechend der Implementierung ein. Verwenden Sie Platzhalter wie [Company code filter], wenn das zutreffende Feld noch nicht verifiziert ist.
- Umgang mit Zeitstempeln: Vereinheitlichen Sie die Zeitzone der Quellzeitstempel. Wenn eine Quelle Datum und Uhrzeit in getrennten Feldern speichert, führen Sie diese mit der für die jeweilige HANA-Version unterstützten systemspezifischen Konvertierung zusammen. Bewahren Sie den ursprünglichen Quellzeitstempel auf, wenn Auditierbarkeit erforderlich ist.
- Empfohlene Attribute: Befüllen Sie CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost und IsOnTimeDelivery anhand geprüfter Quellfelder oder genehmigter Berechnungs-Views. Lassen Sie Werte leer, wenn die Quelle keinen verlässlichen Wert enthält.
- Leistung: Begrenzen Sie den Zeitraum, wählen Sie nur erforderliche Spalten aus, filtern Sie vor Verknüpfungen, vermeiden Sie uneingeschränkte Volltabellenscans und prüfen Sie den HANA-Ausführungsplan. Bei großen Datensätzen helfen partitionsgerechte Bedingungen, inkrementelle Extraktion, Staging-Tabellen oder eine genehmigte Berechnungs-View.
- Duplikate vermeiden: 1:n-Verknüpfungen können mehrere Zeilen für eine Aktivität erzeugen. Verwenden Sie einen geprüften Ereignisschlüssel, Quellbelegschlüssel oder eine deterministische Aggregationsregel. Entfernen Sie Duplikate nicht willkürlich, da sonst legitime wiederholte Ereignisse verloren gehen können.
- Voraussetzungen: Erforderlich sind Datenbankberechtigungen, Zugriff auf SAP-TM-Daten und gegebenenfalls verbundene ERP- oder Abrechnungsdaten, genehmigte Extraktionswerkzeuge sowie die Bestätigung, dass die relevanten SAP-TM-Module, Integrationen und kundenspezifischen Erweiterungen aktiv sind.
- Systemspezifische Zuordnung: Statuscodes, Partnerrollen, Zollmeilensteine, Abrechnungsstatus, Rechnungsstatus und Zahlungsstatus unterscheiden sich je nach Version und Konfiguration. Dokumentieren Sie die Zuordnungen kontrolliert und testen Sie sie nach Upgrades.
a Beispielabfrage sql
WITH
base_tor AS (
SELECT
r.TOR_ID AS ShipmentId,
r.TOR_ID AS SourceDocumentId,
r.CREATED_AT AS RequestEventTime,
r.CREATED_AT AS PlannedEventTime,
r.CREATED_AT AS CarrierAssignedEventTime,
r.CREATED_AT AS CarrierConfirmedEventTime,
r.CREATED_AT AS PickupEventTime,
r.CREATED_AT AS CustomsFiledEventTime,
r.CREATED_AT AS CustomsClearedEventTime,
r.CREATED_AT AS ReroutedEventTime,
r.CREATED_AT AS DeliveredEventTime,
r.CREATED_AT AS PodReceivedEventTime,
r.CREATED_AT AS SettlementCreatedEventTime,
r.CREATED_AT AS DisputeCreatedEventTime,
r.CREATED_AT AS InvoiceVerifiedEventTime,
r.CREATED_AT AS CancelledEventTime,
r.CREATED_AT AS PaymentProcessedEventTime,
r.CREATED_AT AS EndTime,
CAST(NULL AS NVARCHAR(255)) AS CarrierName,
CAST(NULL AS TIMESTAMP) AS RequestedDeliveryDate,
CAST(NULL AS NVARCHAR(50)) AS ModeOfTransport,
CAST(NULL AS DECIMAL(19, 2)) AS TotalFreightCost,
CAST(NULL AS NVARCHAR(5)) AS IsOnTimeDelivery
FROM "/SCMTMS/D_TORROT" r
WHERE r.CREATED_AT >= TO_TIMESTAMP('[Start timestamp]')
AND r.CREATED_AT < TO_TIMESTAMP('[End timestamp]')
AND ('[Company code filter]' = '[Company code filter]' OR r.TOR_ID IS NOT NULL)
),
stop_data AS (
SELECT
s.TOR_ID AS ShipmentId,
MIN(s.STOP_SEQ) AS FirstStopSequence,
MAX(s.STOP_SEQ) AS LastStopSequence
FROM "/SCMTMS/D_TOSTOP" s
GROUP BY s.TOR_ID
),
source_data AS (
SELECT
b.ShipmentId,
b.SourceDocumentId,
b.RequestEventTime,
b.PlannedEventTime,
b.CarrierAssignedEventTime,
b.CarrierConfirmedEventTime,
b.PickupEventTime,
b.CustomsFiledEventTime,
b.CustomsClearedEventTime,
b.ReroutedEventTime,
b.DeliveredEventTime,
b.PodReceivedEventTime,
b.SettlementCreatedEventTime,
b.DisputeCreatedEventTime,
b.InvoiceVerifiedEventTime,
b.CancelledEventTime,
b.PaymentProcessedEventTime,
b.EndTime,
b.CarrierName,
b.RequestedDeliveryDate,
b.ModeOfTransport,
b.TotalFreightCost,
CASE
WHEN b.DeliveredEventTime IS NOT NULL
AND b.RequestedDeliveryDate IS NOT NULL
AND b.DeliveredEventTime <= b.RequestedDeliveryDate THEN 'true'
WHEN b.DeliveredEventTime IS NOT NULL
AND b.RequestedDeliveryDate IS NOT NULL THEN 'false'
ELSE NULL
END AS IsOnTimeDelivery
FROM base_tor b
LEFT JOIN stop_data s
ON s.ShipmentId = b.ShipmentId
),
event_log AS (
SELECT ShipmentId, 'Transportation Request Received' AS ActivityName, RequestEventTime AS EventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE RequestEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Planned', PlannedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PlannedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Carrier Assigned', CarrierAssignedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CarrierAssignedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Confirmed By Carrier', CarrierConfirmedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CarrierConfirmedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Goods Picked Up', PickupEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PickupEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Customs Declaration Filed', CustomsFiledEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CustomsFiledEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Customs Cleared', CustomsClearedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CustomsClearedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Rerouted', ReroutedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE ReroutedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Goods Delivered', DeliveredEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE DeliveredEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Proof Of Delivery Received', PodReceivedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PodReceivedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Freight Settlement Created', SettlementCreatedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE SettlementCreatedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Freight Dispute Created', DisputeCreatedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE DisputeCreatedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Invoice Verified', InvoiceVerifiedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE InvoiceVerifiedEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Shipment Cancelled', CancelledEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE CancelledEventTime IS NOT NULL
UNION ALL
SELECT ShipmentId, 'Payment Processed', PaymentProcessedEventTime, EndTime, CarrierName, RequestedDeliveryDate, ModeOfTransport, TotalFreightCost, IsOnTimeDelivery, SourceDocumentId FROM source_data WHERE PaymentProcessedEventTime IS NOT NULL
)
SELECT
ShipmentId,
ActivityName,
EventTime,
EndTime,
CarrierName,
RequestedDeliveryDate,
ModeOfTransport,
TotalFreightCost,
IsOnTimeDelivery,
SourceDocumentId
FROM event_log
WHERE ShipmentId IS NOT NULL
AND EventTime IS NOT NULL
ORDER BY ShipmentId, EventTime, ActivityName; Schritte
- Datenanforderungen festlegen: Klären Sie zunächst die genaue Logik für jede der 15 erforderlichen Aktivitäten und alle Attribute. Ordnen Sie dazu jede Aktivität bestimmten Statusänderungen, Erstellungsereignissen oder Belegverknüpfungen in Ihrem SAP-TM-System zu. Ermitteln Sie beispielsweise den genauen Ausführungsstatus, der „Ware abgeholt“ bedeutet.
- ABAP-Entwicklungsumgebung öffnen: Melden Sie sich an der SAP GUI an und öffnen Sie mit dem Transaktionscode
SE38den ABAP Editor. Geben Sie einen Namen für das neue Programm ein, zum BeispielZTM_PROCESS_EXTRACT, und wählen Sie „Anlegen“. Tragen Sie einen Titel ein und legen Sie als Programmtyp „Ausführbares Programm“ fest. - Selektionsbild erstellen: Definieren Sie im Programm das Selektionsbild, das Benutzer sehen. Es sollte Parameter zur Filterung der Daten enthalten, etwa einen Zeitraum für das Erstellungsdatum des Frachtauftrags (
SO_CREDT) sowie Select-Options für Belegarten (SO_TYPE) oder Frachtführer (SO_CARR). - Ausgabestruktur definieren: Definieren Sie eine interne Tabellenstruktur, die dem erforderlichen Event-Log-Format entspricht. Sie sollte die Felder
ShipmentId,ActivityName,EventTime,EndTime,CarrierName,RequestedDeliveryDate,ModeOfTransport,TotalFreightCostundIsOnTimeDeliveryenthalten. - Datenauswahl implementieren: Schreiben Sie die ABAP-Hauptlogik, um Daten für jede der 15 Aktivitäten auszuwählen. Dazu werden in der Regel mehrere SAP-TM-Tabellen abgefragt. Wählen Sie zunächst die primären Sendungsbelege, etwa Frachtaufträge, innerhalb des festgelegten Zeitraums aus.
- Planungs- und Ausführungsereignisse extrahieren: Fragen Sie für jeden ausgewählten Sendungsbeleg, zum Beispiel einen Frachtauftrag, die zugehörigen Tabellen und Geschäftsobjekte ab, um die Zeitstempel der verschiedenen Ereignisse zu ermitteln. Verwenden Sie die Tabelle
/SCMTMS/D_TORROTfür die Erstellung des Frachtauftrags („Sendung geplant“), die Zuweisung des Frachtführers („Frachtführer zugewiesen“) und Statusänderungen, die „Ware abgeholt“ und „Ware zugestellt“ entsprechen. Die Erstellung des vorangehenden Speditionsauftrags (/SCMTMS/D_TRQROT) kann als „Transportanfrage eingegangen“ gelten. - Frachtführerbestätigung und Umleitung extrahieren: Fragen Sie Statustabellen oder Änderungsbelege (CDHDR/CDPOS) zum Frachtauftrag ab, um festzustellen, wann der Status
CONFIRMATIONgesetzt wurde. Damit wird „Sendung vom Frachtführer bestätigt“ erfasst. Suchen Sie ebenso nach wesentlichen Änderungen an den Routendaten, um „Sendung umgeleitet“ zu erfassen. - Zollereignisse extrahieren: Wenn Sie SAP Global Trade Services (GTS) oder ein ähnliches Modul verwenden, werden Zollereignisse („Zollanmeldung eingereicht“, „Zollabfertigung abgeschlossen“) häufig in verknüpften Belegen erfasst. Die Logik muss den Belegfluss (
/SCMTMS/D_TORDOC) des Frachtauftrags auslesen, um diese Belege sowie ihre Erstellungs- oder Statusänderungszeitpunkte zu finden. - Abrechnungs- und Reklamationsereignisse extrahieren: Fragen Sie die Kopftabelle für Frachtabrechnungsbelege (
/SCMTMS/D_SFIRHD) sowie die zugehörigen Positionen und Status ab, um die Ereignisse „Frachtabrechnung erstellt“, „Frachtreklamation erstellt“ und „Rechnung geprüft“ zu erfassen. Verknüpfen Sie diese mit der ursprünglichenShipmentId. - Daten zusammenführen: Erstellen Sie für jedes gefundene Ereignis einen neuen Datensatz in der finalen internen Tabelle. Befüllen Sie
ActivityNamemit der entsprechenden Aktivität,EventTimemit dem Ereigniszeitstempel undShipmentIdmit der Frachtauftrags- oder Frachtbuchungs-ID. Übernehmen Sie die übrigen Attribute aus den Quelldokumenten. - Datei formatieren und exportieren: Formatieren Sie die Daten nach dem Befüllen der internen Tabelle als flache Datei. Schreiben Sie den Inhalt mit den Befehlen
OPEN DATASET,LOOP AT... TRANSFER...undCLOSE DATASETin eine CSV- oder TXT-Datei auf dem SAP-Applikationsserver, auf den Sie über die Transaktion AL11 zugreifen können. - Einplanen und abrufen: Sie können das ABAP-Programm als Hintergrundjob einplanen (Transaktion SM36), um die Daten automatisch zu extrahieren. Laden Sie die erzeugte Datei anschließend mit der Transaktion
CG3Yvom Applikationsserver auf einen lokalen Rechner herunter und laden Sie sie in ProcessMind hoch.
Konfiguration
- Zeitraum: Das Selektionsbild sollte einen verpflichtenden Zeitraum für das Erstellungsdatum des zentralen Transportbelegs enthalten, zum Beispiel des Frachtauftrags. Für eine erste Analyse empfiehlt sich ein Zeitraum von 3 bis 6 Monaten. So erhalten Sie einen repräsentativen Datensatz, ohne die Laufzeit unnötig zu verlängern.
- Belegartenfilter: Stellen Sie einen Filter für die Transportbelegart bereit, zum Beispiel Frachtauftrag oder Frachtbuchung. So können Sie gezielt bestimmte Prozesse wie Straßengüterverkehr oder Seefracht analysieren.
- Frachtführerfilter: Ermöglichen Sie die Filterung nach bestimmten Frachtführern. Damit lässt sich die Leistung einzelner Logistikpartner analysieren.
- Organisationsfilter: Nehmen Sie Filter für relevante Organisationseinheiten wie Einkaufsorganisation oder Buchungskreis auf, um die Extraktion auf bestimmte Geschäftsbereiche zu begrenzen.
- Leistungsoptimierung: Stellen Sie bei großen Datensätzen sicher, dass der ABAP-Code indizierte Datenbankfelder in
WHERE-Klauseln verwendet, verschachtelte Schleifen nach Möglichkeit vermeidet und nur die erforderlichen Datenbankfelder auswählt, um den Speicherbedarf zu senken. - Voraussetzungen: Der ausführende Benutzer benötigt die Berechtigung, ABAP-Programme auszuführen. Entwickler benötigen die Berechtigung
S_DEVELOP. Das Programm selbst benötigt Berechtigungen für den Dateisystemzugriff auf dem Applikationsserver (ObjektS_DATASET) sowie Zugriff auf die relevanten TM-Datenbanktabellen und BOPF-Objekte.
a Beispielabfrage abap
REPORT ztm_process_extract.
*&---------------------------------------------------------------------*
*& Data Structures
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_s_event_log,
shipmentid TYPE /scmtms/tor_id,
activityname TYPE string,
eventtime TYPE timestamp,
endtime TYPE timestamp,
carriername TYPE string,
requesteddeliverydate TYPE timestamp,
modeoftransport TYPE /scmtms/mot,
totalfreightcost TYPE /scmtms/chargeable_weight,
isontimedelivery TYPE abap_bool,
END OF ty_s_event_log.
DATA: lt_event_log TYPE TABLE OF ty_s_event_log.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: so_credt FOR sy-datum OBLIGATORY.
SELECT-OPTIONS: so_torid FOR /scmtms/d_torrot-tor_id.
SELECT-OPTIONS: so_carr FOR /scmtms/d_torrot-lsp_id.
*&---------------------------------------------------------------------*
*& Main Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
DATA: ls_event_log TYPE ty_s_event_log.
" Select base data: Freight Orders (Shipments)
SELECT tor_id, tor_cat, lsp_id, mot_code, cretd_tst, btd_tstmp_end
FROM /scmtms/d_torrot
INTO TABLE @DATA(lt_tor_root)
WHERE CAST( cretd_tst AS DATS ) IN @so_credt
AND tor_id IN @so_torid
AND lsp_id IN @so_carr.
IF lt_tor_root IS INITIAL.
MESSAGE 'No data found for the given selection.' TYPE 'S' DISPLAY LIKE 'E'.
RETURN.
ENDIF.
" Loop through each shipment to build the event log
LOOP AT lt_tor_root INTO DATA(ls_tor_root).
" 1. Transportation Request Received (Approximation from FWO creation)
SELECT SINGLE created_at_utc FROM /scmtms/d_trqrot
WHERE db_key IN ( SELECT trq_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'TRQ_ROOT' )
INTO @DATA(lv_trq_created_ts).
IF sy-subrc = 0.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Transportation Request Received'.
ls_event_log-eventtime = lv_trq_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 2. Shipment Planned
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Planned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst.
APPEND ls_event_log TO lt_event_log.
" 3. Carrier Assigned
IF ls_tor_root-lsp_id IS NOT INITIAL.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Carrier Assigned'.
ls_event_log-eventtime = ls_tor_root-cretd_tst. " Approximated with creation time
APPEND ls_event_log TO lt_event_log.
ENDIF.
" Get statuses from /SCMTMS/D_TORSTA
SELECT status, tstmp FROM /scmtms/d_torsta
INTO TABLE @DATA(lt_statuses)
WHERE parent_key = @ls_tor_root-db_key.
" 4. Shipment Confirmed By Carrier
READ TABLE lt_statuses WITH KEY status = 'CONFIRMED' INTO DATA(ls_conf_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Confirmed By Carrier'.
ls_event_log-eventtime = ls_conf_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 5. Goods Picked Up
READ TABLE lt_statuses WITH KEY status = 'LOADING_END' INTO DATA(ls_pickup_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Picked Up'.
ls_event_log-eventtime = ls_pickup_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 6. Customs Declaration Filed (Placeholder logic)
" 7. Customs Cleared (Placeholder logic)
" 8. Shipment Rerouted (Placeholder logic, needs change documents)
" 9. Goods Delivered
READ TABLE lt_statuses WITH KEY status = 'UNLOADING_END' INTO DATA(ls_delivery_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Goods Delivered'.
ls_event_log-eventtime = ls_delivery_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 10. Proof Of Delivery Received
READ TABLE lt_statuses WITH KEY status = 'POD_RECEIVED' INTO DATA(ls_pod_status). " Example status
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Proof Of Delivery Received'.
ls_event_log-eventtime = ls_pod_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 11. Freight Settlement Created
SELECT SINGLE created_at_utc FROM /scmtms/d_sfirhd
WHERE db_key IN ( SELECT sfir_root_key FROM /scmtms/d_tordoc
WHERE parent_key = @ls_tor_root-db_key AND bo_node_cat = 'SFIR_ROOT' )
INTO @DATA(lv_fsd_created_ts).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Freight Settlement Created'.
ls_event_log-eventtime = lv_fsd_created_ts.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 12. Freight Dispute Created (Needs logic based on dispute status in SFIR)
" 13. Invoice Verified (Needs logic based on invoice status in SFIR)
" 14. Shipment Cancelled
READ TABLE lt_statuses WITH KEY status = 'CANCELLED' INTO DATA(ls_cancel_status).
IF sy-subrc = 0.
CLEAR ls_event_log.
ls_event_log-shipmentid = ls_tor_root-tor_id.
ls_event_log-activityname = 'Shipment Cancelled'.
ls_event_log-eventtime = ls_cancel_status-tstmp.
APPEND ls_event_log TO lt_event_log.
ENDIF.
" 15. Payment Processed (Data is typically in the ERP system, not TM)
ENDLOOP.
" Final step: Write lt_event_log to a file on the application server
DATA(lv_filepath) = '/usr/sap/trans/[YourInstance]/[YourFileName].csv'.
OPEN DATASET lv_filepath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
" Write header
DATA(lv_header) = 'ShipmentId,ActivityName,EventTime'.
TRANSFER lv_header TO lv_filepath.
" Write data
LOOP AT lt_event_log INTO ls_event_log.
DATA(lv_line) = |{ ls_event_log-shipmentid },{ ls_event_log-activityname },{ ls_event_log-eventtime }|.
TRANSFER lv_line TO lv_filepath.
ENDLOOP.
CLOSE DATASET lv_filepath.
ELSE.
MESSAGE 'Error opening file on application server.' TYPE 'E'.
ENDIF.
ENDFOR. Möchten Sie loslegen?
Mit diesem Template können Sie Ihre Transportprozesse gezielt verbessern und Lieferungen schneller und kostengünstiger abwickeln. Entdecken Sie noch heute neue Erkenntnisse!
Beseitigen Sie noch heute Engpässe im Transportmanagement
Erkennen Sie Ineffizienzen, optimieren Sie Routen und verkürzen Sie die Zykluszeit um 30 %.
Keine Kreditkarte erforderlich. In wenigen Minuten eingerichtet.