Comment afficher dynamiquement les champs d'une table dans Sage X3 via SQL

🧾 Comment afficher dynamiquement les champs d'une table dans Sage X3 avec SQL

Dans Sage X3, il est parfois nécessaire de lister dynamiquement les champs d’une table interne (comme XSAL pour les salariés), en affichant leurs codes, noms lisibles et types.

Voici une requête SQL utile pour extraire :

  • Le code de la table
  • Le nom de la table (multilingue)
  • Le type de champ
  • Le code de champ
  • Le nom de champ en français

📋 Requête SQL

/* Sélection des champs d'une table Sage X3 */
SELECT 
    ATABLE.CODFIC_0 AS Code_Table,
    ATEXTE2.TEXTE_0 AS TABLE_NAME,
    ATABZON.CODTYP_0 AS Type_Champ,
    ATABZON.CODZONE_0 AS Code_Champ, 
    ATEXTE.TEXTE_0 AS Nom_Champ

FROM 
    x3.BASE1.ATABZON AS ATABZON
LEFT OUTER JOIN 
    x3.BASE1.ATABLE AS ATABLE
    ON ATABLE.CODFIC_0 = ATABZON.CODFIC_0
LEFT OUTER JOIN 
    x3.BASE1.ATEXTE AS ATEXTE
    ON ATABZON.NOLONG_0 = ATEXTE.NUMERO_0 
LEFT OUTER JOIN 
    x3.BASE1.ATEXTE AS ATEXTE2
    ON ATABLE.INTITFIC_0 = ATEXTE2.NUMERO_0 

WHERE 
    ATABZON.CODFIC_0 = 'XSAL' /* table des salariés */
    AND ATEXTE.LAN_0 = 'FRA'  /* champ en français */
    AND ATEXTE2.LAN_0 = 'FRA'; /* nom de table en français */
  

📌 Explication des colonnes

  • ATABZON : contient les champs des tables
  • ATABLE : contient les métadonnées des tables
  • ATEXTE : contient les libellés multilingues des champs
  • LAN_0 : code langue ('FRA' = français)

📊 Exemple d'application

En exécutant cette requête sur la table XSAL, tu obtiendras une liste complète des champs salariés avec :

  • Code champ → par ex. IDENT1
  • Nom du champ → par ex. Nom du salarié
  • Type → Char, Date, Decimal, etc.

💡 Tu peux remplacer 'XSAL' par n'importe quelle autre table Sage X3 (par exemple 'BPCUSTOMER' pour les clients).

🔗 Astuce bonus

Pour voir tous les champs d’un dossier X3 sans filtrer sur CODFIC_0, supprime la ligne du WHERE !

🔗 Source : Requête technique Sage X3 pour documentation interne et développement