Publicado el :
Informes SASHELP

Generación automatizada de informes HTML vinculados con navegación

Este código también está disponible en: Deutsch English Français
El script define una macro '%linked' que automatiza la creación de un informe principal y múltiples subinformes detallados. Utiliza PROC SQL para identificar dinámicamente los años disponibles en los datos. El informe principal contiene enlaces de hipertexto (drill-down) específicamente para la línea de producto 'Sports', que conducen a archivos HTML detallados generados iterativamente para cada año a través de un bucle de macro.
Análisis de datos

Type : SASHELP


Los datos provienen de la tabla estándar 'sashelp.orsales'. No se requieren datos externos.

1 Bloque de código
PROC SQL
Explicación :
Recupera la lista distinta de años presentes en la tabla 'sashelp.orsales' y almacena estos valores en una serie de macro-variables (:year1, :year2...) para controlar el bucle de generación posterior.
¡Copiado!
1PROC SQL noprint;
2 select distinct year
3 into :year1 - :year99
4 from sashelp.orsales;
5 %let yearcnt = &sqlobs;
6 QUIT;
2 Bloque de código
PROC REPORT
Explicación :
Genera el informe resumido principal. Utiliza un bloque 'COMPUTE' para construir dinámicamente una URL (enlace de desglose) cuando la línea de producto es 'Sports', apuntando al informe detallado del año correspondiente.
¡Copiado!
1ods html style=default
2 path="&pathesults"
3 body='E8_4b.html';
4 
5title1 'Total profit per year';
6/* ... titres ... */
7 
8PROC REPORT DATA=sashelp.orsales nowd split='*';
9 column year product_line profit;
10 define year / group;
11 define product_line
12 / group
13 'Product*Groups';
14 define profit / analysis
15 sum FORMAT=dollar15.2
16 'Annual*Profit';
17 break after year / summarize suppress skip;
18 rbreak after / summarize ;
19 
20 compute before year;
21 yr = year;
22 endcomp;
23 compute product_line;
24 * For SPORTS create a link;
25 IF product_line = 'Sports' THEN DO;
26 link = 'Sports'||trim(left(put(yr,4.)))||'.html';
27 call define(_col_, 'url', link);
28 END;
29 endcomp;
30 RUN;
31 
32ods _all_ close;
3 Bloque de código
PROC REPORT
Explicación :
Bucle de macro que itera sobre cada año detectado. Para cada año, genera un archivo HTML distinto que contiene el detalle de las ganancias para la categoría 'Sports', filtrado a través de una cláusula WHERE dinámica.
¡Copiado!
1%DO yr = 1 %to &yearcnt;
2 * Sports Detail Report for &&year&yr;
3 ods html style=default
4 path="&pathesults"
5 body="Sports&&year&yr...html";
6 
7 title2 "Sports Detail for &&year&yr";
8 title3 "<a href='E8_4b.html'>Return to Full Report<a>";
9 
10 PROC REPORT DATA=sashelp.orsales(where=(product_line='Sports' & year=&&year&yr))
11 nowd split='*';
12 column product_category profit;
13 /* ... définitions colonnes ... */
14 rbreak after / summarize ;
15 RUN;
16 
17 ods _all_ close;
18%END;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.