I was looking at the problem of simulate data from a zero-truncated Poisson distribution since such a distribution is failry common in consumer choice analysis. One of the solutions I have stumbled upon is this, which uses the inverse cdf approach:

start rtpois(N,lambda);
min = pdf("poisson",0,lambda);
u = j(N,1);
call randgen(u, "Uniform");
y = quantile('poisson',u#(1 - min) + min,lambda);
return(y);
finish;

y = rtpois(1000,5.0);

It produces the required result but is not very efficient for relatively large values of lambda mostly due to computing quantile function. In such a case even a simple acceptance-rejection algorithm performs very well (not many rejections after all). Still fast though.