Publié le :
Reporting SASHELP

Rapport de ventes avec mise en forme conditionnelle

Le programme commence par définir plusieurs formats personnalisés avec PROC FORMAT. Ces formats associent des couleurs de fond et de texte à différentes plages de valeurs numériques. Ensuite, il configure l'Output Delivery System (ODS) pour générer un fichier HTML. Le cœur du script est PROC REPORT, qui crée un rapport tabulaire des ventes pour les produits de type 'OFFICE', groupés par région et pays. Une instruction ACROSS est utilisée pour pivoter les produits en colonnes distinctes. Enfin, des blocs COMPUTE sont utilisés pour calculer un total des ventes et pour appliquer dynamiquement les styles de couleur aux cellules de données et aux lignes de résumé en utilisant la fonction CALL DEFINE.
Analyse des données

Type : SASHELP


Les données proviennent de la table `prdsale` de la bibliothèque standard `SASHELP`. Un filtre `WHERE` est appliqué pour ne sélectionner que les enregistrements où `prodtype` est 'OFFICE'.

1 Bloc de code
PROC FORMAT
Explication :
Ce bloc définit des formats de valeur pour la mise en couleur conditionnelle ('traffic lighting'). Des formats sont créés pour les couleurs de fond (préfixe 'b') et de police (préfixe 'f') pour différentes colonnes et totaux, en fonction de plages de valeurs spécifiques. Par exemple, le format `cback` colore le fond en rouge, jaune ou vert selon la valeur.
Copié !
1PROC FORMAT;
2 value cfore
3 low - 21000 = 'white'
4 21000< - 25000 = 'black'
5 75000 - high = 'white';
6 value cback
7 low - 21000 = 'red'
8 21000< - 25000 = 'yellow'
9 75000 - high = 'green';
10 value fchair
11 low - 23500 = 'white';
12 value bchair
13 low - 23500 = 'red';
14 value fdesk
15 low - 25000 = 'white';
16 value bdesk
17 low - 25000 = 'red';
18 value ftable
19 low - 21000 = 'white';
20 value btable
21 low - 21000 = 'red';
22 value ftotal
23 low - 72000 = 'white';
24 value btotal
25 low - 72000 = 'red';
26 value fregn
27 low - 73000 = 'white';
28 value bregn
29 low - 73000 = 'red';
30RUN;
2 Bloc de code
PROC REPORT
Explication :
Ce bloc génère le rapport final en format HTML. PROC REPORT structure les données de `sashelp.prdsale`, groupées par `region` et `country`, avec les produits pivotés en colonnes. Deux blocs `COMPUTE` sont essentiels : le premier applique des styles aux colonnes de ventes individuelles (`actual`) et aux lignes de résumé régionales. Le second calcule la colonne `totalsales` et lui applique également des styles conditionnels, ainsi qu'aux totaux de la rupture par région.
Copié !
1ods listing close;
2ods html style=default
3 path="&pathesults"
4 body='ch8_4_6b.html';
5 
6title1;
7PROC REPORT DATA=sashelp.prdsale(where=(prodtype='OFFICE'))
8 nowd;
9 column region country product,actual totalsales;
10 define region / group;
11 define country / group;
12 define product / across;
13 define actual / analysis sum
14 FORMAT=dollar8.
15 'Sales';
16 define totalsales / computed FORMAT=dollar10.
17 'Total Sales';
18
19 break after region / summarize suppress;
20 rbreak after / summarize;
21 
22 compute actual;
23 IF _break_ = ' ' THEN DO;
24 call define('_C3_','style','style={background=bchair.
25 foreground=fchair.}');
26 call define('_C4_','style','style={background=bdesk.
27 foreground=fdesk.}');
28 call define('_C5_','style','style={background=btable.
29 foreground=ftable.}');
30 END;
31 ELSE IF _break_='REGION' THEN DO;
32 call define(_row_,'style','style={background=bregn.
33 foreground=fregn.}');
34 END;
35 endcomp;
36 
37 compute totalsales;
38 totalsales = sum(_c3_, _c4_, _c5_);
39 IF _break_ = ' ' THEN DO;
40 call define(_COL_,'style', 'style={background=btotal.
41 foreground=ftotal.}');
42 END;
43 ELSE IF _break_='REGION' THEN DO;
44 call define(_col_,'style','style={background=cback.
45 foreground=cfore.}');
46 END;
47 endcomp;
48RUN;
49ods html close;
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.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Ce script illustre une maîtrise avancée de PROC REPORT. Contrairement aux options de style statiques, l'instruction CALL DEFINE permet un contrôle chirurgical de l'apparence au moment de l'exécution.

L'utilisation des noms de colonnes automatiques comme _C3_ ou _C4_ (générés par l'instruction ACROSS) combinée à la variable interne _BREAK_ permet d'appliquer des styles différents selon que l'on traite une ligne de détail ou une ligne de résumé. C'est une technique d'expert indispensable pour gérer des tableaux croisés dynamiques où le nombre de colonnes peut varier, tout en conservant une mise en page professionnelle et rigoureuse »