Publié le :
Reporting SASHELP

Génération de rapports PDF via ODS et macros

Ce code est également disponible en : Deutsch English Español
Le script démontre l'utilisation de la destination ODS PDF pour créer des rapports paginés. Il commence par un rapport unique sur les chaussures filtrées. Ensuite, il définit une macro '%loopTroughMake' qui génère un rapport de voitures pour une marque spécifiée, chaque rapport étant enregistré dans un fichier PDF distinct. La macro est appelée plusieurs fois pour différentes marques de voitures, illustrant la génération dynamique de multiples sorties PDF.
Analyse des données

Type : SASHELP


Les données proviennent exclusivement des bibliothèques SASHELP, notamment les jeux de données SASHELP.SHOES et SASHELP.CARS, qui sont des jeux de données d'exemple intégrés à SAS.

1 Bloc de code
PROC REPORT
Explication :
Ce bloc initialise la destination ODS PDF pour créer le fichier 'input_pdf_merge_1.pdf'. Il génère un rapport simple utilisant 'PROC REPORT' sur le jeu de données SASHELP.SHOES, filtrant les régions 'Canada' et 'Pacific', et affichant la région, le produit et les ventes.
Copié !
1ODS PDF FILE= "&out/input_pdf_merge_1.pdf" NOTOC;
2TITLE "Table 1: By Group Report about shoes";
3PROC REPORT DATA=sashelp.shoes(WHERE=(region IN ('Canada', 'Pacific'))) CONTENTS="";
4 BY region;
5 COLUMN region product sales;
6 DEFINE region / ORDER NOPRINT;
7RUN;
8ODS PDF CLOSE;
2 Bloc de code
Macro
Explication :
Définit la macro '%loopTroughMake' qui prend deux paramètres : 'make' (marque de voiture) et 'i' (numéro de fichier/titre). Pour chaque appel, elle ouvre un nouveau fichier PDF, crée un rapport avec 'PROC REPORT' à partir de SASHELP.CARS filtré par la marque spécifiée, puis ferme le fichier PDF. Cela permet une génération répétée de rapports avec des données différentes.
Copié !
1%MACRO loopTroughMake(make,i);
2 ODS PDF FILE= "&out/input_pdf_merge_&i..pdf" NOTOC;
3 TITLE "Table &i: Multiple outputs - Cars for make = &make";
4 PROC REPORT DATA=sashelp.cars(WHERE=(make = "&make")) nowd headline spacing=2;
5 COLUMN make model type msrp;
6 RUN;
7 TITLE;
8 ODS PDF CLOSE;
9%MEND;
3 Bloc de code
Appel de macro
Explication :
Ces lignes appellent la macro '%loopTroughMake' trois fois avec différentes marques de voitures (Acura, Audi, BMW) et des numéros d'index correspondants. Chaque appel générera un fichier PDF distinct contenant un rapport sur les voitures de la marque spécifiée.
Copié !
1%loopTroughMake(Acura,2);
2%loopTroughMake(Audi,3);
3%loopTroughMake(BMW,4);
4 
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : Project : SMILE - SAS Macros, Intuitive Library Extension Author : Katja Glass Creation : 2021-02-18 License : MIT