debugBW

Transpilez et déboguez pas-à-pas vos fonctions BW/HANA (table & scalaires) sur PostgreSQL

🏢 Espace par défaut

Un environnement = un client × un système (production, pré-production, développement…). Chacun a ses propres tables physiques, sa bibliothèque de fonctions, ses scénarios et son historique — rien ne circule de l'un à l'autre.

Normalement celui de l'environnement actif. Choisir un autre système permet d'exécuter par exemple le code de développement contre les données de production, avant une livraison. Les tables, scénarios et historique restent ceux de l'environnement actif.

Créer, dupliquer, supprimer un système, ou copier des données et des fonctions de l'un à l'autre :

Espace de travail

Sauvegardez ou restaurez d'un coup toute la bibliothèque de fonctions, les tables physiques (structure + données) et les scénarios de non-régression — pour transférer votre travail vers un autre environnement ou en garder une copie de sûreté.

Tables d'entrée & données d'exemple
objet {nom: valeur}

Analysez, transpilez ou exécutez votre fonction pour voir les résultats ici.

Chaque variable-table intermédiaire (lt_…) est matérialisée puis affichée : c'est le pas-à-pas de débogage impossible dans HANA.

Les tables physiques reconstituent le catalogue HANA (ZCTT005, /BIC/…) : persistantes, alimentées ici, la transpilation pointe dessus. Les tables internes (temp_…) sont produites à chaque exécution pour tracer les étapes.

Sensible à la casse (comme les références quotées HANA). Ex : ZCTT005, /BIC/AAAD_AC4237

Chaque scénario mémorise le code, les tables d'entrée, les paramètres et le résultat HANA attendu. « Tout rejouer » exécute tout et compare — le filet de sécurité quand vous modifiez une fonction. Enregistrez un scénario depuis Déboguer → Fonctions (« Comparer avec le résultat HANA » → « Enregistrer comme scénario »).

Collez la classe générée par la transformation (CLASS /BIC/CL_TRFN… IMPLEMENTATION), ou seulement le bloc METHOD … BY DATABASE PROCEDURE … ENDMETHOD. Avec la section DEFINITION, la signature et les colonnes attendues du paquet sont lues au passage.

Un système = un client × un environnement (production, pré-production, développement…). Chacun a ses propres tables physiques, sa bibliothèque de fonctions, ses scénarios et son historique, dans un schéma PostgreSQL distinct : rien ne circule de l'un à l'autre sans qu'on le demande, ci-dessous.

Un système vide, prêt à recevoir des tables et des fonctions. Pour repartir du contenu d'un système existant, utilisez plutôt Dupliquer ci-dessous.

Deux questions qui reviennent sans cesse avant une livraison : le code est-il le même partout, et les tables le sont-elles ? Rien n'est exécuté ici : on lit et on compare. Les systèmes sont confrontés ensemble et non deux par deux — chez un client qui a PROD, PPROD et DEV, la vraie question est « où est l'intrus ».

En HANA, SESSION_CONTEXT('CLIENT') rend le mandant de la session — d'où le WHERE mandt = SESSION_CONTEXT('CLIENT') omniprésent dans le code ABAP/BW. Ce n'est pas une donnée du code mais une propriété du système, et elle diffère de l'un à l'autre : elle se renseigne donc ici. Tant qu'une clé utilisée manque, l'exécution échoue en le disant plutôt que de rendre NULL — ce qui viderait le résultat sans prévenir.

Crée un nouveau système et y recopie le contenu d'un système existant — pour ouvrir un bac à sable sur une copie de la production sans jamais toucher à l'original.

La copie est faite par PostgreSQL, d'un schéma à l'autre : les lignes ne transitent pas par l'application, une table de dix millions de lignes coûte donc le même trajet qu'une table de dix. Le système source n'est jamais modifié.