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