Analyse der Ausgaben für Lieferanten

Dieses Beispiel für ein Produkt mit Verbrauchsdaten zeigt, wie Sie mithilfe von Daten aus SAP ERP oder SAP BDC schneller Einblicke in die Ausgaben für Lieferanten erhalten.

Sie können damit:

  • die Gesamtausgaben nach Materialart optimieren und die Länderkonzentration verfolgen.
  • versteckte Kaufmuster erkennen, um den Beschaffungswert zu maximieren.
  • KI verwenden, um neue Erkenntnisse zu gewinnen.

Referenzarchitektur

Eine allgemeine Referenzarchitektur bietet einen Überblick über die quellenspezifischen Datenprodukte, die für diesen Anwendungsfall erforderlich sind.

Beispiel für eine Referenzarchitektur für das Datenprodukt „Verbrauch“ für das Cortex Framework

Abbildung 1. Referenzarchitektur des Beispiels für ein Produkt mit Verbrauchsdaten zur Analyse der Ausgaben für Lieferanten für Cortex Framework.

Erforderliche Datenprodukte

Wenn Sie auf Daten aus SAP ERP aufbauen, sind die folgenden Cortex Framework-Datenprodukte erforderlich:

  • Anbieter
  • Einkaufsbelege
  • Einkaufsorganisationen
  • Materialien
  • Materialgruppen
  • Materialarten

Wenn Sie auf Daten aus SAP BDC aufbauen, sind die folgenden BDC-Datenprodukte erforderlich:

  • Produkt
  • Auftrag
  • Unternehmenscode
  • Anbieter

Code-Snippets

Das folgende Code-Snippet zeigt, wie Sie ein BigQuery-Datenmodell für die Analyse der Ausgaben für Lieferanten auf der Grundlage von SAP ERP-Datenprodukten aus Cortex Framework oder nach der Integration von SAP BDC-Datenprodukten erstellen.

WITH purchasing_items AS (
  SELECT
    client_mandt,
    purchasing_document_number_ebeln,
    item_number_of_purchasing_document_ebelp,
    material_number_matnr,
    plant_werks,
    po_quantity_menge,
    net_order_value_in_po_currency_netwr,
    gross_order_value_in_po_currency_brtwr,
    delivery_completed_flag_elikz
  FROM
    <YOUR_PROJECT_ID>.<YOUR_CORTEX_DATA_PRODUCTS_DATASET>.purchasing_document_items
),

purchasing_headers AS (
  SELECT
    client_mandt,
    purchasing_document_number_ebeln,
    vendor_account_number_lifnr,
    purchasing_organization_ekorg,
    purchasing_document_date_bedat as order_date_bedat,
    currency_key_waers
  FROM
    <YOUR_PROJECT_ID>.<YOUR_CORTEX_DATA_PRODUCTS_DATASET>.purchasing_document_headers
),

vendor_data AS (
  SELECT
    client_mandt,
    account_number_of_vendor_or_creditor_lifnr as vendor_account_number_lifnr,
    name1_name1 as vendor_name_name1,
    country_key_land1,
    central_deletion_flag_for_master_record_loevm
  FROM
    <YOUR_PROJECT_ID>.<YOUR_CORTEX_DATA_PRODUCTS_DATASET>.vendors_md
),

material_data AS (
  SELECT
    client_mandt,
    material_number_matnr,
    material_text_maktx,
    material_type_mtart,
    material_group_matkl
  FROM
    <YOUR_PROJECT_ID>.<YOUR_CORTEX_DATA_PRODUCTS_DATASET>.materials_md
),

purchasing_orgs AS (
  SELECT
    client_mandt,
    purchasing_organization_ekorg,
    purchasing_organization_text_ekotx
  FROM
    <YOUR_PROJECT_ID>.<YOUR_CORTEX_DATA_PRODUCTS_DATASET>.purchasing_organizations_md
)

SELECT
  i.client_mandt,
  i.purchasing_document_number_ebeln,
  i.item_number_of_purchasing_document_ebelp,
  h.vendor_account_number_lifnr,
  v.vendor_name_name1,
  v.country_key_land1,
  i.material_number_matnr,
  m.material_text_maktx,
  m.material_type_mtart,
  m.material_group_matkl,
  h.purchasing_organization_ekorg,
  o.purchasing_organization_text_ekotx,
  
  -- Baseline financial & temporal fields
  h.order_date_bedat,
  i.po_quantity_menge,
  i.net_order_value_in_po_currency_netwr,
  i.gross_order_value_in_po_currency_brtwr,
  i.net_order_value_in_po_currency_netwr as spend_usd,
  
  -- Active vendor indicator (True if not deleted)
  CASE 
    WHEN v.central_deletion_flag_for_master_record_loevm = 'X' THEN false
    ELSE true
  END as active_vendor_indicator,
  
  -- Purchase Price Variance (PPV) - Net versus Gross baseline/target difference
  (i.gross_order_value_in_po_currency_brtwr - i.net_order_value_in_po_currency_netwr) as purchase_price_variance_ppv,
  
  -- Delivery and overdues tracking
  i.delivery_completed_flag_elikz,
  CASE 
    WHEN i.delivery_completed_flag_elikz != 'X' THEN i.net_order_value_in_po_currency_netwr
    ELSE 0
  END as open_po_net_amount,
  
  CASE 
    WHEN i.delivery_completed_flag_elikz != 'X' AND h.order_date_bedat < DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY) THEN true
    ELSE false
  END as is_overdue,
  
  -- Efficiency & Performance metrics
  SAFE_DIVIDE(i.net_order_value_in_po_currency_netwr, i.po_quantity_menge) as average_spend_per_unit,
  (i.gross_order_value_in_po_currency_brtwr - i.net_order_value_in_po_currency_netwr) as gross_net_variance,
  1 as line_item_count
  
FROM
  purchasing_items i
LEFT JOIN
  purchasing_headers h
  ON i.client_mandt = h.client_mandt
  AND i.purchasing_document_number_ebeln = h.purchasing_document_number_ebeln
LEFT JOIN
  vendor_data v
  ON h.client_mandt = v.client_mandt
  AND h.vendor_account_number_lifnr = v.vendor_account_number_lifnr
LEFT JOIN
  material_data m
  ON i.client_mandt = m.client_mandt
  AND i.material_number_matnr = m.material_number_matnr
LEFT JOIN
  purchasing_orgs o
  ON h.client_mandt = o.client_mandt
  AND h.purchasing_organization_ekorg = o.purchasing_organization_ekorg

KI-Agents aktivieren

Nachdem Sie Ihr Datenmodell für die Analyse der Ausgaben für Lieferanten in BigQuery erstellt haben, können Sie einen benutzerdefinierten Daten-Agenten erstellen. So können Sie Ausgabenkennzahlen für Lieferanten direkt mit natürlicher Sprache abfragen, ohne dass komplexes SQL erforderlich ist.