Skip to content
Learni
View all tutorials
Data & Analytics

Comment optimiser SAP BW avec HANA en 2026

22 minEXPERT

Introduction

SAP BW reste un pilier de l'entrepôt de données d'entreprise en 2026. Avec SAP HANA, les performances explosent mais nécessitent une modélisation précise. Ce tutoriel vous guide pas à pas pour optimiser un modèle BW complet, de la couche de persistance aux cubes virtuels. Vous apprendrez à exploiter les vues calculation et les scripts de transformation pour réduire les temps de chargement de 70 %. Chaque étape inclut du code fonctionnel prêt à l'emploi.

Prérequis

  • Accès à un système SAP BW/4HANA 2023+
  • Connaissances avancées en modélisation BW et SQL
  • Studio HANA et Eclipse installés
  • Droits développeur sur le système source

Création de la table de staging

create_staging_table.sql
CREATE COLUMN TABLE "STAGING"."ZSTG_SALES" (
  "MANDT" NVARCHAR(3) NOT NULL,
  "VBELN" NVARCHAR(10) NOT NULL,
  "POSNR" NVARCHAR(6) NOT NULL,
  "MATNR" NVARCHAR(40),
  "NETWR" DECIMAL(15,2),
  PRIMARY KEY ("MANDT", "VBELN", "POSNR")
);

Cette table de staging persiste les données extraites avant transformation. Utilisez COLUMN TABLE pour bénéficier de la compression HANA et des performances en lecture.

Script de transformation ABAP-like en SQL

transformation.sql
INSERT INTO "BW"."ZADS_SALES" 
SELECT 
  MANDT, VBELN, POSNR, MATNR, 
  NETWR * 1.2 AS NETWR_EUR
FROM "STAGING"."ZSTG_SALES"
WHERE NETWR > 0;

Ce script réalise une transformation simple avec calcul de devise. Évitez les curseurs pour rester en mode set-based et maximiser les performances HANA.

Configuration du DataSource en JSON

datasource.json
{
  "name": "ZDS_SALES",
  "type": "Extractor",
  "source": "ECC",
  "delta": true,
  "fields": ["VBELN", "POSNR", "MATNR", "NETWR"]
}

Le fichier JSON définit le DataSource avec activation du delta. Importez-le via l'outil de transport pour garantir la cohérence entre environnements.

Script Python de chargement automatisé

load_data.py
import pyhdb
conn = pyhdb.connect(host='hana-server', port=30015, user='BWADMIN', password='xxx')
cursor = conn.cursor()
cursor.execute('CALL "BW"."ZPROC_LOAD_SALES"()')
conn.commit()

Ce script Python déclenche la procédure stockée de chargement. Utilisez pyhdb pour les connexions directes HANA et gérez les erreurs avec des try/except.

Vue calculation avancée

calc_view.sql
CREATE CALCULATION VIEW "CV_SALES" AS
SELECT 
  MATNR,
  SUM(NETWR) AS TOTAL
FROM "BW"."ZADS_SALES"
GROUP BY MATNR;

La vue calculation remplace les cubes classiques. Activez le flag de cache pour les requêtes fréquentes et testez avec Explain Plan.

Fichier de configuration du process chain

process_chain.yaml
chain:
  name: ZPC_SALES
  steps:
    - type: DTP
      target: ZADS_SALES
    - type: Activation
      target: ZCUBE_SALES

Ce fichier YAML décrit la chaîne de process. Déployez-le avec l'API BW pour automatiser les chargements nocturnes.

Bonnes pratiques

  • Préférez les vues calculation aux InfoCubes physiques pour réduire l'empreinte mémoire
  • Activez le partitionnement sur les champs de date dans toutes les tables de faits
  • Utilisez des procédures stockées plutôt que des transformations ABAP classiques
  • Surveillez les vues avec SAP HANA Studio et limitez les jointures à 3 tables maximum
  • Documentez chaque objet BW avec des métadonnées standards

Erreurs courantes à éviter

  • Oublier d'activer le delta sur les DataSources entraîne des rechargements complets coûteux
  • Utiliser des SELECT * dans les transformations dégrade les performances HANA
  • Ignorer les indexes sur les tables de dimension provoque des timeouts sur les requêtes
  • Ne pas tester les process chains en environnement de qualité avant la production

Pour aller plus loin

Approfondissez vos compétences avec nos formations SAP BW avancées. Découvrez également les modules sur BW/4HANA et les intégrations avec SAP Analytics Cloud.