Doküman Listesi
Bu Sayfada

SAP'ten P2P için Veri Çıkarma Rehberi

Purchase-to-Pay (P2P) Süreç Madenciliği için SAP’den Veri Çıkarma

Purchase-to-Pay sürecinizi Process Mining ile analiz etmek için SAP’den kaliteli bir event log çıkarmanız gerekir. Aşağıda genel adımlar ve kullanılan yapılar bulabilirsiniz.

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

Veri çıkarmadan önce dahil etmek istediğiniz süreç adımlarını netleştirin. Standart bir P2P süreci şu adımlardan oluşur:

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

2. Temel SAP Tablolarını Belirleyin

Genellikle şu ana SAP tablolarından veri çekersiniz:

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

3. Event Log için Gerekli Alanları Belirleyin

Process Mining için genelde aşağıdaki alanlar gerekir. İhtiyacınıza göre uyarlayabilirsiniz.

Case IDPO Number / Document No.Tüm eventları tek bir process altında toplar
ActivityTürevlenmiş (örn. “PO Created”)Process adımının adı
TimestampAEDAT, BUDAT, CPUDTAdımın zamanı
User/AgentERNAM, USNAM, vb.İşlemi yapan kişi
AmountWRBTR, DMBTRAdımla ilişkili değer
Vendor / MaterialLIFNR, MATNRTedarikçi veya materyal bilgisi

4. Ham Veriyi Çıkarın

SAP ECC (ABAP stack)

  • Verileri doğrudan ilgili tablolardan almak için ABAP Reports kullanın.
  • Ya da özel ABAP programları yazarak ilgili event verilerini birleştirin, filtreleyin ve dışa aktarın.
  • Sonuçları CSV ya da flat dosya olarak export edebilirsiniz.

SAP S/4HANA (HANA stack)

  • Mantıksal modelleri tanımlamak ve veri çıkarmak için CDS Views (Core Data Services) kullanın.
  • Ayrıca SAP Fiori uygulamaları veya HANA Studio ile SQL scriptler çalıştırabilirsiniz.
  • Daha fazla otomasyon için ODATA API, SAP Datasphere veya SAP Data Intelligence kullanın.

5. Event Log’u Oluşturun

Process mining için minimum gereken kolonlar:

KolonÖrnekÖrnek
Case IDProcess instance için benzersiz tanımlayıcıPurchase Order ID
ActivityProcess adımının adı”Create PO”, “Post Invoice”
TimestampEvent’in tarih ve zamanı2025-04-17 10:22:12

Opsiyonel kolonlar ile event log’u zenginleştirebilirsiniz:

Kolon AdıAçıklama
Userİşlemi yapan kullanıcı
AmountEvent’e ait parasal değer
Vendor / MaterialEvent’te yer alan tedarikçi veya materyal
Company CodeEvent ile ilişkili şirket kodu
Currencyİşlemin para birimi
Document TypeBelge türü (örn. PO, GR, Invoice)
Other FieldsAmount, Vendor, Currency, vb.

tip

Gerekirse, çoklu tarih kolonunu tek bir activity satırına çevirmek için verinizi unpivot edin.

6. Veriyi Dönüştür ve Temizle

Ham veriyi aldıktan sonra, process mining için uygun formata dönüştürmeniz gerekebilir. Genellikle şunları içerir:

  • Timestamp’leri normalize etmek (örn. UTC’ye çevirmek)
  • Activity adlarını etiketlemek (örn. MIGO kodu yerine “PO Created”)
  • Her event için tek satır (long format) olması
  • NULL değerler ve tekrarları temizleme
  • Case ID’lerin (her bir instance için benzersiz) tutarlılığı

Kullanabileceğiniz araçlar:

  • Veriyi temizlemek ve dönüştürmek için SQL scriptleri
  • Excel veya Power Query
  • Python + Pandas
  • KNIME, Alteryx veya ETL araçları
Veri Temizleme ve Hazırlık

Veri temizleme ve hazırlık, data analizi sürecinin çok önemli bir adımıdır. Hataları ve tutarsızlıkları tespit edip düzelterek veri kalitesi ve güvenilirliği sağlanır.

ABAP ile Veri Çekme için Örnek Kod Şablonu
" Purchase-to-Pay event log verisi 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şturmanın çekilmesi
  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) verisinin çekilmesi
  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) verisinin çekilmesi
  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 aktarma (opsiyonel, 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 Kodu Hakkında Notlar
BölümAmaç
ekkoPO oluşturma için 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 (izinleri kontrol edin)
bwart = ‘101’GR hareket türü filtresi
Veri Çıkarma Sürecine Yönelik Örnek SQL Sorguları

İlgili tablolardan veri çekmek için SQL sorguları kullanabilirsiniz. Aşağıda, P2P sürecinin her adımı için örnekler var. Sorguları SAP versiyonunuza ve ihtiyacınıza göre uyarlayın.

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'; -- Receipt 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 logları process mining için tek bir event log tablosunda birleştirebilirsiniz:

-- Event logları birleştirme (basit 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. 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.