I am referring to the proof of the wiki page on the subject. There we can find a proof of the recursion theorem in Roger version, that says that for every recursive function $f$ we can find a fix-point acting on indexes of partial recursive functions, i.e. $\phi_{f(e)} = \phi_e$.
In this proof they describe a partial recursive function $g(x,y)$:
Given an input $y$, first attempt to compute $\phi_x(x)$. If that computation returns an output $e$, then compute $\phi_e(y)$ and return its value, if any.
that in my understanding needs the existence of a universal recursive function to work, as it needs to test the function $\phi_x(x)$, and therefore an enumeration of the partial recursive functions.
But in the section about Kleene second theorem they says that:
Kleene's second recursion theorem and Rogers's theorem can both be proved, rather simply, from each other.[6] However, a direct proof of Kleene's theorem[7] does not make use of a universal program, which means that the theorem holds for certain subrecursive programming systems that do not have a universal program.
If they can be both proved from each other, then why we need a universal recursive function in the proof of Roger's theorem? If Roger's theorem is corollary of Kleene theorem, how it could not hold on subrecursive programming systems?
Besides wikipedia proof, the role of the S-m-n theorem in this theorem is kind of confusing to me in other books (for example Oddifredi's). For example, it is assumed that we can construct a function $s$ by the S-m-n theorem such that:
$$\phi_{f(\phi_x(x))} = \phi_{s(x)}$$
But this seems to be using more than S-m-n theorem, it seems also to assume that we have a enumeration of partial recursive functions and that there is a universal recursive function that can simulate $\phi_{f(\phi_x(x))}$. Right?
So, this theorem can work in a no universal program situation or not?