The ASIS style attribute does this according to the help: "ON = prints text with leading spaces and line breaks, in the same manner as the LISTING output".

For your example with embedded spaces I think WHITESPACE=PRE_WRAP is required. The help says: "PRE_WRAP specifies that white spaces are left intact and allows line breaking". The line "breaking" refers to what happens when the browser window is resized: does text wrap in table cells. The ASIS documentation is not completely clear about embedded spaces and says nothing about wrapping. An experiment would clarify which (or both) of these work in this case. More systematic documentation here would help, maybe with reference to the generated CSS, which is clearly documented.

Adapting Ksharp's tip (not tested):

proc report data=BlankTest nowd style(column)={whitespace=pre_wrap};
run;