2008-09-30 10 views
6

Je dois obtenir la liste d'un répertoire côté serveur dans SAP. Comment puis-je y parvenir dans ABAP? Y a-t-il des fonctions SAP intégrées que je peux appeler?Récupère le contenu d'un répertoire côté serveur dans SAP ABAP

Idéalement, je veux une fonction que je peux passer un chemin en entrée, et qui retournera une liste de noms de fichiers dans une table interne. La réponse est l'appel du module fonction EPS_GET_DIRECTORY_LISTING.

Répondre

3

Après avoir lu les réponses de Chris Carrthers et tomdemuyt je dirais:

1) Utiliser RZL_READ_DIR_LOCAL si vous avez besoin simple liste de noms de fichiers.

2) EPS_GET_DIRECTORY_LISTING est plus puissant - il peut également lister les sous-répertoires.

Merci à vous deux!

Avec mes meilleures salutations Niki Galanov

+1

L'inconvénient de EPS_GET_DIRECTORY_LISTING est que vous avez besoin d'une autorisation SAP assez étendue car elle fait partie du système de transport (TMS) et n'est généralement donnée qu'aux administrateurs. – Marc

2

DIR_NAME -> Nom du répertoire FILE_MASK -> Passez '*' pour obtenir tous les fichiers.

Remarque: Ceci ne concerne pas les noms de fichiers vraiment volumineux (80 caractères +), il tronque le nom.

+0

Merci, je ne connaissais pas cette fonction, mais elle ne semble pas fonctionner avec les chemins UNC dont j'ai besoin. –

3

fonction Appel RZL_READ_DIR_LOCAL:

FUNCTION RZL_READ_DIR_LOCAL. 
*"---------------------------------------------------------------------- 
*"Lokale Schnittstelle: 
*"  IMPORTING 
*"    NAME LIKE SALFILE-LONGNAME 
*"  TABLES 
*"    FILE_TBL STRUCTURE SALFLDIR 
*"  EXCEPTIONS 
*"    ARGUMENT_ERROR 
*"    NOT_FOUND 
*"---------------------------------------------------------------------- 

Placez le chemin dans le paramètre d'importation NOM, puis lisez le répertoire de la liste FILE_TBL après retour. RZL_READ_DIR_LOCAL peut gérer les chemins locaux normaux ainsi que les chemins UNC. Le seul inconvénient est qu'il ne vous donne accès qu'aux 32 premiers caractères de chaque nom de fichier. Cependant, vous pouvez facilement créer une nouvelle fonction basée sur le code RZL_READ_DIR_LOCAL, et changer la façon dont la sortie du programme C est lue, car les 187 premiers caractères de chaque nom de fichier sont réellement disponibles.

+0

Est-ce que cela lit un répertoire sur le serveur ou sur le client? DIR_LOCAL semble être spécifique au client ... – Thorsten

1

Jetez un oeil à la transaction AL11 code source: RSWATCH0 forme fill_file_list Vous pouvez y obtenir toutes les informations sur les fichiers.

Espérons que cela aide!

3

EPS2_GET_DIRECTORY_LISTING fait la même chose que EPS_GET_DIRECTORY_LISTING MAIS retunrs les noms de fichiers jusqu'à 200 caractères!