Waar Data Voor Process Mining Te Verkrijgen en Structureren
Gebruik process mining om workflows te verbeteren door data uit bestaande systemen te extraheren en correct te structureren voor een nauwkeurige analyse.
Data halen uit SAP voor Purchase-to-Pay (P2P) Process Mining
Voor het analyseren van het Purchase-to-Pay-proces met Process Mining heb je een goede event log uit SAP nodig. Hieronder lees je de standaardstappen en structuur.
Bepaal voor het extraheren van data welke processtappen je wilt meenemen. Een standaard P2P-proces bestaat uit:
Meestal haal je data uit deze tabellen:
Process Step | SAP Table | Omschrijving |
---|---|---|
Purchase Requisition | EBAN | Kopregel Purchase Requisition |
Purchase Order | EKKO / EKPO | PO Kop (EKKO) & Items (EKPO) |
Goods Receipt | MKPF / MSEG | Materiaal document kop & regels |
Invoice Receipt | BKPF / BSEG | Boekhoud document kop & regels |
Payment | PAYR / REGUH | Payment document tabellen |
De volgende velden heb je meestal nodig voor process mining. Pas ze aan op jouw situatie.
Case ID | PO Number / Document No. | Groepeert alle events binnen één proces |
---|---|---|
Activity | Afgeleid (bijv. “PO Created”) | Naam van processtap |
Timestamp | AEDAT, BUDAT, CPUDT | Wanneer de stap plaatsvond |
User/Agent | ERNAM, USNAM, etc. | Wie de actie uitvoerde |
Amount | WRBTR, DMBTR | Waarde bij de stap |
Vendor / Material | LIFNR, MATNR | Partner- of materiaalinfo |
SAP ECC (ABAP stack)
SAP S/4HANA (HANA stack)
Minimale kolommen voor process mining
Kolom | Voorbeeld | Voorbeeld |
---|---|---|
Case ID | Unieke identifier voor het proces | 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 |
Optionele kolommen om de event log te verrijken
Kolomnaam | Beschrijving |
---|---|
User | User die de actie uitvoerde |
Amount | Geldbedrag bij het event |
Vendor / Material | Vendor of materiaal bij het event |
Company Code | Company code bij het event |
Currency | Valuta van de transactie |
Document Type | Type document (bijv. PO, GR, Invoice) |
Other Fields | Amount, Vendor, Currency, etc |
tip
Unpivot je data zodat meerdere datumvelden samenkomen in één regel per activiteit als dat nodig is.
Met ruwe data moet je deze vaak omzetten naar een geschikt format voor process mining. Dit houdt meestal in:
Tools die je kunt gebruiken:
Data cleaning en preparation is een onmisbare stap in data-analyse. Je spoort hiermee fouten, inconsistenties en onnauwkeurigheden op en corrigeert ze, zodat de data van hoge kwaliteit en betrouwbaar is.
" Voorbeeld ABAP-code voor het extraheren van Purchase-to-Pay event log data
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
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) extraheren
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) extraheren
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 toegestaan)
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 | Tabelkop voor PO-aanmaak |
mseg + mkpf | Voor Goods Receipt (GR) regels |
rseg + rbkp | Voor Invoice Receipt (IR) regels |
OPEN DATASET | Schrijft de event log als CSV-bestand op de server (check permissies) |
bwart = ‘101’ | Filter voor GR bewegingstypes |
Je kunt SQL-queries gebruiken om data uit relevante tabellen te halen. Hieronder staan voorbeeldqueries per stap van het P2P-proces. Pas de queries aan op je eigen SAP-versie en wensen.
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
Je kunt deze logs samenvoegen tot één event log tabel 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.