Dokumentenliste
Auf dieser Seite

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:

  1. Purchase Requisition
  2. Purchase Order
  3. Goods Receipt
  4. Invoice Receipt
  5. Payment

2. Wichtige SAP-Tabellen identifizieren

Die Daten stammen in der Regel aus folgenden Tabellen:

ProzessschrittSAP-TabelleBeschreibung
Purchase RequisitionEBANKopf für Purchase Requisition
Purchase OrderEKKO / EKPOPO-Kopf (EKKO) & Positionen (EKPO)
Goods ReceiptMKPF / MSEGMaterialbeleg-Kopf & Positionen
Invoice ReceiptBKPF / BSEGBuchungsbeleg-Kopf & Positionen
PaymentPAYR / REGUHZahlungsbeleg-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 IDPO-Nummer / DokumentnummerGruppiert alle Events eines Prozesses
ActivityAbgeleitet (z. B. “PO Created”)Name des Prozessschritts
TimestampAEDAT, BUDAT, CPUDTZeitpunkt des Schritts
User/AgentERNAM, USNAM, etc.Wer die Aktion ausgeführt hat
AmountWRBTR, DMBTRWert zum Schritt
Vendor / MaterialLIFNR, MATNRPartner- 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

SpalteBeispielBeispiel
Case IDEindeutige Kennung der ProzessinstanzPurchase Order ID
ActivityName des Prozessschritts”Create PO”, “Post Invoice”
TimestampDatum und Uhrzeit des Events2025-04-17 10:22:12

Optionale Spalten zur Erweiterung

SpaltennameBeschreibung
UserNutzer, der die Aktion ausgeführt hat
AmountBetrag, der dem Event zugeordnet ist
Vendor / MaterialBeteiligter Lieferant oder Material
Company CodeBuchungskreis zum Event
CurrencyWährung der Transaktion
Document TypeDokumenttyp (z. B. PO, GR, Invoice)
Other FieldsAmount, 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 and Preparation

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
AbschnittZweck
ekkoKopftabelle für PO-Erstellung
mseg + mkpfFür Wareneingänge (GR)
rseg + rbkpFür Rechnungseingänge (IR)
OPEN DATASETSchreibt 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.