Hello @mrahouma and welcome to the SAS Support Communities!
PROC SUMMARY allows for another fairly short solution, provided that your Grades dataset contains a variable which uniquely identifies an observation, such as NAME in SASHELP.CLASS:
proc summary data=sashelp.class;
output out=top3 idgrp(max(weight) out[3] (name)=_);
run;
data want(drop=_:);
if _n_=1 then set top3;
set sashelp.class;
_w=whichc(name, of __:);
Top_three=ifn(_w,_w,.);
run;
Edit: Admittedly, with PROC RANK (as suggested by @Reeza) it could still be shorter. The DESCENDING option of the PROC RANK statement would help selecting the largest values. The two procedures differ in the options how tied values are dealt with. For example, in PROC SUMMARY you could specify one or more variables to serve as "tie-breakers."
... View more