La transaction FILE – la base

Nombreux sont les programmes SAP ABAP qui manipulent des fichiers. Il peut s’agir par exemple d’extraction de données du système ou de leur importation. Souvent, un écran de sélection permet à l’utilisateur de spécifier le chemin absolu du fichier à traiter. Ordinateur local de l’utilisateur, répertoire partagé sur le réseau de l’entreprise, répertoire accessible par SAP (depuis par exemple la transaction AL11)… Les possibilités sont nombreuses, et sont autant de failles de sécurité !

SAP recommande en effet, en tant que bonne pratique de sécurité, d’empêcher l’utilisateur de manipuler le chemin d’un fichier. Il faut partir du principe que ledit utilisateur n’a pas besoin de savoir où sont stockés les fichiers. Il ne faut pas non plus lui laisser d’indices sur l’organisation du système de fichiers et lui limiter au maximum la possibilité d’aller fouiller des répertoires auxquels il ne devrait pas avoir accès.

Pour cela, SAP met à disposition une transaction : FILE. Cette transaction va permettre d’associer un chemin physique à un chemin logique. Le nom du fichier peut également y être paramétré (en incluant des variables pour dynamiser le tout).

Comment ça marche ?

Il faudra tout d’abord définir un chemin logique, c’est-à-dire un nom logique qui agira un peu comme un alias vers le vrai chemin du fichier (qu’on appelle chemin physique). À ce chemin logique, on associe une désignation, pour plus facilement s’y retrouver (même si le nom lui-même doit être le plus parlant possible, ça va sans dire).

Sur la capture d’écran ci-dessous, un extrait de la liste des chemins logiques fournis par le standard.

On le voit sur l’arborescence de gauche, une fois le chemin logique sélectionné, il est possible de naviguer sur le niveau inférieur qui permettra l’association d’un chemin logique à un ou plusieurs chemins physiques. Eh oui, potentiellement plusieurs car on discrimine les chemins physiques selon le système d’exploitation sous-jacent.

Sur la capture d’écran suivante, on peut voir à quoi ressemble une telle association :

Ici on est sur un chemin physique UNIX et on voit le chemin physique du fichier.

À noter la présence du tag <FILENAME> qui est obligatoire : cette partie de la transaction FILE ne gère en effet que le chemin, et non le nom du fichier.

D’autres tag sont disponibles mais cet article n’entrera pas dans les détails de leur utilisation.

Et le nom du fichier dans tout ça ?

Le nom du fichier logique est paramétrable depuis un autre nœud de l’arborescence de cette transaction, surligné en jaune sur l’image ci-dessous :

Comme pour les chemins logiques, un nom logique de fichier est associé à un nom physique.

La sécurité avant tout : là encore, l’utilisateur n’a pas forcément besoin de connaitre ou modifier le nom du fichier ; il pourra éventuellement spécifier le nom logique ou agir sur certaines variables pour générer ce nom, mais il faut limiter au maximum ses possibilités à ce niveau.

Sur l’image qui suit, on peut voir les différents champs permettant de créer un nom logique de fichier :

On aura donc son nom et une désignation, suivis du nom du fichier physique : c’est cette partie qui est la plus intéressante. Comme on le voit, il est possible de spécifier directement le nom du fichier mais aussi d’y adjoindre des tags. Ici, la date système sera insérée via le bien nommé tag <DATE>.

La touche F1 sur cette zone donne plus d’informations et liste les tags utilisables, c’est pourquoi cet article ne sera pas plus détaillé à ce sujet.

On pourra également renseigner le format du fichier et son domaine fonctionnel, mais l’autre champ important est le chemin logique. En effet, cette zone permet d’associer notre nom de fichier logique à un chemin logique, ce qui donnera, par concaténation, le chemin absolu du fichier.

Place à l’ABAP

Le paramétrage, c’est bien beau mais il faut bien à un moment donné y accéder depuis notre code ABAP.

Rien de plus simple dans notre cas, car un module fonction standard est là pour ça : FILE_GET_NAME_AND_VALIDATE.

Son utilisation n’a rien de sorcier : il suffit de l’appeler en lui fournissant le nom logique créé dans la transaction FILE, ainsi qu’éventuellement un à trois paramètres supplémentaires (cet article n’entre pas dans les détails, mais ces paramètres sont utilisés comme des tags dans la FILE et permettent de dynamiser un peu plus la génération des noms physiques finaux).

On récupère en sortie le chemin physique absolu du fichier (sous réserve que le nom logique soit associé à un chemin logique).

Et voilà !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.