← Retour aux blogs

Optimisation performance SAP en S/4HANA : méthode projet

Introduction – Pourquoi la performance est critique en SAP

En projet SAP, la performance n’est pas un sujet de confort. Elle conditionne la fiabilité des processus, la tenue des SLA, et la perception globale de la solution par le métier. En entretien technique, c’est souvent le point qui sépare un développeur correct d’un consultant senior.

En S/4HANA, les choix d’implémentation se voient immédiatement : HANA amplifie les bons choix (pushdown, requêtes ciblées) et punit les mauvais (boucles, SELECT * et traitements ABAP inutiles).

ABAP 7.50+ S/4HANA CDS Views Code Pushdown Clean Core

Enjeux business et techniques

Les impacts sont souvent mesurables : temps de traitement batch, temps de réponse en transaction, montée en charge, coût d’infrastructure et taux d’erreur. Techniquement, cela se traduit par des requêtes DB mal ciblées, des tables internes surdimensionnées et des parcours de code trop verbeux.

Impact Risque métier Symptôme technique
Temps de réponse Perte de productivité SQL lent, CPU applicatif
Batch nocturne Fenêtre non tenue Volume, absence d’index
Stabilité Incidents récurrents Dumps ST22, verrous

Optimisation des accès base de données

Règle d’or S/4HANA : faire travailler la base. Le code pushdown via CDS Views et Open SQL moderne réduit le volume de données, la latence réseau et la charge applicative.

Flux recommandé
Utilisateur
  |  (filtres UI)
  v
CDS View (projection)
  |  (associations, annotations)
  v
CDS View (interface)
  |  (joins, calculations)
  v
Base HANA
  |  (pushdown, agrégations)
"ABAP 7.50+ : Open SQL ciblé et pushdown
SELECT FROM zso_hdr AS hdr
  INNER JOIN zso_itm AS itm
    ON itm~so_id = hdr~so_id
  FIELDS hdr~so_id,
         hdr~customer,
         SUM( itm~net_amount ) AS net_total
  WHERE hdr~status = @lv_status
    AND hdr~created_on BETWEEN @lv_date_from AND @lv_date_to
  GROUP BY hdr~so_id, hdr~customer
  INTO TABLE @DATA(lt_result).

Dans un projet réel, ce simple pushdown a divisé par 6 un écran de suivi des ventes en remplaçant un traitement ABAP par une agrégation SQL.

  • Limiter colonnes et lignes dès le SELECT.
  • Privilégier JOINs, GROUP BY et HAVING côté DB.
  • Contrôler les index et la sélectivité des conditions.

Optimisation ABAP et tables internes

ABAP 7.50+ offre des syntaxes plus claires, mais la performance se joue sur la structure des tables internes, le tri, et la réduction des boucles.

"Table interne adaptée au besoin
TYPES: BEGIN OF ty_line,
         so_id     TYPE zso_id,
         customer  TYPE kunnr,
         net_total TYPE p LENGTH 16 DECIMALS 2,
       END OF ty_line.

DATA lt_data TYPE HASHED TABLE OF ty_line WITH UNIQUE KEY so_id.

Utiliser une HASHED TABLE avec clé unique évite des READ TABLE O(n) et sécurise les recherches.

  • Eviter SELECT dans les boucles, préférer des lectures groupées.
  • Utiliser READ TABLE ... BINARY SEARCH sur table triée.
  • Réduire la volumétrie avant tout traitement ABAP.

Optimisation mémoire et runtime

Sur des traitements batch, la mémoire devient souvent le facteur bloquant. Une table interne trop large peut saturer le work process et provoquer des dumps.

  • Free explicite des tables volumineuses après usage.
  • Eviter les copies inutiles (MOVE-CORRESPONDING sur gros volumes).
  • Charger par paquets (PACKAGE SIZE) pour les extractions massives.
"Extraction par paquets
SELECT FROM zso_hdr
  FIELDS so_id, customer, net_total
  INTO TABLE @DATA(lt_hdr)
  PACKAGE SIZE 5000.

  "Traitement
  CLEAR lt_hdr.
ENDSELECT.

Outils SAP d’analyse de performance

L’analyse se fait avec une approche outillée, pas à l’intuition. On commence par isoler le symptôme, puis on affine avec les bons outils.

Transaction Quand l’utiliser Pourquoi
SAT Profilage code ABAP Mesurer temps CPU et appels
ST05 Suspicion SQL lent Voir les requêtes réelles
SM50 Temps réel d’un WP Observer les traitements actifs
SM66 Vue globale serveur Identifier les goulets multi-WP
ST22 Dumps et erreurs Isoler les exceptions runtime
ATC Contrôle qualité Checks perf et Clean Core
SCI Analyse statique Repérer anti-patterns
DBACOCKPIT Contexte DB/HANA Lire les stats et caches
Workflow d’analyse rapide
Signal utilisateur
  |-> SAT (profil ABAP)
  |-> ST05 (trace SQL)
  |-> SM50/SM66 (WP)
  |-> ST22 (dump)
  v
Synthèse + plan d’action

Cas concrets projet

Voici des scénarios réalistes rencontrés en mission, avec une logique de résolution reproductible.

Batch MRP trop long

Analyse ST05 : SELECT sur table large sans index.

Action : ajout index + filtre sur période.

Gain : -45% sur la fenêtre batch.

Fiori lent en liste

SAT : traitement ABAP après lecture DB.

Action : CDS View avec agrégations pushdown.

Gain : temps de réponse < 1s.

Dump mémoire

ST22 : TSV_TNEW_PAGE_ALLOC_FAILED.

Action : extraction par paquets + FREE.

Gain : traitement stable en batch.

Anti-patterns fréquents

  • SELECT * alors que 5 champs suffisent.
  • SELECT dans une boucle sans mise en cache.
  • FOR ALL ENTRIES sans contrôle sur table vide.
  • Tri côté ABAP quand un ORDER BY suffirait.
  • Tables internes standard pour des recherches intensives.

Ces anti-patterns restent les causes principales de ST05 rouge et de SAT saturé.

Lien avec Clean Core et l’avenir SAP

La performance est un pilier du Clean Core : moins de code custom, plus de standard, plus d’APIs publiées. En S/4HANA, cela passe par ATC, les Released APIs et la conformité ABAP Cloud.

  • Limiter les modifications standard pour rester compatible upgrades.
  • Utiliser des CDS Views et services exposés par SAP.
  • Valider en continu via ATC + SCI.

C’est aussi un argument fort en entretien : vous montrez que la performance est un sujet d’architecture, pas seulement un tuning local.

Conclusion – Messages clés pour consultants SAP

  • Commencer par mesurer : SAT et ST05 avant toute optimisation.
  • Pousser le calcul côté HANA via CDS et Open SQL moderne.
  • Choisir la bonne structure de tables internes selon l’usage.
  • Documenter les gains et sécuriser par ATC/SCI.

Articles récents

Couverture de l’article
ABAPDebug

Debugging SAP ABAP : méthode projet, outils et cas réels

Article complet et terrain sur le debugging SAP ABAP : breakpoints, watchpoints, batch, RFC, IDocs, Fiori/OData et exits.

10/01/2026 1 min de lecture
Lire