Détection de doublons dans Sage X3 - YDUPMAT





YDUPMAT : Détection des matricules en double dans Sage X3

Dans ce billet, nous allons explorer une fonction L4G personnalisée nommée YDUPMAT, développée pour détecter les matricules dupliqués dans la table XSAL du système Sage X3.

🎯 Objectif

Identifier tous les enregistrements de la table XSAL où le champ XMAT_0 (matricule) apparaît plus d'une fois, puis enregistrer un journal de ces doublons via le module LECFIC.

💡 Fonction complète YDUPMAT

######################################################################################
# Fonction : YDUPMAT
# Sous-programme de détection des matricules en double dans la table XSAL
Funprog YDUPMAT()

# Déclaration des variables locales
Local Char XMAT(50)
Local Integer NBRE, trouver
Local Char SQLREQ(250)
Local Char MESSAGE(200)

SQLREQ = ""

# Ouvrir le fichier de trace
Call OUVRE_TRACE("YDUPMAT") From LECFIC
Call ECR_TRACE("=== Début détection des matricules en double ===", -1) From GESECRAN

# Requête SQL pour récupérer les matricules en double
SQLREQ = "SELECT XMAT_0, COUNT(*) AS NBRE FROM jbelrh.JBELRH.XSAL XSAL GROUP BY XMAT_0 HAVING COUNT(*) > 1"

# Traitement SQL (connexion SQL Server = "5")
For (Char XMAT(50), Integer NBRE) From "5" Sql SQLREQ As [RS]
    MESSAGE = "Matricule '" + [F:RS]XMAT + "' apparaît " + num$([F:RS]NBRE) + " fois"
    Call ECR_TRACE(MESSAGE, 1) From GESECRAN
    If [F:RS]XMAT <> "" Then
        trouver += 1
    Endif
Next

Call ECR_TRACE("=== Fin de détection : " + num$(trouver) + " doublons trouvés ===", -1) From GESECRAN

# Fermer et lire le journal
Call FERME_TRACE From LECFIC
Call LEC_TRACE From LECFIC

End trouver

🛠️ Modules utilisés

  • LECFIC : ouverture, écriture et fermeture du journal de trace
  • GESECRAN : écriture formatée dans la trace utilisateur

✅ Résultat

Un fichier de trace contenant tous les matricules en double, leur nombre d'occurrences, et le total des doublons détectés à la fin.

📦 Conclusion

Ce traitement est un excellent exemple d'audit automatique dans Sage X3, utile pour garantir l'unicité des données RH et éviter les incohérences dans les matricules salariés.