Sets p set of plants /1*4/ t set of all production units in the network /t1, t2/ tp(t,p) set of production units at plant p /t1.1, t2.2/ s set of all subassembly units /s1, s2/ sp(s,p) all subassembly units at plant p /s1.3, s2.4/ c components and parts /c1, c2/

And I have to define a decision variable like this:

x(c,t,s) → c ∈C, t ∈ Tp, s ∈ Sp

How can I define/control subset into decision variable?

Do not repost/re-edit the same question too many times.
Variable domains cannot be defined over subsets but equations can be. Using projections to create couple more subsets and then using those to define your equations might be a good way for you. In the following code, you will see how to use projections to create subsets (tp_t and sp_s are subsets in this example. you can check this in the .lst file after running the following code fragment).

Sets
t set of all production units in the network /t1, t2/
p /1*4/
tp(t,p) set of production units at plant p /t1.1, t2.2/
s set of all subassembly units /s1, s2/
sp(s,p) all subassembly units at plant p /s1.3, s2.4/
c components and parts /c1, c2/
tp_t(t)
sp_s(s)
;
option tp_t < tp;
option sp_s < sp;
display
tp_t
sp_s;
variable
x(c, t, s);

For the equation, I assume you are interested only in the left hand side. You can do this as follows:

sum((t, s)$(tp_t(t) and sp_s(s)), x(c, t, s)) =e= ....

The following code works. I think the comma in your parameter was the problem. However, the parameter is defined on full domain and other values will be assumed to be 0.

parameter
cap(t, p)
/t1.1 2000000
t2.2 3000000/ ;

You can simply use $(tp_t(t) and sp_s(s)) to make sure that correct t and s are used everytime you need to access cap(t, p)