Well not easy to do you can have a macro do it.
by creating a new table in proc sql you can reorder the columns. See the below macro for guidance.
%macro ReorderColumns(in_lib,input_dataset_name, output_dataset);
proc sql;
create table VARNAMES as
select upcase(NAME) as NAME, varnum
from DICTIONARY.COLUMNS
where libname=upcase("&in_lib") and memname=upcase("&input_dataset_name")
order by upcase(NAME);
quit;
data _null_;
set VARNAMES end=eof;
if not eof then call symput('varname'||strip(put(_n_,8.)),strip(name)||',');
else do;
call symput('varname'||strip(put(_n_,8.)),strip(name));
call symputx('numvar',_n_);
end;
run;
proc sql;
create table &output_dataset as
select %do i=1 %to &numvar;
&&varname&i
%end;
from &in_lib..&input_dataset_name ;
quit;
%mend ReorderColumns;
%ReorderColumns(sashelp,shoes,work.test);
proc print data=sashelp.shoes;
proc print data=test;run;
Regards!
-Darryl