Analyse des dépenses des fournisseurs
Cet exemple de solution montre comment accélérer l'obtention d'insights sur la position des dépenses des fournisseurs à l'aide de données provenant de SAP ERP ou SAP BDC.
Il vous permet de :
- Optimisez les dépenses totales par type de matériau et suivez la concentration par pays.
- Comprendre les tendances d'achat cachées pour maximiser la valeur des achats.
- Utilisez l'IA pour découvrir de nouveaux insights.
Architecture de référence
Une architecture de référence de haut niveau fournit une vue d'ensemble des produits de données spécifiques à la source requis pour alimenter ce cas d'utilisation.
Produits de données requis
Si vous créez des produits de données à partir de données SAP ERP, les produits de données Cortex Framework suivants sont requis :
- Fournisseurs
- Documents d'achat
- Organisations à l'origine de l'achat
- Matériaux
- Groupes de matériaux
- Types de matériaux
Si vous créez des produits de données à partir de données SAP BDC, les produits de données BDC suivants sont requis :
- Produit
- Bon de commande
- Code de l'entreprise
- Fournisseur
Extraits de code
L'extrait de code suivant montre comment créer un modèle de données BigQuery pour l'analyse des dépenses des fournisseurs à partir de produits de données SAP ERP provenant de Cortex Framework ou après l'intégration de produits de données 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
Activer les agents d'IA
Après avoir créé votre modèle de données d'analyse des dépenses des fournisseurs dans BigQuery, vous pouvez créer un agent de données personnalisé. Cela vous permet d'interroger directement les métriques sur les dépenses des fournisseurs en langage naturel, sans avoir besoin d'utiliser un langage SQL complexe.