ODS & proc print/ report: Zeilen formatiert einfärben

Kann man eine ganze Zeile abhängig vom Wert einer Zelle einfärben?

Beispiel für das formatierte einfärben einer Zelle:
þsascodeÿ
data test;
var1=1; var2="aaa"; output;
var1=1; var2="bbb"; output;
var1=1; var2="ccc"; output;
var1=1; var2="ddd"; output;
var1=2; var2="eee"; output;
var1=1; var2="fff"; output;
var1=1; var2="ggg"; output;
var1=2; var2="hhh"; output;
run;
ods html FILE="test.html"
>Das hätte ich gerne für:
style(row)={foreground=fore.}
.. aber für "row" funktioniert das SO leider nicht.

Beitrag leider defekt

Kann man eine ganze Zeile abhängig vom Wert einer Zelle einfärben?

Beispiel für das formatierte einfärben einer Zelle:

data test;
  var1=
1; var2="aaa"; output;
  var1=
1; var2="bbb"; output;
  var1=
1; var2="ccc"; output;
  var1=
1; var2="ddd"; output;
  var1=
2; var2="eee"; output;
  var1=
1; var2="fff"; output;
  var1=
1; var2="ggg"; output;
  var1=
2; var2="hhh"; output;
run;
ods html FILE="test.html";

proc format;
  
value fore
      
2 = 'red'
  
other = 'black';
run;

proc report data=test nowd;
  
column var1 var2;
  
define var1 / style(column)={foreground=fore.};
run;

ods html close;
Das hätte ich gerne für
style(row)={foreground=fore.}
... aber leider geht das SO nicht.

Lösung gefunden!

Zusammen mit meinem Kollegen Herrn Kneilmann habe ich die Lösung rausgefunden:
Es geht mit COMPUTE und CALL DEFINE (_ROW_, blablabla)

Hier das neue Beispiel:

data test;
  var1=
"1046"; var2="aaa"; output;
  var1=
"1001"; var2="bbb"; output;
  var1=
"1001"; var2="ccc"; output;
  var1=
"1041"; var2="ddd"; output;
  var1=
"1001"; var2="eee"; output;
  var1=
"1064"; var2="fff"; output;
  var1=
"1001"; var2="ggg"; output;
  var1=
"1001"; var2="hhh"; output;
run;
ods html FILE="test.html";

proc report data=test nowd;
  
column var1 var2;
  
COMPUTE var1;
    
if var1 eq "1046" then do;
      
call define(_row_, "style", "style=[foreground=red]");
    
end;
  
ENDCOMP;  
run;

ods html close;

Ja aber SAS färbt die

Ja aber SAS färbt die komplette Zeile (_row_) ein. Geht dies auch nur für den Zellen wert var1 = 1046 ?

So sollte es funktionieren

Bei mir funktioniert es mit folgendem Code:

proc report data=test nowd;
  
column var1 var2;
  
compute var1;
  
if var1 = 1046 then do;
     
CALL DEFINE("var1", "STYLE","STYLE=[background=verylight yellow]");
  
end;
  
endcomp;
run;

super...

klapppt. Das ganze ist jetzt allerdings in der proc report. welche Elemtente muß ich verwenden um das ganze in der Proc tabulate, summary, print... zu verwenden ?

z.B. in Tabulate
PROC TABULATE
DATA=WORK.NEWBUSINESS

OUT=WORK.Zusammenfassung(LABEL="Zusammenfassungstabellen für WORK.NEWBUSINESS")

;
VAR BRUBEU STRKEU;
CLASS NAME / ORDER=DATA MISSING;
CLASS PRODNR / ORDER=FORMATTED MISSING;
TABLE /* Zeilendimension */
PRODNR
ALL*F=COMMAX20.2*{STYLE={FONT_SIZE=2 FONT_WEIGHT=BOLD FONT_STYLE=ROMAN FOREGROUND=#333333}},
/* Spaltendimension */
NAME*(
BRUBEU*
Sum={LABEL='Saldo' STYLE={FONT_SIZE=2 FONT_WEIGHT=MEDIUM FONT_STYLE=ITALIC FOREGROUND=#C0C0C0}}*F=COMMAX20.0
STRKEU*
Sum={LABEL='Saldo' STYLE={FONT_SIZE=2 FONT_WEIGHT=MEDIUM FONT_STYLE=ITALIC FOREGROUND=#C0C0C0}}*F=COMMAX20.0)
/* Tabellenoptionen */
/ BOX={LABEL='Rahmenbereich' STYLE={FONT_WEIGHT=MEDIUM FONT_STYLE=ITALIC FOREGROUND=#C0C0C0 JUST=LEFT VJUST=TOP}} MISSTEXT='n/a' INDENT=0 ;
;

RUN;