You cannot order an aggregate query by data that is not in the result, like ord_qty. Also, you don't want to include ord_qty in the group by clause, otherwise the sum function is pointless.
You can order by sum(ord_qty) though, as that has been selected:
select sku_num, itm_cd, vsn, sum(ord_qty)
from store_ord_ln, store_ord
where store_ord_ln.store_ord_num=store_ord.store_ord_num
and store_ord.ord_dt between '04-DEC-2003' and '04-JAN-2004'
group by sku_num, itm_cd, vsn
having sum(ord_qty) > 500
order by sum(ord_qty);
Now to restrict to the "top n" orders you need to order by the sum in descending order and then skim off the first n rows like this:
select sku_num, itm_cd, vsn, sum_ord_qty
from
(
select sku_num, itm_cd, vsn, sum(ord_qty) sum_ord_qty
from store_ord_ln, store_ord
where store_ord_ln.store_ord_num=store_ord.store_ord_num
and store_ord.ord_dt between '04-DEC-2003' and '04-JAN-2004'
group by sku_num, itm_cd, vsn
having sum(ord_qty) > 500
order by sum(ord_qty) desc
)
where rownum <= &n;