ניתוח הוצאות על ספקים

דוגמה למוצר נתונים של צריכה שמראה איך אפשר להפיק תובנות מהר יותר לגבי מיקום ההוצאות על ספקים באמצעות נתונים שמקורם ב-SAP ERP או ב-SAP BDC.

באמצעות הכלי הזה, אפשר:

  • אופטימיזציה של ההוצאה הכוללת לפי סוג החומר ומעקב אחרי ריכוז במדינה.
  • הבנה של דפוסי רכישה נסתרים כדי למקסם את ערך הרכש.
  • שימוש ב-AI כדי לגלות תובנות חדשות.

תרשים עזר לארכיטקטורה

ארכיטקטורת הפניה ברמה גבוהה מספקת סקירה כללית של מוצרי הנתונים הספציפיים למקור שנדרשים כדי להזין את תרחיש השימוש הזה.

ארכיטקטורה לדוגמה של נתוני צריכה למוצר Cortex Framework

איור 1. דוגמה לארכיטקטורה של מוצר נתונים לניתוח הוצאות על ספקים לשימוש ב-Cortex Framework.

מוצרי נתונים נדרשים

אם אתם בונים על נתונים שמקורם ב-SAP ERP, אתם צריכים את מוצרי הנתונים הבאים של Cortex Framework:

  • ספקים
  • מסמכי רכישה
  • ארגונים רוכשים
  • חומרים
  • קבוצות של חומרים
  • סוגי חומרים

אם אתם בונים על נתונים שמקורם ב-SAP BDC, אתם צריכים את מוצרי הנתונים הבאים של BDC:

  • מוצר
  • הזמנת רכש
  • קוד החברה
  • ספק

קטעי קוד

קטע הקוד הבא מספק דוגמה לאופן שבו אפשר ליצור מודל נתונים ב-BigQuery לניתוח הוצאות על ספקים על סמך מוצרי נתונים של SAP ERP שמקורם ב-Cortex Framework, או אחרי שילוב של מוצרי נתונים של SAP BDC.

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

הפעלת סוכני AI

אחרי שיוצרים את מודל הנתונים של ניתוח ההוצאות על ספקים ב-BigQuery, אפשר ליצור סוכן נתונים בהתאמה אישית. כך תוכלו לשאול שאילתות לגבי מדדי ההוצאות של הספקים ישירות באמצעות שפה טבעית, בלי צורך ב-SQL מורכב.