Elenco documenti
In questa pagina

Estrazione dati SAP per Purchase-to-Pay (P2P)

Estrazione dati SAP per il Process Mining Purchase-to-Pay (P2P)

Per analizzare il processo Purchase-to-Pay con il process mining, è necessario estrarre un event log di alta qualità da SAP. Di seguito trovi i passaggi e le strutture più comuni.

1. Definisci il perimetro del processo P2P

Prima di estrarre i dati, chiarisci quali fasi di processo vuoi includere. Un processo P2P standard comprende:

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

2. Identifica le principali tabelle SAP

Generalmente, puoi recuperare i dati dalle seguenti tabelle:

Fase di processoTabella SAPDescrizione
Purchase RequisitionEBANHeader della Purchase Requisition
Purchase OrderEKKO / EKPOHeader e item della Purchase Order (EKKO/EKPO)
Goods ReceiptMKPF / MSEGHeader e righe documenti di materiale
Invoice ReceiptBKPF / BSEGHeader e righe documenti contabili
PaymentPAYR / REGUHTabelle documenti di pagamento

3. Identifica i campi necessari per l’event log

I seguenti campi sono normalmente richiesti nel process mining. Puoi adattarli alle tue specifiche esigenze.

Case IDNumero PO / Numero documentoRaggruppa tutti gli eventi per processo
ActivityDerivato (es. “PO Created”)Nome della fase di processo
TimestampAEDAT, BUDAT, CPUDTQuando si è verificata la fase
User/AgentERNAM, USNAM, ecc.Chi ha eseguito l’azione
AmountWRBTR, DMBTRValore collegato alla fase
Vendor / MaterialLIFNR, MATNRInformazioni su fornitore o materiale

4. Estrai i dati grezzi

SAP ECC (ABAP stack)

  • Utilizza report ABAP per estrarre dati direttamente dalle tabelle.
  • Oppure crea programmi ABAP custom per join, filtri ed esportazione degli eventi.
  • Puoi esportare i risultati in formato CSV o flat file.

SAP S/4HANA (HANA stack)

  • Usa le CDS Views (Core Data Services) per definire modelli logici ed estrarre dati.
  • Oppure usa le app SAP Fiori o HANA Studio per eseguire SQL script.
  • Per una maggiore automazione, usa ODATA API, SAP Datasphere o SAP Data Intelligence.

5. Crea l’event log

Colonne minime necessarie per il process mining

ColonnaEsempioEsempio
Case IDIdentificativo univoco dell’istanza di processoPurchase Order ID
ActivityNome della fase di processo”Create PO”, “Post Invoice”
TimestampData e ora dell’evento2025-04-17 10:22:12

Colonne opzionali per arricchire l’event log

Nome colonnaDescrizione
UserUtente che ha eseguito l’azione
AmountValore monetario collegato all’evento
Vendor / MaterialFornitore o materiale nell’evento
Company CodeCompany code collegato all’evento
CurrencyValuta della transazione
Document TypeTipo documento (es. PO, GR, Invoice)
Other FieldsAmount, Vendor, Currency, ecc

tip

Se necessario, usa unpivot per trasformare più campi data in una riga per attività.

6. Trasforma e pulisci i dati

Dopo aver estratto i dati grezzi, puoi doverli trasformare in un formato adatto al process mining. Tipicamente occorre:

  • Normalizzare i timestamp (es. convertire in UTC)
  • Etichettare le attività (es. “PO Created” anziché codice MIGO)
  • Garantire una riga per ogni evento (formato long)
  • Eliminare valori NULL e duplicati
  • Case ID coerenti (univoci per istanza)

Strumenti utili:

  • Script SQL per clean & transform
  • Excel o Power Query
  • Python + Pandas
  • KNIME, Alteryx o tool ETL
Data cleaning and Preparation

La data cleaning e preparazione sono step essenziali nell’analisi dati. Consiste nell’identificare e correggere errori, incoerenze e imprecisioni nei dati, per garantirne qualità e affidabilità.

Esempio di template ABAP per estrazione dati

" Esempio di codice ABAP per estrarre event log P2P
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. Estrazione creazione Purchase Order
  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. Estrazione 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'. " Tipo documento GR
    event_log-activity = 'Goods Receipt'.
    APPEND event_log.
  ENDSELECT.

  " 3. Estrazione registrazione fattura (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. Esportazione risultati su file (opzionale, se permessi abilitati)
  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 completato con successo.'.

Note sul codice ABAP

SezioneScopo
ekkoTabella header per la creazione PO
mseg + mkpfPer registrazioni di Goods Receipt (GR)
rseg + rbkpPer registrazioni di Invoice Receipt (IR)
OPEN DATASETScrive l’event log come CSV sul server (verifica permessi)
bwart = ‘101’Filtro per tipi di movimento GR

Esempi di query SQL per l’estrazione dati

Puoi usare query SQL per estrarre dati dalle tabelle rilevanti. Di seguito alcuni esempi per ogni fase del processo P2P. Adatta le query alle tue esigenze e versione SAP.

Esempio semplice:

-- Creazione Purchase Order
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'; -- Tipo standard PO
-- 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'; -- Tipo ricezione
-- 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'; -- Tipo fattura

Puoi unificare questi log in una sola tabella event log per il process mining:

-- Unione dei diversi event log (UNION semplificata)
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. Esporta come Event Log

Assicurati di avere una struttura unificata che includa almeno: • Case ID • Activity • Timestamp

Consiglio professionale

• Normalizza i timestamp nello stesso fuso orario. • Verifica che i Case ID siano coerenti in tutti gli event. • Pulisci i dati rimuovendo documenti di test o annullati. • Applica filtri come codice azienda, tipo documento o anno fiscale per restringere il perimetro.