You can do this relatively simply using a self-merge with offset:
data want (drop=nxt_:);
merge have
have (firstobs=2 keep=id zweck rename=(id=nxt_id zweck=nxt_zweck));
retain hz ' ';
if nxt_zweck=7 and id=nxt_id then hz=catx('-',zweck,nxt_zweck);
output;
if nxt_id^=id or nxt_zweck^=7 then hz='';
run;
... View more