It can be done several ways, but most direct from what you have is:
%let reporting_date=30JUN2018;
data want;
set have;
where date <= "&reporting_date."d;
run;
You will note here that the text from the macro variable gets put into the quotes, which have a d after - which means for SAS to treat that text as a date literal. You could also say:
data want;
set have;
where date <= input("&reporting_date.",date9.);
run;
Which may be useful if you have formats of date other then date9. - as only date9 works with date literals.