I think your problem is that LOGIN is a character variable, hence lacking quotes in the WHERE statement. When you add the external quotes in the %LET statement, the &userlist is not resolved, because simple quotes (') BLOCKS the macro resolution. Instead of adding them in the "SEPARATED BY" part, try this : combination of LEFT, TRIM (to remove trailing blanks) and QUOTE (adds quotes) functions in the SELECT clause, and only SEPARATED BY commas.
[pre]
%let in=work.MetaLogins;
proc sql noprint;
select QUOTE(LEFT(TRIM(Login)))
into :userlist separated by ","
from ∈
quit;
data logins;
set xml.Login;
where UserID in (&userlist);
run;
[/pre]
Regards.
Olivier