The “Uncontrolled set” refers to t2 which you are using on the right hand side of the assignment without controlling it.
You could either replace the ord() stuff by just using t2 on the left hand side as well

Xpar(i,t2) = X.l(i,t2);

or you might want to declare variable X over super set t1 and then use t1 on the right hand side of your assignment

Variable X(i,t1) ;
[...]
Xpar(i,t1)$(ord(t1)=1 and ord(t1)<=24) = X.l(i,t1);

The problem arises with the second loop where I have to store the resuts of the second day of the variable X(i,t2) (where t2 is again between 1 and 24) in parameter Xpar(i,t1), in the right order. I would then like to do the following but unfortunately is not working:

Xpar(i,t1)$(ord(t1)=25 and ord(t1)<=48) = X.l(i,t2);

Is there any way to do that by avoiding solving my problem with X(i,t1) but instead using X(i,t2)?

set d days /d1*d7/;
loop(d,
* some solve statements that gives you X.l(i,t2)
Xpar(i,t1)$(ord(t1)>(ord(d)-1)*24 and ord(t1)<=(ord(d))*24) = sum(t2$(ord(t2)=ord(t1)-(ord(d)-1)*24), X.l(i,t2));
);

I am not convinced that this is the best solution. Maybe you could solve your model for the correct set of hours directly instead of doing such a mapping afterwards. If you would be wiling to share your code, users might pick up on that and come up with more elegant suggestions.