The documentation says
xVpa = vpa(x,d) uses at least d significant digits instead of the value of digits. That means for your case that MATLAB will output with max(32,7) = 32 digits.
To reduce the output precision, set
U(x,t) = vpa(subs(u, [a1 a2 ], [sol.a1, sol.a2]))
e.g.
Of course, you won't get back a simple decimal number with 7 digits because x and t are still unspecified in U(x,t). Only the coefficients in the expressions for U(x,t) are reduced to 7 digits in length.