Here's a way to do it with the CLP solver in PROC OPTMODEL:
proc optmodel;
num n = 5;
num k = 3;
var X {1..k} >= 1 <= n integer;
con Permutation: alldiff(X);
solve with clp / findallsolns;
for {s in 1.._NSOL_} print {j in 1..k} X[j].sol[s];
create data want from [s]=(1.._NSOL_) {j in 1..k} <col('X'||j)=X[j].sol[s]>;
quit;