SAP-Datenextraktion für Purchase-to-Pay (P2P)
Datenextraktion aus SAP für Purchase-to-Pay (P2P) Process Mining
Um den Purchase-to-Pay-Prozess mit Process Mining zu analysieren, benötigen Sie ein hochwertiges Event Log aus SAP. Hier sind die typischen Schritte und Strukturen.
1. Scope Ihres P2P-Prozesses festlegen
Legen Sie vor der Datenextraktion fest, welche Prozessschritte enthalten sein sollen. Ein Standard-P2P-Prozess umfasst:
- Purchase Requisition
- Purchase Order
- Goods Receipt
- Invoice Receipt
- Payment
2. Wichtige SAP-Tabellen identifizieren
Die Daten stammen in der Regel aus folgenden Tabellen:
Prozessschritt | SAP-Tabelle | Beschreibung |
---|---|---|
Purchase Requisition | EBAN | Kopf für Purchase Requisition |
Purchase Order | EKKO / EKPO | PO-Kopf (EKKO) & Positionen (EKPO) |
Goods Receipt | MKPF / MSEG | Materialbeleg-Kopf & Positionen |
Invoice Receipt | BKPF / BSEG | Buchungsbeleg-Kopf & Positionen |
Payment | PAYR / REGUH | Zahlungsbeleg-Tabellen |
3. Erforderliche Felder für das Event Log identifizieren
Für Process Mining werden in der Regel folgende Felder benötigt. Sie können diese je nach Bedarf anpassen.
Case ID | PO-Nummer / Dokumentnummer | Gruppiert alle Events eines Prozesses |
---|---|---|
Activity | Abgeleitet (z. B. “PO Created”) | Name des Prozessschritts |
Timestamp | AEDAT, BUDAT, CPUDT | Zeitpunkt des Schritts |
User/Agent | ERNAM, USNAM, etc. | Wer die Aktion ausgeführt hat |
Amount | WRBTR, DMBTR | Wert zum Schritt |
Vendor / Material | LIFNR, MATNR | Partner- oder Materialinfo |
4. Rohdaten extrahieren
SAP ECC (ABAP Stack)
- Nutzen Sie ABAP-Reports, um Daten direkt aus den relevanten Tabellen zu extrahieren.
- Oder eigene ABAP-Programme erstellen, um relevante Event-Daten zu verbinden, filtern und exportieren.
- Das Ergebnis kann als CSV- oder Flat-File exportiert werden.
SAP S/4HANA (HANA Stack)
- CDS Views (Core Data Services) nutzen, um logische Modelle zu definieren und Daten zu extrahieren.
- Alternativ SAP Fiori Apps oder das HANA Studio zum Ausführen von SQL-Skripten nutzen.
- Für mehr Automatisierung: ODATA API, SAP Datasphere oder SAP Data Intelligence verwenden.
5. Event Log erstellen
Minimale Spalten für Process Mining
Spalte | Beispiel | Beispiel |
---|---|---|
Case ID | Eindeutige Kennung der Prozessinstanz | Purchase Order ID |
Activity | Name des Prozessschritts | ”Create PO”, “Post Invoice” |
Timestamp | Datum und Uhrzeit des Events | 2025-04-17 10:22:12 |
Optionale Spalten zur Erweiterung
Spaltenname | Beschreibung |
---|---|
User | Nutzer, der die Aktion ausgeführt hat |
Amount | Betrag, der dem Event zugeordnet ist |
Vendor / Material | Beteiligter Lieferant oder Material |
Company Code | Buchungskreis zum Event |
Currency | Währung der Transaktion |
Document Type | Dokumenttyp (z. B. PO, GR, Invoice) |
Other Fields | Amount, Vendor, Currency, etc |
tip
Unpivotieren Sie Ihre Daten, um ggf. mehrere Datumsfelder in eine Zeile je Aktivität umzuwandeln.
6. Daten transformieren und bereinigen
Sobald Sie die Rohdaten haben, müssen diese ggf. für Process Mining aufbereitet werden. Typische Aufgaben sind:
- Timestamps normalisieren (z. B. nach UTC)
- Aktivitäten sinnvoll benennen (z. B. “PO Created” statt MIGO Code)
- Sicherstellen, dass pro Event eine Zeile (long format) vorliegt
- NULL-Werte und Duplikate bereinigen
- Konsistente Case IDs (pro Instanz einzigartig)
Tools zur Unterstützung:
- SQL-Skripte zur Bereinigung und Transformation
- Excel oder Power Query
- Python + Pandas
- KNIME, Alteryx oder ETL-Tools
Data cleaning und preparation ist ein wichtiger Schritt in der Datenanalyse. Dabei werden Fehler und Inkonsistenzen erkannt und bereinigt, um eine hohe Zuverlässigkeit zu sichern.
ABAP Beispiel-Codevorlage zur Datenextraktion
" Beispiel-ABAP-Code zur Extraktion von Purchase-to-Pay Event Log Daten
REPORT z_p2p_event_log_export.
TABLES: ekko, ekpo, mseg, mkpf, rbkp, rseg.
DATA: BEGIN OF event_log OCCURS 0,
case_id TYPE ekko-ebeln,
activity TYPE char40,
timestamp TYPE sy-datum,
username TYPE sy-uname,
amount TYPE ekpo-netwr,
END OF event_log.
START-OF-SELECTION.
" 1. Einkaufsbeleg-Erstellung extrahieren
SELECT ebeln aedat ernam netwr
INTO (event_log-case_id, event_log-timestamp, event_log-username, event_log-amount)
FROM ekko
WHERE aedat >= '20240101'.
event_log-activity = 'Create Purchase Order'.
APPEND event_log.
ENDSELECT.
" 2. Wareneingang (MIGO) extrahieren
SELECT mblnr budat usnam ebeln
INTO (event_log-case_id, event_log-timestamp, event_log-username, event_log-amount)
FROM mseg
INNER JOIN mkpf ON mseg~mblnr = mkpf~mblnr
WHERE bwart = '101' AND budat >= '20240101'. " GR document type
event_log-activity = 'Goods Receipt'.
APPEND event_log.
ENDSELECT.
" 3. Rechnungseingang (MIRO) extrahieren
SELECT ebeln bldat usnam wrbtr
INTO (event_log-case_id, event_log-timestamp, event_log-username, event_log-amount)
FROM rseg
INNER JOIN rbkp ON rseg~belnr = rbkp~belnr
WHERE bldat >= '20240101'.
event_log-activity = 'Invoice Posted'.
APPEND event_log.
ENDSELECT.
" 4. Ergebnis optional als Datei speichern (sofern Berechtigung)
DATA: filename TYPE string VALUE '/usr/sap/tmp/p2p_event_log.csv',
file TYPE string,
rc TYPE i.
OPEN DATASET filename FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
LOOP AT event_log.
CONCATENATE event_log-case_id
event_log-activity
event_log-timestamp
event_log-username
event_log-amount
INTO file SEPARATED BY ';'.
TRANSFER file TO filename.
ENDLOOP.
CLOSE DATASET filename.
WRITE: / 'Event log erfolgreich exportiert.'.
Hinweise zum ABAP-Code
Abschnitt | Zweck |
---|---|
ekko | Kopftabelle für PO-Erstellung |
mseg + mkpf | Für Wareneingänge (GR) |
rseg + rbkp | Für Rechnungseingänge (IR) |
OPEN DATASET | Schreibt das Event Log als CSV auf den Server (Zugriffsrechte prüfen) |
bwart = ‘101’ | Filter für GR-Bewegungsarten |
Beispiel-SQL-Querys zur Datenextraktion
Mit SQL-Querys können Sie Daten aus den relevanten Tabellen extrahieren. Nachfolgend finden Sie Beispiele für die einzelnen Schritte des P2P-Prozesses. Passen Sie die Abfragen auf Ihre Anforderungen und SAP-Version an.
Ein einfaches Beispiel:
-- Einkaufsbeleg-Erstellung
SELECT
EKKO.EBELN AS CaseID,
'PO Created' AS Activity,
EKKO.AEDAT AS Timestamp,
EKKO.ERNAM AS User,
EKKO.LIFNR AS Vendor,
EKKO.WAERS AS Currency,
EKKO.BUKRS AS CompanyCode
FROM EKKO
WHERE EKKO.BSART = 'NB'; -- Standard PO type
-- Wareneingang
SELECT
MSEG.EBELN AS CaseID,
'Goods Receipt' AS Activity,
MKPF.BUDAT AS Timestamp,
MKPF.USNAM AS User,
MSEG.MATNR AS Material,
MSEG.MENGE AS Quantity
FROM MSEG
JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR
WHERE MSEG.BEWTP = 'R'; -- Receipt type
-- Rechnungseingang
SELECT
BSEG.BELNR AS CaseID,
'Invoice Posted' AS Activity,
BKPF.BUDAT AS Timestamp,
BKPF.USNAM AS User,
BSEG.WRBTR AS Amount
FROM BSEG
JOIN BKPF ON BSEG.BELNR = BKPF.BELNR
WHERE BKPF.BLART = 'RE'; -- Invoice type
Sie können diese Logs in einer einzigen Event-Log-Tabelle für Process Mining zusammenführen:
-- Event Logs zusammenführen (vereinfachtes UNION)
SELECT * FROM (
SELECT 'PO Created' AS Activity, EBELN AS CaseID, AEDAT AS Timestamp FROM EKKO
UNION
SELECT 'Goods Receipt', EBELN, BUDAT FROM MSEG JOIN MKPF ON MSEG.MBLNR = MKPF.MBLNR
UNION
SELECT 'Invoice Posted', BELNR, BUDAT FROM BKPF
) AS EventLog
ORDER BY CaseID, Timestamp;
7. Export als Event Log
Sobald Sie eine einheitliche Struktur mit mindestens: • Case ID • Activity • Timestamp
Pro-Tipp
• Timestamps in dieselbe Zeitzone normalisieren. • Stellen Sie sicher, dass Ihre Case IDs in allen Events konsistent sind. • Daten bereinigen und Test- oder stornierte Dokumente entfernen. • Filter wie Buchungskreis, Dokumenttyp oder Geschäftsjahr verwenden, um die Auswahl einzuschränken.