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

בדוגמה הזו לפתרון מוסבר איך להפיק תובנות מהר יותר לגבי מצב ההוצאות של הספקים באמצעות נתונים ממקורות 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 מורכב.