Answer
IMPERSONATE USER, used via Fnd_Session_API.Impersonate_Fnd_User, is specifically designed for running background jobs or performing actions, like approval routing steps, AS a different user at the database/session level — it is NOT a mechanism for interactively logging into the client 'as' another user to see what they'd see in the UI. To actually check what a specific user sees or can access in the client itself, the practical approaches instead are: maintain a dedicated test user account whose Permission Sets you can freely copy from the real user being investigated, to check their effective access; separately handle their Profile settings either by copying their profile to the test user, or by using Tools > Options > User Profile > Edit Personal Profiles, selecting the target user in Read-Only mode to inspect their profile settings directly; or, as a more heavyweight alternative, maintain a separate database/environment where you can safely reset a copy of the real user's own password and log in directly as them there. To actually use the Impersonate User mechanism itself in PL/SQL: call Fnd_Session_API.Impersonate_Fnd_User('<user_id>') before performing the action that needs to run as that other user, then call Fnd_Session_API.Reset_Fnd_User afterward to restore the original session identity.