Veröffentlicht am :

Automatisierte Generierung verknüpfter HTML-Berichte mit Navigation

Dieser Code ist auch verfügbar auf: English Español Français
Das Skript definiert ein Makro '%linked', das die Erstellung eines Hauptberichts und mehrerer detaillierter Unterberichte automatisiert. Es verwendet PROC SQL, um die verfügbaren Jahre in den Daten dynamisch zu identifizieren. Der Hauptbericht enthält Hyperlinks (Drill-down) speziell für die Produktlinie 'Sports', die zu detaillierten HTML-Dateien führen, die iterativ für jedes Jahr über eine Makroschleife generiert werden.
Datenanalyse

Type : SASHELP


Die Daten stammen aus der Standardtabelle 'sashelp.orsales'. Es sind keine externen Daten erforderlich.

1 Codeblock
PROC SQL
Erklärung :
Ruft die eindeutige Liste der in der Tabelle 'sashelp.orsales' vorhandenen Jahre ab und speichert diese Werte in einer Reihe von Makrovariablen (:year1, :year2...), um die spätere Generierungsschleife zu steuern.
Kopiert!
1PROC SQL noprint;
2 select distinct year
3 into :year1 - :year99
4 from sashelp.orsales;
5 %let yearcnt = &sqlobs;
6 QUIT;
2 Codeblock
PROC REPORT
Erklärung :
Generiert den Hauptzusammenfassungsbericht. Verwendet einen 'COMPUTE'-Block, um dynamisch eine URL (Drill-down-Link) zu erstellen, wenn die Produktlinie 'Sports' ist, die auf den detaillierten Bericht des entsprechenden Jahres verweist.
Kopiert!
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 Codeblock
PROC REPORT
Erklärung :
Makroschleife, die über jedes erkannte Jahr iteriert. Für jedes Jahr wird eine separate HTML-Datei generiert, die die Gewinndetails für die Kategorie 'Sports' enthält, gefiltert über eine dynamische WHERE-Klausel.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.