I hoped that var7 has a unique value in each observation, so that proc report could be used, but with the data shown, i don't think that proc report could be used, but i am not super-familiar with the proc.
Report Writing Interface could be used, but you will have to write statement for anything you want to see and even for some things you don't want to see. Here's on possible approach:
%let dummy_header = %str(backgroundcolor=colors('headerbg') color=colors('titlefg') );
data _null_;
set work.have end=jobDone;
length _dummy $ 200;
if _n_ = 1 then do;
declare odsout rwi();
end;
rwi.table_start();
_dummy = catx(': ', vlabel(var7), var7);
rwi.row_start(type: 'h');
rwi.format_cell(data: _dummy, inhibit: 'x', column_span: 4, just: 'L');
rwi.row_end();
rwi.row_start(type: 'h');
rwi.format_cell(data: vlabel(var1));
rwi.format_cell(data: vlabel(var2));
rwi.format_cell(data: vlabel(var3));
rwi.format_cell(data: vlabel(var4));
rwi.row_end();
rwi.row_start();
rwi.format_cell(data: var1, just: 'R');
rwi.format_cell(data: var2, just: 'R');
rwi.format_cell(data: var3, just: 'R');
rwi.format_cell(data: var4, just: 'R');
rwi.row_end();
rwi.row_start();
rwi.format_cell(data: vlabel(var5), column_span: 4, just: 'L', style_attr: "&dummy_header.");
rwi.row_end();
rwi.row_start();
rwi.format_cell(data: var5, column_span: 4, just: 'L');
rwi.row_end();
rwi.row_start();
rwi.format_cell(data: vlabel(var6), column_span: 4, just: 'L', style_attr: "&dummy_header.");
rwi.row_end();
rwi.row_start();
rwi.format_cell(data: var6, column_span: 4, just: 'L');
rwi.row_end();
rwi.table_end();
run;
... View more