Einfärben von Zellen mit PROC REPORT in Abhängigkeit von Zellwerten

Hallo zusammen,

folgendermaßen versuche ich, mit PROC REPORT Zellen einzufärben:

data offene;
input @1 gevo_detail $ @3 sparte $ @8 alter @12 datum @22 anzahl;
informat datum date9.;
format datum date9.;
cards;
A A-AS 1 20AUG2010 56
A A-AS 2 19AUG2010 51
A A-AS 3 18AUG2010 28
A A-AS 4 17AUG2010 28
A A-AS 5 16AUG2010 7
A A-AS 6 13AUG2010 8
A A-AS 7 12AUG2010 3
A A-AS 9 10AUG2010 1
A A-AS 10 07AUG2010 1
A A-AS 10 09AUG2010 3
A A-AS 11 06AUG2010 2
A A-AS 12 05AUG2010 1
A A-AS 13 04AUG2010 1
A A-AS 44 22JUN2010 1
A A-AS 212 19OCT2009 1

;
run;
options nodate pageno=1 fmtsearch=(work);

ods html;

proc report data=offene nowd headline headskip;

column alter datum anzahl;
define alter / order 'Alter in Arbeitstagen';
define datum / order 'Fälligkeitstermin';
define anzahl / 'Anzahl offener Vorgänge';
endcomp;
compute alter;
if alter<7 and _break_=' ' then
call define(_col_, "style",
"style=[background=green]");
else if alter=7 and _break_=' ' then
call define(_col_, "style",
"style=[background=yellow]");
else if alter>7 and _break_=' ' then
call define(_col_, "style",
"style=[background=red]");
endcomp;
compute datum;
if alter<7 and _break_=' ' then
call define(_col_, "style",
"style=[background=green]");
else if alter=7 and _break_=' ' then
call define(_col_, "style",
"style=[background=yellow]");
else if alter>7 and _break_=' ' then
call define(_col_, "style",
"style=[background=red]");
endcomp;
compute anzahl;
if alter<7 and _break_=' ' then
call define(_col_, "style",
"style=[background=green]");
else if alter=7 and _break_=' ' then
call define(_col_, "style",
"style=[background=yellow]");
else if alter>7 and _break_=' ' then
call define(_col_, "style",
"style=[background=red]");
endcomp;
title 'Übersicht der offenen Vorgänge';
run;

ods html close;

Nun beträgt am 09.August das Alter in Arbeitstagen, wie auch am 07.August 10 Tage.
Im Report ist demzufolge, zumindest so wie ich es gemacht habe, die Zeile bzw. sind die Zellen
grün anstatt der gewünschten Farbe rot eingefärbt. Mich interessiert nun, ob es eine direkte
Lösung gibt, kein Work Around.

Vielen Dank schon Vorab
Wolfgang Hornung

Mein Vorschlag

Hallo Herr Hornung,

mein Vorschlag wäre, wenn Sie einfach eine Identifier-Variable erstellen, damit das Alter in Arbeitstagen nicht gruppiert wird.
Hier ein kleiner Ansatz:

/*Das Data Set offene wurde bereits erstellt.*/
DATA offene;
SET offene;
row=_N_;
RUN;

OPTIONS NODATE PAGENO=1 FMTSEARCH=(work);

ODS HTML;

PROC REPORT DATA=offene NOWD HEADLINE HEADSKIP;

COLUMN row alter datum anzahl;
DEFINE row / GROUP NOPRINT;
DEFINE alter / ORDER 'Alter in Arbeitstagen';
DEFINE datum / ORDER 'Fälligkeitstermin';
DEFINE anzahl / 'Anzahl offener Vorgänge';
ENDCOMP;
/*Der restliche SAS-Code.*/
/*...*/

Ich hoffe ich konnte Ihnen damit weiterhelfen.

Beste Grüße,

Friedhelm

Hallo Friedhelm, vielen Dank

Hallo Friedhelm,

vielen Dank für den Tipp so funktioniert es. Ich habe auch noch ein wenig rumprobiert.
Zunächst wollte ich die Spalten Alter und Datum vertauschen. Aus mir nicht erklärlichen
Gründen ist der Bericht aber dann leider nicht chronologisch nach dem Datum sortiert.
Ich habe dann noch ein Dummy-Datum vor das eigentliche Datum gestellt, dann hat es auch
funktioniert. Das noprint ist aber ein nützlicher Tipp, ich habe für das Dummy-Datum einfach
die Vordergrund- und Hintergrundfarbe gleich gewählt, damit man diese fortlaufende Zahl nicht
sieht.

Aber warum wird das Datum nicht chronologisch angezeigt?

Vielen Dank und viele Grüße
Wolfgang Hornung