Sage X3 – Comment lister les fichiers d’un répertoire avec une fonction personnalisée

💡 Sage X3 – Lister les fichiers d’un répertoire via une fonction personnalisée

Voici une fonction Sage X3 très utile pour extraire la liste des fichiers dans un répertoire selon des critères personnalisés. Elle est parfaite pour automatiser des imports ou traitements par lot.

📌 Objectif : Générer une commande dir compatible avec SYSTEME2 pour obtenir les fichiers ciblés.

🔧 Fonction GET_FILE_IN_DIRECTORY

Funprog GET_FILE_IN_DIRECTORY(PATH, PREFISSO, ESTENSIONE, FILE_ONLY, SUBDIRECTORIES, SORT)
  Variable Char   PATH()
  Value Char      PREFISSO()
  Value Char      ESTENSIONE()
  Value Integer   FILE_ONLY
  Value Integer   SUBDIRECTORIES
  Value Integer   SORT
  Local Char      COMANDO(250)

  PATH = filpath(PATH,"","")
  COMANDO = "dir"
  If (PATH<> "") : COMANDO -= PATH : Endif
  COMANDO += "\\"
  If (PREFISSO<>"") : COMANDO += PREFISSO : Endif
  COMANDO += "*."
  If (ESTENSIONE<>"") : COMANDO += ESTENSIONE : Else : COMANDO += "*" : Endif

  Case FILE_ONLY
    When 1 : COMANDO -= "/a-d"
    When 2 : COMANDO -= "/ad"
  Endcase

  If (SUBDIRECTORIES) : COMANDO -= "/s" : Endif
  COMANDO -= "/b 2>nul"
  If (SORT) : COMANDO -= "| sort" : Endif
End COMANDO

📄 Paramètres

ParamètreTypeDescription
PATHCharChemin du répertoire
PREFISSOCharPréfixe des fichiers
ESTENSIONECharExtension ciblée (ex: csv)
FILE_ONLYInteger0: Tous, 1: Fichiers, 2: Dossiers
SUBDIRECTORIESInteger0: courant, 2: avec sous-dossiers
SORTInteger0: sans tri, 1: tri alphabétique

✅ Exemple d’utilisation

Local Char COM(250)
Local Char IMPORT_DIRECTORY (250)
[L]IMPORT_DIRECTORY = filpath("IMPORT\\Directory", "", "")
Local Char IMPORT_PATH (250)
Local Char FILESLIST ([V]GDIMFIC)(0..1000)
Local Integer FC, FILESCOUNT, J

[L]COM = func GET_FILE_IN_DIRECTORY([L]IMPORT_DIRECTORY, "", "csv", 1, 0, 0)
Call SYSTEME2(adxmac(-1), [L]COM, "", [L]FC, [L]FILESLIST) From ORDSYS
[L]FILESCOUNT = min([L]FC, dim([L]FILESLIST))

For J = 0 To [L]FILESCOUNT - 1
  [L]FILNAM = left$([L]FILESLIST(J), instr(0, [L]FILESLIST(J), ".") -1)
  [L]IMPORTPATH = filpath([L]IMPORT_DIRECTORY, [L]FILNAM, "csv")
Next J

🚀 Astuce

Cette méthode est idéale pour automatiser les flux de données Sage X3 : traitement des imports, analyse de fichiers entrants, etc.

🎯 Conclusion

Grâce à cette fonction simple et puissante, la gestion des fichiers devient plus fluide dans Sage X3. Elle peut s’intégrer à tous vos développements métiers personnalisés.

🔽 N’hésitez pas à commenter si vous souhaitez d’autres fonctions utiles sur Sage X3.