SAP P2P-Daten für Process Mining extrahieren
Datenextraktion aus SAP für Purchase-to-Pay (P2P) Process Mining
Um den Purchase-to-Pay-Prozess mit Process Mining zu analysieren, müssen Sie ein hochwertiges Event Log aus SAP extrahieren. Nachfolgend finden Sie die typischen Schritte und Strukturen.
1. P2P Prozessumfang definieren
Bevor Sie Daten extrahieren, definieren Sie die Prozessschritte, die im Event Log enthalten sein sollen. Ein typischer P2P-Prozess umfasst:
- Purchase Requisition
- Purchase Order
- Goods Receipt
- Invoice Receipt
- Payment
2. Wichtige SAP-Tabellen identifizieren
Daten werden in der Regel aus folgenden SAP-Tabellen extrahiert:
| Prozessschritt | SAP-Tabelle | Beschreibung |
|---|---|---|
| Purchase Requisition | EBAN | Purchase Requisition Header |
| Purchase Order | EKKO / EKPO | PO Header (EKKO) & Items (EKPO) |
| Goods Receipt | MKPF / MSEG | Materialbeleg Kopf & Positionen |
| Invoice Receipt | BKPF / BSEG | Buchungsbeleg Kopf & Positionen |
| Payment | PAYR / REGUH | Zahlungstabellen |
3. Benötigte Felder für das Event Log bestimmen
Für Process Mining sind üblicherweise folgende Felder erforderlich. Sie können je nach Bedarf angepasst werden.
| Case ID | PO-Nummer / Belegnummer | Gruppiert alle Events eines Prozesses |
|---|---|---|
| Activity | Abgeleitet (z. B. „PO Created“) | Name des Prozessschritts |
| Timestamp | AEDAT, BUDAT, CPUDT | Wann der Schritt stattfand |
| User/Agent | ERNAM, USNAM, usw. | Wer hat die Aktion ausgeführt |
| Amount | WRBTR, DMBTR | Wert zum Schritt |
| Vendor / Material | LIFNR, MATNR | Partner- oder Materialinfo |
4. Rohdaten extrahieren
SAP ECC (ABAP Stack)
- Mit ABAP-Reports können Sie Daten direkt aus den relevanten Tabellen extrahieren.
- Individuelle ABAP-Programme können genutzt werden, um Daten gezielt zu verbinden, zu filtern und als Eventdaten zu exportieren.
- Sie können das Ergebnis z.B. als CSV- oder Flat-File exportieren.
SAP S/4HANA (HANA Stack)
- CDS Views (Core Data Services) bieten logische Modelle zur Datenauswahl.
- SAP Fiori Apps oder HANA Studio können für SQL-Skripte genutzt werden.
- Für Automatisierung ODATA API, SAP Datasphere oder SAP Data Intelligence verwenden.
5. Event Log aufbauen
Minimale Spalten für Process Mining
| Spalte | Beispiel | Beispiel |
|---|---|---|
| Case ID | Eindeutige Prozessinstanz | Purchase Order ID |
| Activity | Name des Prozessschrittes | ”Create PO”, “Post Invoice” |
| Timestamp | Datum und Uhrzeit des Events | 2025-04-17 10:22:12 |
Optionale Spalten zur Anreicherung
| Spaltenname | Beschreibung |
|---|---|
| User | Nutzer, der die Aktion ausgeführt hat |
| Amount | Betrag im Zusammenhang mit dem Event |
| Vendor / Material | Beteiligter Lieferant oder Material |
| Company Code | Buchungskreis des Events |
| Currency | Währung der Transaktion |
| Document Type | Dokumententyp (z.B. PO, GR, Invoice) |
| Other Fields | Betrag, Vendor, Currency, usw. |
tip
Nutzen Sie ein Unpivot, um aus mehreren Datumsfeldern bei Bedarf eine Zeile pro Aktivität zu erstellen.
6. Daten transformieren und bereinigen
Nachdem Sie die Rohdaten extrahiert haben, sollten Sie diese für Process Mining aufbereiten. Typische Schritte:
- Timestamps normalisieren (z.B. Umrechnung in UTC)
- Aktivitäten labeln (z.B. „PO Created“ statt MIGO-Code)
- Eine Zeile pro Event sicherstellen (Long Format)
- Bereinigung von NULL-Werten und Duplikaten
- Konsistente Case IDs (je Instanz eindeutig)
Empfohlene Tools:
- SQL-Skripte zur Datenbereinigung/-transformation
- Excel, Power Query
- Python & Pandas
- KNIME, Alteryx oder ETL-Tools
Datenbereinigung und -vorbereitung ist ein entscheidender Schritt im Data Analytics-Prozess. Sie sichert Datenqualität und Verlässlichkeit durch Erkennung und Korrektur von Fehlern und Inkonsistenzen.
ABAP-Beispielcode für die Extraktion von Event Logs
" Beispiel-ABAP-Code für die Extraktion von Purchase-to-Pay Event Logs
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. Extrahiere Creation von Purchase Orders
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. Extrahiere Goods Receipt (MIGO)
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. Extrahiere Invoice Posting (MIRO)
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. Exportiere Ergebnisdatei (optional, falls Berechtigungen vorhanden)
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 export erfolgreich abgeschlossen.'.
Hinweise zum ABAP-Code
| Abschnitt | Beschreibung |
|---|---|
| ekko | Kopftabelle für PO-Erstellung |
| mseg + mkpf | Für Buchungen von Goods Receipt (GR) |
| rseg + rbkp | Für Buchungen von Invoice Receipt (IR) |
| OPEN DATASET | Schreibt das Event Log als CSV-File auf den Server (Berechtigungen prüfen) |
| bwart = ‘101’ | Filter für GR-Bewegungsarten |
Beispiel-SQL-Queries für die Datenextraktion
Mit SQL-Abfragen können Sie relevante Daten direkt aus den SAP-Tabellen extrahieren. Hier einige Beispiel-Queries für die einzelnen Schritte des P2P-Prozesses. Bitte passen Sie die Queries nach Ihren Anforderungen und SAP-Versionen an.
Ein einfaches Beispiel:
-- Purchase Order creation
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
-- Goods Receipt
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
-- Invoice Receipt
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 zu einem Event Log für das Process Mining zusammenführen:
-- Kombinieren aller Event Logs (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.