With some example data in the form of a data step and the rules involved in showing a check mark, X or Exclamation mark is suspect this is doable in Proc Report with a couple of formats.
A very brief example:
Proc format;
value check
1 = '(*ESC*){unicode "2713"x}'
2 = 'X'
3 = '!'
;
Value tcolor
1 = 'green'
2 = 'red'
3 = 'gold'
;
run;
data example;
input text $ value;
datalines;
Something 1
Another 2
Else 3
;
proc report data=example ;
columns text value;
define text /display;
define value/ display style=[color=tcolor. font_size=12pt] format=check.;
run;
Trick is finding a unicode symbol you like and the code for it. Then have values that a format can associate with. Note the use of a different font to modify the TEXT color. Yet another format could point to a specific Font, font_size, background color or even change border colors/width for cells. Just need to know the ODS Style element to use in the Style=[ ].
Your basic table layout looks like a modification of one of the Journal styles would work which would be referenced on the ODS PDF statement. If you don't actually need the lines in the body then maybe Journal will suit.
Proc Report has a number of features to allow adding text before/ after groups of values without any data and much more description of rules involved I'll just say there are lots of Proc Report SAS papers, presentation, blog posts and question/answers on this forum.