Doküman Listesi
Bu Sayfada

SAP'ten P2P Verisi Çıkartma: Adım Adım Kılavuz

SAP’tan Purchase-to-Pay (P2P) Process Mining için Veri Çıkarma

Purchase-to-Pay sürecini Process Mining ile analiz etmek için, SAP’ten yüksek kaliteli event log çıkartmanız gerekmektedir. Aşağıda, bu süreçteki yaygın adımları ve yapılandırmaları bulabilirsiniz.

1. P2P Süreç Kapsamınızı Belirleyin

Veri çıkartmadan önce, sürece dahil etmek istediğiniz adımları netleştirin. Standart bir P2P süreci genellikle şunları içerir:

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

2. Temel SAP Tablolarını Belirleyin

Genellikle aşağıdaki tablolardan veri çekersiniz:

Süreç AdımıSAP TablosuAçıklama
Purchase RequisitionEBANPurchase Requisition Header
Purchase OrderEKKO / EKPOPO Header (EKKO) & Items (EKPO)
Goods ReceiptMKPF / MSEGMaterial Document Header & Line Items
Invoice ReceiptBKPF / BSEGAccounting Document Header & Line Items
PaymentPAYR / REGUHPayment Document Tables

3. Event Log için Gerekli Alanları Belirleyin

Process Mining analizi için genellikle aşağıdaki alanlar gereklidir. Kendi ihtiyacınıza göre alanları ekleyebilirsiniz.

Case IDPO Numarası / Doküman NoBir sürecin tüm event’larını gruplar
ActivityTüretilmiş (örn: “PO Created”)Süreç adımının adı
TimestampAEDAT, BUDAT, CPUDTAdımın gerçekleştiği zaman
User/AgentERNAM, USNAM, vb.Eylemi gerçekleştiren kişi
AmountWRBTR, DMBTRAdımla ilişkili tutar
Vendor / MaterialLIFNR, MATNRPartner ya da malzeme bilgisi

4. Ham Veriyi Çıkartın

SAP ECC (ABAP stack)

  • ABAP Report’ları kullanarak doğrudan ilgili tablolardan veri çekebilirsiniz.
  • Ya da ilgili event verilerini birleştiren, filtreleyen ve dışa aktaran özel ABAP programları yazabilirsiniz.
  • Sonuçları CSV veya flat file olarak dışa aktarabilirsiniz.

SAP S/4HANA (HANA stack)

  • CDS Views (Core Data Services) ile mantıksal modeller tanımlayıp veri çekebilirsiniz.
  • Ya da SAP Fiori uygulamaları veya HANA Studio kullanarak SQL script çalıştırabilirsiniz.
  • Daha iyi otomasyon için ODATA API, SAP Datasphere veya SAP Data Intelligence kullanılabilir.

5. Event Log’u Oluşturun

Process Mining için zorunlu minimum kolonlar

KolonAçıklamaÖrnek
Case IDSüreç örneği için benzersiz kimlikPurchase Order ID
ActivitySüreç adımının adı”Create PO”, “Post Invoice”
TimestampEvent’ın tarih ve saati2025-04-17 10:22:12

Event log’u zenginleştirmek için isteğe bağlı kolonlar

Kolon AdıAçıklama
Userİşlemi yapan kullanıcı
AmountEvent ile ilişkili para değeri
Vendor / MaterialEvent’a dahil olan vendor veya malzeme
Company CodeEvent ile ilişkili şirket kodu
Currencyİşlemdeki para birimi
Document TypeDoküman türü (örn. PO, GR, Invoice)
Other FieldsAmount, Vendor, Currency, vb.

tip

Eğer gerekiyorsa, birden fazla tarih alanını tek aktiviteye ve satıra dönüştürmek için datanızı “unpivot” yapın.

6. Veriyi Dönüştürme ve Temizleme

Ham verileri aldıktan sonra, Process Mining için uygun bir formata dönüştürmeniz gerekebilir. Genellikle şu işlemler yapılır:

  • Timestamp normalizasyonu (örn: UTC’ye çevirme)
  • Aktivite etiketi ekleme (örn: “PO Created” yerine MIGO kodu değil)
  • Her event için tek satır olacak şekilde uzun format
  • NULL değerlerin ve dublelerin temizlenmesi
  • Tutarlı Case ID kullanımı (her örneğe özel)

Kullanabileceğiniz araçlar:

  • SQL script’leri ile veri temizleme/dönüştürme
  • Excel veya Power Query
  • Python + Pandas
  • KNIME, Alteryx veya ETL araçları
Veri Temizliği ve Hazırlığı

Veri temizliği ve hazırlığı, veri analizi sürecinde kritik bir adımdır. Kalite ve doğruluk için datadaki hata, tutarsızlık ve eksikliklerin belirlenip düzeltilmesini kapsar.

Veri Çıkarmak için ABAP Kod Şablonu Örneği

" Purchase-to-Pay event log verisi çıkarmak için örnek ABAP kodu
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 oluşturma kaydı çıkart
  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) kaydı çıkart
  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 doküman tipi
    event_log-activity = 'Goods Receipt'.
    APPEND event_log.
  ENDSELECT.

  " 3. Invoice Posting (MIRO) kaydı çıkart
  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. Sonuçları dosyaya aktar (yetkiniz varsa)
  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 başarıyla dışa aktarıldı.'.

ABAP Kod Hakkında Notlar

BölümAmaç
ekkoPO oluşturmanın header tablosu
mseg + mkpfGoods Receipt (GR) kayıtları için
rseg + rbkpInvoice Receipt (IR) kayıtları için
OPEN DATASETEvent log’u sunucuya CSV olarak yazar (yetki kontrolü gerekir)
bwart = ‘101’GR hareket tipleri için filtre

Veri Çıkarmak için SQL Sorgusu Örnekleri

İlgili tablolardan veri çıkartmak için SQL sorguları kullanabilirsiniz. Her P2P adımına uygun sorgular aşağıda yer almaktadır. Kendi SAP versiyonunuza veya ihtiyacınıza göre düzenleyebilirsiniz.

Basit bir örnek:

-- Purchase Order oluşturma
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'; -- Standart PO tipi
-- 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'; -- Alım tipi
-- 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'; -- Fatura tipi

Bu log’ları, process mining için tek bir event log tablosunda birleştirebilirsiniz:

-- Event log'ları birleştir (UNION ile basitleştirilmiş)
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. Event Log Olarak Dışa Aktar

En azından aşağıdaki alanlara sahip birleşik bir yapınız olduğunda: • Case ID • Activity • Timestamp

Profesyonel İpucu

• Timestamp’leri aynı saat dilimine normalize edin. • Case ID’lerinizin tüm eventlar arasında tutarlı olduğundan emin olun. • Verilerinizi test veya iptal edilen belgelerden arındırın. • Kapsamı daraltmak için company code, document type veya mali yıl gibi filtreler kullanın.