Ihr Transportation Management Daten Template
SAP Transportation ManagementIhr Transportation Management Daten Template
- Empfohlene Attribute zur Erfassung
- Wichtige Aktivitäten zur Verfolgung
- Extraktionsanleitung für SAP Transportation Management
Transportmanagement-Attribute
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivitätsname ActivityName | Der Name eines spezifischen Geschäftsereignisses oder -schritts, der innerhalb des Transportprozesses aufgetreten ist. | ||
| Beschreibung Der Bedeutung Dieses Datenquelle Dies wird typischerweise von Beispiele Versand geplantSpediteur zugeteiltWaren abgeholtWaren geliefertLiefernachweis erhalten | |||
| Ereigniszeit EventTime | Der Zeitstempel, der angibt, wann eine bestimmte Aktivität oder ein Ereignis stattgefunden hat. | ||
| Beschreibung Die Event Time liefert das genaue Datum und die Uhrzeit für jede Aktivität im Transportprozess. Diese Zeitdaten sind grundlegend für die Berechnung von Zykluszeiten, Dauern und Wartezeiten zwischen verschiedenen Prozessschritten. In der Analyse wird dieses Attribut verwendet, um Ereignisse korrekt zu sequenzieren, ein chronologisches Protokoll zu erstellen und alle zeitbasierten Leistungsanalysen durchzuführen. Es ist entscheidend für die Identifizierung von Verzögerungen, die Messung der Prozesseffizienz und die Bewertung der Leistung anhand von Zeitplänen oder Service Level Agreements. Bedeutung Der Datenquelle Stammt aus den Beispiele 2023-04-15T10:00:00Z2023-04-16T14:30:00Z2023-04-20T09:15:00Z | |||
| Lieferung ShipmentId | Die eindeutige `ID` für eine einzelne Warenbewegung, die als zentraler `Case` für die Analyse dient. | ||
| Beschreibung Die Liefer- Bedeutung Dies ist der grundlegende Datenquelle Dieser Beispiele 610000432161000056786100009876 | |||
| `Pünktliche Lieferung` IsOnTimeDelivery | Ein boolesches Flag, das anzeigt, ob die Waren am oder vor dem angeforderten Liefertermin geliefert wurden. | ||
| Beschreibung Dies ist ein berechnetes Bedeutung Misst direkt die Einhaltung von Lieferzusagen und vereinfacht die Berechnung und Visualisierung des kritischen KPIs für die Pünktlichkeit der Lieferung. Datenquelle Dieses Beispiele truefalsch | |||
| Angefordertes Lieferdatum RequestedDeliveryDate | Das vom Kunden angeforderte oder im Verkaufsauftrag festgelegte Lieferdatum und die Uhrzeit. | ||
| Beschreibung Das angeforderte Lieferdatum ist die Zieldatum für die Bedeutung Dies ist die Datenquelle Dieses Datum wird typischerweise aus dem vorhergehenden Kundenauftrag oder Umlagerungsauftrag aus Beispiele 2023-05-20T17:00:00Z2023-06-01T12:00:00Z2023-06-15T23:59:59Z | |||
| Endzeit EndTime | Der Timestamp, der anzeigt, wann eine spezifische Aktivität abgeschlossen wurde. | ||
| Beschreibung Während StartTime den Beginn eines Events anzeigt, markiert EndTime dessen Abschluss. Dies ist besonders nützlich für Aktivitäten, die eine Dauer haben, wie z.B. 'Zollabfertigung' oder 'Warenverladung'. Die Differenz zwischen EndTime und StartTime stellt die Bearbeitungszeit dieser Aktivität dar. In der Process Mining Analyse ermöglicht das Vorhandensein von Start- und Endzeit eine granularere Analyse der Aktivitätsdauern, wodurch Bearbeitungszeit von Wartezeit getrennt werden kann. Dies hilft, genau zu bestimmen, wo Ineffizienzen liegen, sei es innerhalb der Ausführung einer Aufgabe oder bei den Übergaben zwischen Aufgaben. Bedeutung Ermöglicht die präzise Berechnung von Bearbeitungszeiten für Aktivitäten, wobei die aktive Arbeitszeit von der Wartezeit zwischen Ereignissen unterschieden wird. Datenquelle Ähnlich wie Beispiele 2023-04-15T11:30:00Z2023-04-16T15:00:00Z2023-04-20T09:45:00Z | |||
| Gesamtfrachtkosten TotalFreightCost | Die gesamten berechneten oder in Rechnung gestellten Kosten für die Lieferung. | ||
| Beschreibung Die Gesamtfrachtkosten stellen die finanziellen Auswirkungen einer Sendung dar. Dies können die vom Transportmanagementsystem berechneten Kosten oder der Endbetrag der Spediteurrechnung nach der Abrechnung sein. Dieses Attribut ermöglicht die Integration der finanziellen Dimension in die Prozessanalyse. Analysten können die teuersten Prozessvarianten identifizieren, die Kosten von Verzögerungen oder Umleitungen berechnen und die Kosteneffizienz verschiedener Spediteure oder Transportmodi vergleichen. Es ist grundlegend für Dashboards, die sich auf Transportausgaben und Cost-to-Serve-Analysen konzentrieren. Bedeutung Fügt dem Prozess eine finanzielle Dimension hinzu, die die Analyse von Transportausgaben, Kosten pro Sendung und den finanziellen Auswirkungen von Prozessineffizienzen ermöglicht. Datenquelle Stammt aus dem Frachtabrechnungsdokument in Beispiele 250.751200.005430.50 | |||
| Spediteurname CarrierName | Der Name des dem Versand zugeordneten Transportunternehmens oder Logistikdienstleisters. | ||
| Beschreibung Der Spediteurname identifiziert das Unternehmen, das für den physischen Transport der Waren verantwortlich ist. Dies ist eine entscheidende Dimension für die Bedeutung Ermöglicht den Leistungsvergleich verschiedener Spediteure, was entscheidend für die Optimierung der Spediteurauswahl, Kosten und Servicelevel ist. Datenquelle Diese Informationen sind im Beispiele DHL ExpressFedEx FreightMaersk LineUnion Pacific Railroad | |||
| Transportart ModeOfTransport | Die für die Lieferung verwendete Transportmethode, wie Straße, Schiene, Luft oder See. | ||
| Beschreibung Dieses Bedeutung Ermöglicht die Analyse von Kosten, Zeit und Prozessabweichungen basierend auf dem Transportmittel, was entscheidend für die Kostenoptimierung und die Identifizierung der Nutzung von Premiumfracht ist. Datenquelle Dies ist ein Schlüsselfeld im Beispiele 01 (Straße)02 (Schiene)04 (Luft)05 (See) | |||
| Benutzername UserName | Die `User-ID` oder der Name der Person, die eine `Activity` ausgeführt hat. | ||
| Beschreibung Dieses Bedeutung Ordnet manuelle Prozessschritte bestimmten Benutzern zu und ermöglicht so die Analyse von Arbeitslast, individueller Leistung und Schulungsmöglichkeiten. Datenquelle Typischerweise in den Änderungs- oder Dokumentenkopftabellen für Transportdokumente zu finden, wie z.B. 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 für die Abholung der Waren vom Versandpunkt durch den Spediteur. | ||
| Beschreibung Das geplante Abholdatum ist die vereinbarte Zeit für den Beginn des physischen Transports. Es ist ein wichtiger Meilenstein in der Ausführungsphase der Lieferung.\n\nDieses Bedeutung Dient als Grundlage für die Messung der Abholpünktlichkeit und hilft, Verzögerungen zu Beginn des physischen Transportwegs der Sendung zu identifizieren. Datenquelle Dies ist ein geplantes Datum/Uhrzeit, das in der Stopp-Sequenz des Beispiele 2023-05-18T09:00:00Z2023-05-30T14:00:00Z2023-06-12T10:30:00Z | |||
| Herkunftsland OriginCountry | Das Land, aus dem die Lieferung stammt. | ||
| Beschreibung Dieses Bedeutung Ermöglicht eine geografische Analyse der Sendungsleistung, die dabei hilft, regionale Engpässe, Kostentreiber oder Prozessabweichungen zu identifizieren. Datenquelle Dies ist Teil der Adressinformationen für den Quellort des ersten Stopps im Beispiele DEUSCNMX | |||
| Ist beanstandet IsDisputed | Ein boolesches Flag, das anzeigt, ob die Frachtrechnung für die Sendung zu einem Streitfall führte. | ||
| Beschreibung Dieses berechnete Bedeutung Vereinfacht die Identifizierung problematischer Frachtabrechnungen und ermöglicht eine schnelle Berechnung der Streitquote und Datenquelle Dieses Beispiele truefalsch | |||
| Letzte Datenaktualisierung LastDataUpdate | Der `Timestamp` der aktuellsten `Datenextraktion` oder `Refresh` für das `Process Mining Dataset`. | ||
| Beschreibung Dieses Bedeutung Bietet entscheidenden Kontext zur Aktualität der Datenquelle Dies wird typischerweise vom Beispiele 2023-10-27T08:00:00Z2023-10-26T08:00:00Z | |||
| Lieferstatus ShipmentStatus | Der aktuelle Gesamtstatus der Lieferung zum Zeitpunkt der `Datenextraktion`. | ||
| Beschreibung Der Lieferstatus bietet eine Momentaufnahme, wo sich die Lieferung in ihrem Bedeutung Bietet ein übergeordnetes Ergebnis für jede Lieferung, was Filterung und Analyse danach ermöglicht, ob eine Lieferung abgeschlossen, storniert oder noch im Datenquelle Dies ist das Gesamtstatusfeld im Beispiele In PlanungBereit für den TransportIn AusführungAusgeführtStorniert | |||
| Lieferungs-`Cycle Time` ShipmentCycleTime | Die Gesamtdauer der Lieferung von der ersten Anfrage bis zum endgültigen `Proof of Delivery`. | ||
| Beschreibung Dies ist eine berechnete Bedeutung Misst die gesamte End-to-End-Dauer des Transportprozesses und liefert einen Schlüsselindikator für die Gesamtprozessgeschwindigkeit und -effizienz. Datenquelle Dies ist eine berechnete Beispiele 5 Tage 4 Stunden12 Tage 8 Stunden22 Stunden 30 Minuten | |||
| Quellsystem SourceSystem | Das `System`, aus dem die `Event Data` stammen. | ||
| Beschreibung Dieses Bedeutung Identifiziert den Ursprung der Daten, was entscheidend für Data Governance, Fehlerbehebung und das Verständnis der Prozessorchestrierung über mehrere Systeme hinweg ist. Datenquelle Diese Informationen werden oft als Teil des Beispiele SAP_TM_P01SAP_ERP_E01CARRIER_PORTAL_XYZ | |||
| Streitfallgrund DisputeReason | Der Grund, der bei einer strittigen Frachtrechnung angegeben wird. | ||
| Beschreibung Wenn eine Spediteurrechnung nicht den in SAP TM kalkulierten erwarteten Kosten entspricht, wird ein Disput erstellt. Dieses Attribut erfasst den Grund für diese Diskrepanz, wie z.B. 'Falscher Tarif', 'Doppelte Rechnung' oder 'Nebengebühr nicht genehmigt'. Die Analyse der Disputgründe ist entscheidend für das Dashboard 'Frachtrechnungsfehler und Disputrate'. Sie hilft, die Ursachen von Abrechnungsungenauigkeiten zu identifizieren, ob diese auf Stammdatenprobleme, Speditionsfehler oder operative Ausfälle zurückzuführen sind. Diese Erkenntnis ermöglicht es der Organisation, gezielte Maßnahmen zur Reduzierung von Disputen zu ergreifen, was wiederum den Zahlungszyklus beschleunigt und den Verwaltungsaufwand reduziert. Bedeutung Liefert die Datenquelle Diese Informationen werden im Beispiele RatenungleichheitFalsches GewichtNicht genehmigte LiegegebührDoppelte Rechnung | |||
| Verzögerungsgrund DelayReason | Ein Code oder Text, der den Grund für eine Verzögerung der Sendung erklärt. | ||
| Beschreibung Das Bedeutung Erklärt das 'Warum' hinter Sendungsverzögerungen und ermöglicht eine leistungsstarke Ursachenanalyse, um Ausnahmen zu reduzieren und die Pünktlichkeit zu verbessern. Datenquelle Dies kann als Beispiele WEATHER_DELAYZOLLINSPEKTIONHAFENÜBERLASTUNGMECHANISCHER_DEFEKT | |||
| Zielland DestinationCountry | Das Land, in das die Lieferung geliefert wird. | ||
| Beschreibung Dieses Bedeutung Ermöglicht die Analyse der Prozessleistung nach Destination, wobei Probleme mit spezifischen Lieferregionen, Zollbehörden oder Last-Mile-Spediteuren hervorgehoben werden. Datenquelle Dies ist Teil der Adressinformationen für den Zielort des letzten Stopps im Beispiele FRCAGBJP | |||
Transportmanagement-Aktivitäten
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Frachtabrechnung erstellt | Diese `Activity` markiert die Erstellung des Frachtabrechnungsdokuments (`FSD`), das die an den Spediteur zu zahlenden Transportkosten berechnet. Dies ist das primäre Dokument, das für Rückstellungen und Rechnungsprüfung verwendet wird. | ||
| Bedeutung Dies leitet die finanzielle Abrechnungsphase des Transportprozesses ein. Die Analyse der Zeit von der Lieferung bis zur Abrechnungserstellung hilft, Datenquelle Dies ist ein explizites Erfassen Verwenden Sie das Erstellungsdatum und die Uhrzeit des Frachtabrechnungsdokuments. Ereignistyp explicit | |||
| Liefernachweis erhalten | Diese `Activity` tritt auf, wenn das unterzeichnete `Proof of Delivery` (`POD`)-Dokument vom Spediteur erhalten und im `System` erfasst wird. Dies bestätigt die Annahme der Waren durch den Empfänger. | ||
| Bedeutung Der Empfang des Datenquelle Dies wird typischerweise aus einer Statusänderung des Frachtauftrags abgeleitet, z. B. wenn der POD-Status auf 'Empfangen' gesetzt wird. Die Änderung dieses Statusfeldes liefert den Zeitstempel für die Aktivität. Erfassen Erfassen Sie den Zeitstempel, wann der Status des Liefernachweises im Frachtauftrag auf 'Empfangen' aktualisiert wird. Ereignistyp inferred | |||
| Lieferung storniert | Diese `Activity` repräsentiert die Stornierung einer Lieferung, nachdem sie angefordert oder geplant wurde. Sie dient als Endpunkt für Prozesse, die nicht zur Ausführung gelangen. | ||
| Bedeutung Die Verfolgung von Stornierungen hilft, Gründe für Prozessfehler zu identifizieren, wie Änderungen der Kundennachfrage oder Planungsfehler. Hohe Stornierungsraten können auf zugrunde liegende Probleme im Auftragsmanagement oder in der Planung hinweisen. Datenquelle Dies wird aus einer Änderung des Erfassen Erfassen Sie den Zeitstempel, wann der Lebenszyklusstatus des Dokuments auf 'Storniert' gesetzt wird. Ereignistyp inferred | |||
| Spediteur zugeteilt | Diese `Activity` zeigt an, dass ein spezifischer Transportdienstleister oder Spediteur für die Lieferung ausgewählt und zugewiesen wurde. Dies kann durch manuelle Zuweisung, automatisierte Planung oder einen `Tendering Process` geschehen. | ||
| Bedeutung Die Zuweisung eines Spediteurs ist ein entscheidender Schritt, bevor eine Sendung bestätigt und ausgeführt werden kann. Die Verfolgung dieses Vorgangs hilft bei der Analyse der Spediteurauswahlprozesse und der Sicherstellung einer termingerechten Buchung. Datenquelle Dies wird erfasst, wenn das Spediteurfeld ( Erfassen Identifiziert den Ereignistyp inferred | |||
| Transportanforderung Erhalten | Diese `Activity` markiert die Initiierung des Transportprozesses und stellt die Erstellung einer Transportanforderung dar. In `SAP TM` wird dies typischerweise durch die Erstellung eines `Forwarding Order` (`FWO`) oder eines `Order-based Transportation Requirement` (`OTR`) erfasst. | ||
| Bedeutung Dies ist das primäre Start- Datenquelle Dieses Erfassen Erfassen Sie das Erstellungsdatum und die Uhrzeit des Speditionsauftrags oder des Transportbedarfsdokuments. Ereignistyp explicit | |||
| Versand geplant | Diese `Activity` bedeutet, dass die Transportanforderungen in einen konkreten Lieferplan konsolidiert wurden. Sie wird erfasst, wenn ein `Freight Order` (für Straße/Schiene) oder `Freight Booking` (für See/Luft) erstellt und gespeichert wird, der die geplante Route und Ressourcen enthält. | ||
| Bedeutung Das Erreichen dieses Meilensteins ist entscheidend für die Einleitung der logistischen Ausführung. Die Zykluszeit von der Anfrage bis zu dieser Aktivität ist ein wichtiger KPI zur Messung der Planungseffizienz. Datenquelle Dieses Erfassen Verwenden Sie den Erstellungs-Zeitstempel des Frachtauftrags- oder Frachtbuchungsdokuments. Ereignistyp explicit | |||
| Waren abgeholt | Diese `Activity` markiert den Beginn des physischen Transports der Waren. Sie wird erfasst, wenn der Spediteur meldet, dass die Waren verladen wurden und vom Standort des Versenders abgefahren sind. | ||
| Bedeutung Dies ist ein wichtiger Ausführungsmeilenstein, der den Beginn der Datenquelle Dieses Erfassen Verwenden Sie den Zeitstempel des gemeldeten Ausführungs-Events 'Abfahrt' für den Ursprungsort des Frachtauftrags. Ereignistyp explicit | |||
| Waren geliefert | Diese `Activity` repräsentiert die Ankunft der Lieferung am endgültigen Bestimmungsort und den Abschluss des physischen Transports. Sie wird erfasst, wenn der Spediteur meldet, dass die Waren am Standort des Empfängers entladen wurden. | ||
| Bedeutung Dies ist der wichtigste Meilenstein zur Messung der Datenquelle Dies wird als Ausführungs- Erfassen Verwenden Sie den Zeitstempel des gemeldeten Ausführungs-Events 'Ankunft am Zielort' für den letzten Stopp des Frachtauftrags. Ereignistyp explicit | |||
| Zahlung verarbeitet | Diese finale `Activity` bestätigt, dass der Spediteur für die Transportdienstleistungen bezahlt wurde. Dieses `Event` tritt typischerweise im verbundenen `ERP-System` auf, nachdem die verifizierte Rechnung von `SAP TM` empfangen wurde. | ||
| Bedeutung Dies markiert das eigentliche Ende des End-to-End-Transportlebenszyklus. Es ist entscheidend für die Messung der gesamten Prozessdauer und der KPIs für pünktliche Zahlungen. Datenquelle Diese Informationen befinden sich im Erfassen Beziehen Sie das Zahlungsfreigabedatum aus dem Ereignistyp explicit | |||
| Frachtstreitigkeit erstellt | Dieses `Event` zeigt an, dass eine Diskrepanz zwischen der Rechnung des Spediteurs und den berechneten Kosten im Frachtabrechnungsdokument gefunden wurde. Dies löst einen `Dispute Resolution Workflow` aus. | ||
| Bedeutung Streitigkeiten verzögern Spediteurzahlungen und erfordern administrativen Aufwand zur Klärung. Die Verfolgung dieser Aktivität hilft, die Ursachen von Abrechnungsungenauigkeiten zu identifizieren, wie z.B. falsche Raten oder zusätzliche Gebühren. Datenquelle Dies kann aus einer Statusänderung am Frachtabrechnungsdokument abgeleitet werden, bei der ein 'Streit'-Status gesetzt wird. Es kann auch die Erstellung eines separaten Streitfall-Dokuments umfassen. Erfassen Erfassen Sie den Zeitstempel, wann der Streitstatus im Frachtabrechnungsdokument gesetzt wird. Ereignistyp inferred | |||
| Lieferung durch Spediteur bestätigt | Dieses `Event` repräsentiert die Zustimmung des Spediteurs, den Transport wie geplant auszuführen. Die Bestätigung erfolgt typischerweise über eine `EDI Message`, ein Spediteurportal-`Update` oder manuelle Eingabe, was den Status des `Freight Order` aktualisiert. | ||
| Bedeutung Die Bestätigung durch den Spediteur schafft Verbindlichkeit für den Versandplan und reduziert Unsicherheiten. Verzögerungen beim Erhalt dieser Bestätigung können den gesamten Versandplan gefährden. Datenquelle Dies wird aus einer Änderung im Bestätigungsstatusfeld des Erfassen Verfolgen Sie Änderungen an den Bestätigungsstatusfeldern innerhalb des Frachtauftragsdokuments. Ereignistyp inferred | |||
| Lieferung umgeleitet | Diese `Activity` signalisiert eine ungeplante Änderung der Route oder des Zeitplans der Lieferung, nachdem diese bestätigt wurde. Dies könnte auf Störungen, Kundenanfragen oder logistische Probleme zurückzuführen sein. | ||
| Bedeutung Umleitungen führen oft zu erhöhten Kosten und Verzögerungen. Die Identifizierung der Häufigkeit und Gründe für Umleitungen hilft, die Planungsgenauigkeit und die operationelle Stabilität zu verbessern. Datenquelle Dieses Erfassen Erkennen von Änderungen an wichtigen Routing-Feldern im Frachtauftragsdokument nach dem Ereignis 'Sendung vom Spediteur bestätigt'. Ereignistyp inferred | |||
| Rechnung geprüft | Diese `Activity` bedeutet, dass die Rechnung des Spediteurs erfolgreich mit dem Frachtabrechnungsdokument abgeglichen und zur Zahlung freigegeben wurde. Es ist der letzte Schritt, bevor der Zahlungsprozess im `ERP-System` eingeleitet wird. | ||
| Bedeutung Diese Datenquelle Dies wird aus einer Statusänderung am Frachtabrechnungsdokument abgeleitet, z. B. 'Bereit für die Abgrenzung' oder 'Zur Buchung übertragen', was darauf hindeutet, dass es zur Zahlung an das Erfassen Verfolgen Sie den Zeitstempel, wenn sich der Lebenszyklusstatus des FSD ändert, um anzuzeigen, dass er zur Zahlung bereit ist oder gebucht wurde. Ereignistyp inferred | |||
| Zollabfertigung erfolgt | Diese `Activity` zeigt an, dass die Lieferung von den Zollbehörden genehmigt wurde und zur Weiterführung freigegeben ist. Dieses `Event` ist ein wichtiger Meilenstein für die internationale Logistik, da es einen erheblichen potenziellen `Engpass` beseitigt. | ||
| Bedeutung Die Zollabfertigung ist oft eine Hauptursache für erhebliche Verzögerungen in globalen Lieferketten. Die Verfolgung der Dauer und Erfolgsrate dieser Aktivität ist entscheidend für die Verbesserung internationaler Transitzeiten. Datenquelle Dies wird als ' Erfassen Verwenden Sie den Zeitstempel des gemeldeten Ausführungs-Events 'Zollabfertigung', das mit dem Frachtauftrag verbunden ist. Ereignistyp explicit | |||
| Zollanmeldung abgegeben | Bei internationalen Sendungen stellt diese Aktivität die Einreichung der erforderlichen Zolldokumente bei den Behörden dar. Es ist eine Voraussetzung für die Erlangung der Freigabe zum Export oder Import von Waren. | ||
| Bedeutung Die rechtzeitige Abgabe von Zollanmeldungen ist entscheidend, um Verzögerungen an Grenzen zu vermeiden. Diese Aktivität hilft, die Effizienz des Zollabwicklungsprozesses zu überwachen. Datenquelle Dieses Erfassen Erfassen Sie den Zeitstempel des Ausführungsereignisses 'Zollanmeldung abgegeben' oder einer entsprechenden Statusänderung. Ereignistyp explicit | |||
Extraktionsleitfäden
Schritte
- CDS View APIs identifizieren und aktivieren: Melden Sie sich in Ihrem SAP S/4HANA-System an. Verwenden Sie die Transaktion
/IWFND/MAINT_SERVICE, um zu überprüfen, ob die erforderlichen OData-Dienste für die Core CDS Views aktiv sind. Wichtige Dienste, die zu prüfen sind, umfassen jene, die sich auf I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder und I_FreightSettlementDocument beziehen. Falls nicht aktiv, arbeiten Sie mit Ihrem SAP-Administrator zusammen, um diese vom Backend-System hinzuzufügen und zu aktivieren. - API-Konnektivität herstellen: Besorgen Sie sich die Root-URL für die OData-Dienste von Ihrem SAP-Administrator. Richten Sie eine Client-Anwendung ein, z.B. ein Python-Skript unter Verwendung der Requests-Bibliothek, ein kommerzielles ETL-Tool oder ein Tool wie Postman, um eine Verbindung zur API herzustellen. Sie müssen die Authentifizierung konfigurieren, typischerweise unter Verwendung der Basic Authentication (Benutzername und Passwort) oder OAuth 2.0 für eine sicherere Verbindung.
- Extraktionsumfang definieren: Bestimmen Sie den Umfang Ihrer Datenextraktion. Definieren Sie einen spezifischen Datumsbereich, zum Beispiel die letzten 6 Monate. Identifizieren Sie die relevanten Organisationseinheiten, nach denen gefiltert werden soll, wie z.B. den Buchungskreis, oder spezifische Dokumententypen wie den Frachtauftragstyp, um sicherzustellen, dass die Daten für den von Ihnen analysierten Prozess relevant sind.
- Basis-Sendungsabfrage konstruieren: Beginnen Sie mit der Abfrage der I_TransportationOrder CDS View. Diese View dient als zentrales Objekt für Sendungen, auch bekannt als Frachtaufträge oder Frachtbuchungen. Verwenden Sie den OData-Parameter
$select, um die benötigten Spalten auszuwählen, einschließlich der empfohlenen Attribute wie CarrierName, ModeOfTransport und RequestedDeliveryDate. Wenden Sie einen$filteran, um die Daten nach Datum und anderen Umfangsparametern zu begrenzen. - Ausführungs- und Transportereignisse abfragen: Verwenden Sie die C_TranspOrdExecutionEvent CDS View, um wichtige Logistikereignisse zu extrahieren. Filtern Sie diese View nach spezifischen
EventCode-Werten, die Aktivitäten wie 'Waren abgeholt' (DEPARTURE) und 'Waren geliefert' (ARRIVAL_AT_DESTINATION) entsprechen. Verknüpfen Sie diese Daten mithilfe der TransportationOrder UUID mit Ihren Basis-Sendungsdaten. - Verwandte Geschäftsobjekte abfragen: Um den gesamten Prozess zu erfassen, müssen Sie andere verwandte CDS Views abfragen. Fragen Sie I_ForwardingOrder für die Aktivität 'Transportanfrage empfangen' und I_FreightSettlementDocument für finanzielle Aktivitäten wie 'Frachtabrechnung erstellt', 'Frachtstreitigkeit erstellt' und 'Rechnung geprüft' ab.
- Statusbasierte Aktivitäten extrahieren: Viele Aktivitäten sind keine diskreten Ereignisse, sondern Statusänderungen am Primärdokument. Für Aktivitäten wie 'Spediteur zugewiesen', 'Sendung vom Spediteur bestätigt' und 'Sendung storniert' fragen Sie die I_TransportationOrder View ab und verwenden das
LastChangeDateTime, das dem relevanten Statusfeld zugeordnet ist, als Ereigniszeit. Dies erfordert eine sorgfältige Zuordnung von Statuscodes zu Geschäftsaktivitäten. - Daten vereinigen und transformieren: Konsolidieren Sie die aus allen Quellen extrahierten Daten in einer einzigen Event Log-Struktur. Erstellen Sie für jede extrahierte Aktivität eine Zeile, die die erforderlichen Spalten enthält: ShipmentId, ActivityName und EventTime. Stellen Sie sicher, dass alle empfohlenen Attribute aus der Basis-Sendungsabfrage in jeder Zeile für diese Sendung vorhanden sind. Dieser Schritt entspricht konzeptionell einer SQL
UNION ALL-Operation. - Komplexe und externe Ereignisse handhaben: Für Aktivitäten wie 'Zollabfertigung erfolgt' oder 'Zahlung verarbeitet' können die Daten in spezifischen Feldern oder sogar externen Systemen liegen. Die bereitgestellte Abfragelogik verwendet Standardfelder als Proxy. Möglicherweise müssen Sie die Abfrage anpassen, um sie mit zollspezifischen CDS Views zu verknüpfen oder mit einer separaten ERP-Extraktion für Zahlungsdaten basierend auf der Frachtabrechnungsdokumentnummer zu korrelieren.
- Format für ProcessMind: Speichern Sie den endgültig konsolidierten Datensatz als CSV-Datei. Stellen Sie sicher, dass die Spaltenüberschriften den Anforderungen für den Upload entsprechen, z.B. indem Sie Ihre
ShipmentId-Spalte demCaseId-Feld in den Tool-Einstellungen zuordnen. Überprüfen Sie, ob die Zeitstempel in einem konsistenten Format vorliegen, vorzugsweise UTC (JJJJ-MM-TTTHH:MM:SSZ).
Konfiguration
- Core CDS Views: Die Extraktion stützt sich 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).
- Datumsbereichsfilterung: Es ist entscheidend, einen Datumsfilter anzuwenden, um das Datenvolumen zu steuern. Verwenden Sie
CreationDateTimeauf I_TransportationOrder oderActualBusinessDateTimeauf C_TranspOrdExecutionEvent. Für eine erste Analyse wird ein Bereich von 3 bis 6 Monaten empfohlen. - Filterung nach Dokumententyp: Um die Analyse zu fokussieren, filtern Sie nach spezifischen Dokumententypen unter Verwendung des Feldes
TransportationOrderType. Dies hilft, verschiedene Logistikszenarien wie Standardausgangslieferungen versus Umlagerungen zu trennen. - Organisatorische Filter: Falls zutreffend, filtern Sie nach
PurchasingOrganizationoder anderen Feldern auf Organisationsebene, um die Daten auf eine bestimmte Geschäftseinheit oder Region zu beschränken. - API-Paginierung: Für große Datensätze verwenden Sie die OData-Parameter
$topund$skip, um Daten in kleineren Seiten abzurufen. Dies verhindert API-Timeouts und reduziert den Speicherverbrauch auf Client-Seite. Eine Seitengröße von 1000 bis 5000 Zeilen ist oft effektiv. - Voraussetzungen: Der Benutzer oder das Dienstkonto, das die Extraktion durchführt, benötigt Berechtigungen für die zugrundeliegenden OData-Dienste (Berechtigungsobjekt S_SERVICE) und die Geschäftsdaten innerhalb der CDS Views. Die entsprechenden Dienste 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
- CDS View APIs identifizieren und aktivieren: Melden Sie sich in Ihrem SAP S/4HANA-System an. Verwenden Sie die Transaktion
/IWFND/MAINT_SERVICE, um zu überprüfen, ob die erforderlichen OData-Dienste für die Core CDS Views aktiv sind. Wichtige Dienste, die zu prüfen sind, umfassen jene, die sich auf I_TransportationOrder, C_TranspOrdExecutionEvent, I_ForwardingOrder und I_FreightSettlementDocument beziehen. Falls nicht aktiv, arbeiten Sie mit Ihrem SAP-Administrator zusammen, um diese vom Backend-System hinzuzufügen und zu aktivieren. - API-Konnektivität herstellen: Besorgen Sie sich die Root-URL für die OData-Dienste von Ihrem SAP-Administrator. Richten Sie eine Client-Anwendung ein, z.B. ein Python-Skript unter Verwendung der Requests-Bibliothek, ein kommerzielles ETL-Tool oder ein Tool wie Postman, um eine Verbindung zur API herzustellen. Sie müssen die Authentifizierung konfigurieren, typischerweise unter Verwendung der Basic Authentication (Benutzername und Passwort) oder OAuth 2.0 für eine sicherere Verbindung.
- Extraktionsumfang definieren: Bestimmen Sie den Umfang Ihrer Datenextraktion. Definieren Sie einen spezifischen Datumsbereich, zum Beispiel die letzten 6 Monate. Identifizieren Sie die relevanten Organisationseinheiten, nach denen gefiltert werden soll, wie z.B. den Buchungskreis, oder spezifische Dokumententypen wie den Frachtauftragstyp, um sicherzustellen, dass die Daten für den von Ihnen analysierten Prozess relevant sind.
- Basis-Sendungsabfrage konstruieren: Beginnen Sie mit der Abfrage der I_TransportationOrder CDS View. Diese View dient als zentrales Objekt für Sendungen, auch bekannt als Frachtaufträge oder Frachtbuchungen. Verwenden Sie den OData-Parameter
$select, um die benötigten Spalten auszuwählen, einschließlich der empfohlenen Attribute wie CarrierName, ModeOfTransport und RequestedDeliveryDate. Wenden Sie einen$filteran, um die Daten nach Datum und anderen Umfangsparametern zu begrenzen. - Ausführungs- und Transportereignisse abfragen: Verwenden Sie die C_TranspOrdExecutionEvent CDS View, um wichtige Logistikereignisse zu extrahieren. Filtern Sie diese View nach spezifischen
EventCode-Werten, die Aktivitäten wie 'Waren abgeholt' (DEPARTURE) und 'Waren geliefert' (ARRIVAL_AT_DESTINATION) entsprechen. Verknüpfen Sie diese Daten mithilfe der TransportationOrder UUID mit Ihren Basis-Sendungsdaten. - Verwandte Geschäftsobjekte abfragen: Um den gesamten Prozess zu erfassen, müssen Sie andere verwandte CDS Views abfragen. Fragen Sie I_ForwardingOrder für die Aktivität 'Transportanfrage empfangen' und I_FreightSettlementDocument für finanzielle Aktivitäten wie 'Frachtabrechnung erstellt', 'Frachtstreitigkeit erstellt' und 'Rechnung geprüft' ab.
- Statusbasierte Aktivitäten extrahieren: Viele Aktivitäten sind keine diskreten Ereignisse, sondern Statusänderungen am Primärdokument. Für Aktivitäten wie 'Spediteur zugewiesen', 'Sendung vom Spediteur bestätigt' und 'Sendung storniert' fragen Sie die I_TransportationOrder View ab und verwenden das
LastChangeDateTime, das dem relevanten Statusfeld zugeordnet ist, als Ereigniszeit. Dies erfordert eine sorgfältige Zuordnung von Statuscodes zu Geschäftsaktivitäten. - Daten vereinigen und transformieren: Konsolidieren Sie die aus allen Quellen extrahierten Daten in einer einzigen Event Log-Struktur. Erstellen Sie für jede extrahierte Aktivität eine Zeile, die die erforderlichen Spalten enthält: ShipmentId, ActivityName und EventTime. Stellen Sie sicher, dass alle empfohlenen Attribute aus der Basis-Sendungsabfrage in jeder Zeile für diese Sendung vorhanden sind. Dieser Schritt entspricht konzeptionell einer SQL
UNION ALL-Operation. - Komplexe und externe Ereignisse handhaben: Für Aktivitäten wie 'Zollabfertigung erfolgt' oder 'Zahlung verarbeitet' können die Daten in spezifischen Feldern oder sogar externen Systemen liegen. Die bereitgestellte Abfragelogik verwendet Standardfelder als Proxy. Möglicherweise müssen Sie die Abfrage anpassen, um sie mit zollspezifischen CDS Views zu verknüpfen oder mit einer separaten ERP-Extraktion für Zahlungsdaten basierend auf der Frachtabrechnungsdokumentnummer zu korrelieren.
- Format für ProcessMind: Speichern Sie den endgültig konsolidierten Datensatz als CSV-Datei. Stellen Sie sicher, dass die Spaltenüberschriften den Anforderungen für den Upload entsprechen, z.B. indem Sie Ihre
ShipmentId-Spalte demCaseId-Feld in den Tool-Einstellungen zuordnen. Überprüfen Sie, ob die Zeitstempel in einem konsistenten Format vorliegen, vorzugsweise UTC (JJJJ-MM-TTTHH:MM:SSZ).
Konfiguration
- Core CDS Views: Die Extraktion stützt sich 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).
- Datumsbereichsfilterung: Es ist entscheidend, einen Datumsfilter anzuwenden, um das Datenvolumen zu steuern. Verwenden Sie
CreationDateTimeauf I_TransportationOrder oderActualBusinessDateTimeauf C_TranspOrdExecutionEvent. Für eine erste Analyse wird ein Bereich von 3 bis 6 Monaten empfohlen. - Filterung nach Dokumententyp: Um die Analyse zu fokussieren, filtern Sie nach spezifischen Dokumententypen unter Verwendung des Feldes
TransportationOrderType. Dies hilft, verschiedene Logistikszenarien wie Standardausgangslieferungen versus Umlagerungen zu trennen. - Organisatorische Filter: Falls zutreffend, filtern Sie nach
PurchasingOrganizationoder anderen Feldern auf Organisationsebene, um die Daten auf eine bestimmte Geschäftseinheit oder Region zu beschränken. - API-Paginierung: Für große Datensätze verwenden Sie die OData-Parameter
$topund$skip, um Daten in kleineren Seiten abzurufen. Dies verhindert API-Timeouts und reduziert den Speicherverbrauch auf Client-Seite. Eine Seitengröße von 1000 bis 5000 Zeilen ist oft effektiv. - Voraussetzungen: Der Benutzer oder das Dienstkonto, das die Extraktion durchführt, benötigt Berechtigungen für die zugrundeliegenden OData-Dienste (Berechtigungsobjekt S_SERVICE) und die Geschäftsdaten innerhalb der CDS Views. Die entsprechenden Dienste 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
- Datenanforderungen definieren: Bestätigen Sie zunächst die genaue Logik für jede der 15 erforderlichen Aktivitäten und alle Attribute. Dies beinhaltet die Zuordnung jeder Aktivität zu spezifischen Statusänderungen, Erstellungsereignissen oder Dokumentenverknüpfungen innerhalb Ihres SAP TM-Systems. Bestimmen Sie beispielsweise den genauen Ausführungsstatus, der 'Waren abgeholt' signalisiert.
- ABAP-Entwicklungsumgebung aufrufen: Melden Sie sich an der SAP GUI an und navigieren Sie mit dem Transaktionscode
SE38zum ABAP Editor. Geben Sie einen Namen für Ihr neues Programm ein, z.B.ZTM_PROCESS_EXTRACT, und klicken Sie auf 'Anlegen'. Geben Sie einen Titel ein und legen Sie den Programmtyp als 'Ausführbares Programm' fest. - Selektionsbildschirm erstellen: Definieren Sie im Programm den Selektionsbildschirm, den die Benutzer sehen werden. Dieser sollte Parameter zur Datenfilterung enthalten, wie einen Datumsbereich für das Erstellungsdatum des Frachtauftrags (
SO_CREDT) und Selektionsoptionen für Dokumententypen (SO_TYPE) oder Spediteure (SO_CARR). - Ausgabestruktur definieren: Definieren Sie eine interne Tabellenstruktur, die dem erforderlichen
Event Log-Format entspricht. Diese Struktur sollte Felder fürShipmentId,ActivityName,EventTime,EndTime,CarrierName,RequestedDeliveryDate,ModeOfTransport,TotalFreightCostundIsOnTimeDeliveryenthalten. - Datenextraktionslogik implementieren: Schreiben Sie die Haupt-ABAP-Logik, um Daten für jede der 15 Aktivitäten auszuwählen. Dies beinhaltet typischerweise das Abfragen mehrerer SAP TM-Tabellen. Beginnen Sie mit der Auswahl der primären Sendungsdokumente, wie z.B. Frachtaufträge, innerhalb des angegebenen Datumsbereichs.
- Planungs- und Ausführungsereignisse extrahieren: Fragen Sie für jedes ausgewählte Sendungsdokument (z.B. Frachtauftrag) verwandte Tabellen und Business-Objekte ab, um Zeitstempel für verschiedene Ereignisse zu finden. Verwenden Sie die Tabelle
/SCMTMS/D_TORROTfür die Erstellung des Frachtauftrags ('Sendung geplant'), die Spediteurzuweisung ('Spediteur zugewiesen') und Statusänderungen der Ausführung, die 'Waren abgeholt' und 'Waren geliefert' entsprechen. Die Erstellung des vorhergehenden Speditionsauftrags (/SCMTMS/D_TRQROT) kann 'Transportanfrage empfangen' signalisieren. - Spediteur-Bestätigung & Neuplanung extrahieren: Fragen Sie Statustabellen oder Änderungsbelege (CDHDR/CDPOS) ab, die mit dem Frachtauftrag verknüpft sind, um zu identifizieren, wann der
CONFIRMATION-Status gesetzt wurde, der 'Sendung vom Spediteur bestätigt' erfasst. Suchen Sie ebenfalls nach signifikanten Änderungen in den Routing-Informationen, um 'Sendung neu geplant' zu erfassen. - Zollereignisse extrahieren: Falls SAP Global Trade Services (GTS) oder ein ähnliches Modul verwendet wird, werden die Zollereignisse ('Zollanmeldung abgegeben', 'Zollabfertigung erfolgt') oft über verknüpfte Dokumente verfolgt. Die Logik muss den Belegfluss (
/SCMTMS/D_TORDOC) des Frachtauftrags lesen, um diese verwandten Dokumente und deren Erstellungs- oder Statusänderungszeiten zu finden. - Abrechnungs- und Streitigkeitenereignisse extrahieren: Fragen Sie die Kopfzeilentabelle des Frachtabrechnungsdokuments (
/SCMTMS/D_SFIRHD) und die zugehörigen Positionen und Status ab, um 'Frachtabrechnung erstellt', 'Frachtstreitigkeit erstellt' und 'Rechnung geprüft' zu erfassen. Verknüpfen Sie diese zurück mit der ursprünglichenShipmentId. - Daten konsolidieren: Erstellen Sie für jedes gefundene Ereignis einen neuen Datensatz in Ihrer endgültigen internen Tabelle. Füllen Sie
ActivityNamemit der entsprechenden Aktivität,EventTimemit dem Zeitstempel des Ereignisses undShipmentIdmit der Frachtauftrags- oder Frachtbuchungs-ID. Füllen Sie die anderen Attribute aus den Quelldokumenten. - Datei formatieren und exportieren: Sobald die finale interne Tabelle vollständig gefüllt ist, formatieren Sie die Daten in eine flache Datei. Verwenden Sie die Befehle
OPEN DATASET,LOOP AT... TRANSFER...undCLOSE DATASETcommands, um den Inhalt der internen Tabelle in eine CSV- oder TXT-Datei auf dem SAP-Anwendungsserver zu schreiben (zugänglich über Transaktion AL11). - Planen und abrufen: Das ABAP-Programm kann als Hintergrundjob (Transaktion SM36) eingeplant werden, um Daten automatisch zu extrahieren. Die generierte Datei kann dann vom Anwendungsserver auf einen lokalen Rechner heruntergeladen werden (Transaktion
CG3Y) zur Übertragung in ProcessMind.
Konfiguration
- Datumsbereich: Der Selektionsbildschirm sollte einen obligatorischen Datumsbereich für das Erstellungsdatum des Kern-Transportdokuments (z.B. Frachtauftrag) enthalten. Für eine erste Analyse wird ein Bereich von 3 bis 6 Monaten empfohlen, um einen repräsentativen Datensatz ohne übermäßige Laufzeit zu gewährleisten.
- Filter für Dokumententyp: Stellen Sie einen Filter für den Transportdokumententyp (z.B. Frachtauftrag, Frachtbuchung) bereit. Dies ist entscheidend, um die Analyse auf spezifische Prozesse wie Straßengüterverkehr versus Seefracht zu konzentrieren.
- Spediteurfilter: Ermöglichen Sie Benutzern, nach spezifischen Spediteuren zu filtern. Dies hilft bei der Analyse der Leistung einzelner Logistikpartner.
- Organisatorische Filter: Fügen Sie Filter für relevante Organisationseinheiten, wie Einkaufsorganisation oder Buchungskreis, hinzu, um die Extraktion auf bestimmte Geschäftsbereiche einzugrenzen.
- Performance-Optimierung: Stellen Sie bei großen Datensätzen sicher, dass der ABAP-Code indizierte Datenbankfelder in
WHERE-Klauseln verwendet, verschachtelte Schleifen möglichst vermeidet und nur die notwendigen Felder aus der Datenbank auswählt, um den Speicherverbrauch zu minimieren. - Voraussetzungen: Der Benutzer, der den Bericht ausführt, benötigt die Berechtigung zur Ausführung von ABAP-Programmen. Der Entwickler benötigt die
S_DEVELOP-Berechtigung. Das Programm selbst erfordert Berechtigungen für den Dateisystemzugriff auf dem Anwendungsserver (ObjektS_DATASET) und den 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.