I read this post, with a very nice answer by Mr. Wooldridge:

Sven: It's easy to extend Procedure 21.1 in my 2010 MIT Press book. In fact, if I ever get the 3rd edition finished, this will appear as a problem at the end of the chapter. It has come up before.

Let the 0 outcome be the base case. Then define dummy variables d1, d2, ..., d5 for the different implementation levels. Let w be the implementation level itself.

In the first stage, use ordered probit of w on all exogenous variables, including your instrument or instruments. Then you have to take some care to compute P(w = j) for j = 1,2, ..., 5 after the OP. The formulas for these probabilities are easy to find, and Stata should compute them after oprobit (although I've never done that).

Then, in the equation

y = b0 + x*b1 + a1*d1 + a2*d2 + ... + a5*d5 + u.

use the fitted probabilities as IVs for d1, d2, ..., d5. Of course, elements of x act as their own IVs.

I think this will do it. z1, ..., zm are the IVs:

Code:
oprobit w x1 x2 ... xk z1 ... zm
predict d0h d1h d2h d3h d4h d5h
ivregress 2sls y x1 ... xk (d1 d2 d3 d4 d5 = d1h d2h d3h d4h d5h), robust
This assumes that you have at least one strong instrument that affects w in the oprobit. The Wald statistic should be at least 10 (extrapolating from the linear case).

Hope this helps.
JW
Now, my situation differs because my second stage has a dependent variable with a range from 0-100% (with a big chunk at 100%, for the distribution see this post). To not fall in the forbidden regression trap, I have to use the control function approach (CF)/Two-Stage Residual Inclusion (2SRI), unless using ivpoisson would be okay to use (please comment).
If it is not, then how do I get the residuals from the oprobit, because they don't really appear to exist in the traditional way, see this answer by Ben Bolker.


As one extra question: Wooldridge mentions using fitted values as IV's, but the command is predict. Does the predict command actually give fitted values? Or is one of the two a mistake?