This is not a common practice as the SOX rules are not satisfied. A user who creates a PO should not approve his own PO.
By maintaining the org plan structure and Using the FM SWX_GET_MANAGER you can get the manager for the user who creates PO. Best would be to use with workflow Organizational Plan in Workflows - ABAP Development - SCN Wiki
In your example User 2 creates the PO, then approver 3 will approve all the levels based on the organizational plan. This will satisfy the sox rules.
On rejection, you can input some text through workflow and send it to users inbox or you can create a new PO header text to populate the rejection note after rejection step is completed through workflow.