Process Mining Data in ProcessMind
Ontdek hoe je data voorbereidt, uploadt en instelt voor process mining in ProcessMind. Tips over formaten, uitdagingen en best practices.
Voor analyse van het Purchase-to-Pay-proces met Process Mining heb je een kwalitatieve event log uit SAP nodig. Hieronder vind je de gebruikelijke stappen en datastructuren.
Voordat je data uit SAP haalt, bepaal welke stappen je wilt meenemen. Een standaard P2P-proces bestaat uit:
Je haalt meestal data uit de volgende tabellen:
| Process-stap | SAP Table | Beschrijving |
|---|---|---|
| Purchase Requisition | EBAN | Header van Purchase Requisition |
| Purchase Order | EKKO / EKPO | PO Header (EKKO) & Items (EKPO) |
| Goods Receipt | MKPF / MSEG | Materiaal document header & items |
| Invoice Receipt | BKPF / BSEG | Accounting document header & items |
| Payment | PAYR / REGUH | Betalingsdocument tabellen |
De volgende velden zijn meestal vereist voor Process Mining. Pas aan waar nodig voor jouw situatie.
| Case ID | PO Number / Document No. | Alle events binnen één proces instance |
|---|---|---|
| Activity | Afgeleid (bijv. “PO Created”) | Naam van processtap |
| Timestamp | AEDAT, BUDAT, CPUDT | Wanneer de stap is uitgevoerd |
| User/Agent | ERNAM, USNAM, etc. | Wie de actie heeft uitgevoerd |
| Amount | WRBTR, DMBTR | Bedrag gekoppeld aan de stap |
| Vendor / Material | LIFNR, MATNR | Leverancier of materiaal info |
SAP ECC (ABAP stack)
SAP S/4HANA (HANA stack)
Minimaal benodigde kolommen voor Process Mining
| Kolom | Voorbeeld | Voorbeeld |
|---|---|---|
| Case ID | Uniek ID voor de process instance | Purchase Order ID |
| Activity | Naam van de processtap | ”Create PO”, “Post Invoice” |
| Timestamp | Datum en tijd van het event | 2025-04-17 10:22:12 |
Optioneel om de event log te verrijken
| Kolomnaam | Beschrijving |
|---|---|
| User | Medewerker die de actie heeft uitgevoerd |
| Amount | Financiële waarde aan het event |
| Vendor / Material | Leverancier of materiaal betrokken bij het event |
| Company Code | Bedrijfscode gekoppeld aan het event |
| Currency | Valuta van de transactie |
| Document Type | Documenttype (bijv. PO, GR, Invoice) |
| Other Fields | Amount, Vendor, Currency, etc |
tip
Unpivot je data om meerdere datumvelden om te zetten naar één regel per activiteit indien nodig.
Zodra je de ruwe data hebt, moet je deze vaak nog geschikt maken voor Process Mining. Denk aan:
Tools die je kunt gebruiken:
Data cleaning en voorbereiding is een belangrijke stap in data analyse. Hierbij worden fouten en inconsistenties in de data opgespoord en hersteld voor betere kwaliteit en betrouwbaarheid.
" Voorbeeld ABAP-code om Purchase-to-Pay event log data te exporteren
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. Purchase Order aanmaken ophalen
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. Goods Receipt (MIGO) ophalen
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. Invoice Posting (MIRO) ophalen
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. Resultaten exporteren naar bestand (optioneel, indien rechten aanwezig)
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 succesvol geëxporteerd.'.
| Sectie | Doel |
|---|---|
| ekko | Header tabel voor PO creatie |
| mseg + mkpf | Voor Goods Receipt (GR) entries |
| rseg + rbkp | Voor Invoice Receipt (IR) entries |
| OPEN DATASET | Schrijft de event log als CSV-bestand op de server (controleer rechten) |
| bwart = ‘101’ | Filter op GR movement types |
Met SQL-queries kun je gegevens uit de relevante tabellen halen. Hieronder enkele voorbeelden voor iedere P2P-stap. Pas de queries aan op jouw SAP-omgeving en wensen.
Een eenvoudig voorbeeld:
-- Purchase Order aanmaken
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'; -- Standaard 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
Deze logs kun je samenvoegen tot één event log voor process mining:
-- Combineer event logs (vereenvoudigde 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;
Zodra je een uniforme structuur hebt met minimaal: • Case ID • Activity • Timestamp
Pro Tip
• Normaliseer timestamps naar dezelfde tijdzone. • Zorg dat Case IDs overal consistent zijn. • Maak de data schoon door test- of geannuleerde documenten te verwijderen. • Gebruik filters zoals company code, document type of fiscaal jaar om de scope te beperken.