Contexte
Vous êtes vous déjà trouvé dans le besoin de générer un fichier ZIP à partir d'un code en ABAP ? Dans cet article, nous explorerons la classe CL_ABAP_ZIP. Nous plongerons dans les méthodes et les fonctionnalités offertes par cette classe, dévoilant ainsi les étapes fondamentales pour comprimer des données en toute efficacité.
Fonctionnalités
La classe CL_ABAP_ZIP est composé des méthodes suivantes :
- LOAD
- SAVE
- GET
- ADD
- DELETE
- CRC32
- SPLICE
Dans cet article, seules les méthodes SAVE et ADD seront abordées.
Initialisation
Etant donné qu'il s'agit d'une classe d'instance, il faut initialiser un objet pour avoir accès à ses fonctionnalités.
DATA(lo_zipper) = NEW cl_abap_zip( ).
Ajouter des fichiers - Méthode ADD
Pour ajouter un fichier au fichier ZIP, il faut utiliser la méthode ADD. Les informations nécessaires pour cette méthode sont lee nom du fichier et son contenu.
lo_zipper->add( name = CONV #( lv_file_path )
content = lv_file_contents ).
Pour placer le fichier "à la racine" du fichier ZIP, il suffit de spécifier le nom du fichier.
lv_file_path = Filename.docx
Il est également possible d'ajouter des fichiers dans une arborescence. Pour cela, il faut spécifier le chemin du dossier dans le nom du fichier.
lv_file_path = Folder1\Subfolder2\Subfolder3\filename.docx
Le contenu du fichier doit être au format XSTRING. Pour ce faire, si nécessaire, convertissez le contenu de votre fichier binaire en XSTRING en utilisant le module fonction SCMS_BINARY_TO_XSTRING.
CALL FUNCTION 'SCMS_BINARY_TO_XSTRING'
EXPORTING
input_length = lv_size
IMPORTING
buffer = rv_file_contents
TABLES
binary_tab = lt_binary_contents.
Sauvegarder le fichier - Méthode SAVE
Après avoir ajouté tous les fichiers au fichier ZIP, il faut l'enregistrer. Cette méthode ne doit être appelée qu'une seule fois lors de votre exécution. Cet appel renverra le contenu du fichier ZIP au format XSTRING.
DATA(lv_zip_file) = lo_zipper->save( ).
Après cela, en fonction de votre scénario, il sera possible d'enregistrer le fichier côté client ou côté serveur, en fonction du besoin. Il faut néanmoins s'assurer d'ajouter l'extension ".zip" au fichier lors de son enregistrement, que ce soit sur le serveur ou le client.