Detecting:
proc format;
value $missfmt ' ' = 'missing' other='present';
run;
proc freq data=have;
tables varname / missing;
format varname $missfmt.;
run;
Fixing is up to you. There is no standard method. It depends on what you intend to do with the data. The most common option is to do nothing. Why would a missing qualitative value need to be replaced? At any rate, this is a valid DATA step statement:
if varname = ' ' then varname = 'N/A';