Select statement to get all employees with their positions , organizations and usernames even if they doesn’t have username :
select papf.full_name ,fu.user_name ,hapf.name position ,haou.name organzation ,asg.primary_flag as "Primary Position" ,papf.person_id from fnd_user fu ,per_all_people_f papf ,per_all_assignments_f asg ,hr_all_positions_f hapf ,hr_all_organization_units haou where papf.person_id = asg.person_id(+) and sysdate between papf.effective_start_date and papf.effective_end_date and sysdate between asg.effective_start_date and asg.effective_end_date and asg.position_id = hapf.position_id(+) and fu.employee_id(+) = papf.person_id and haou.organization_id = asg.organization_id order by hapf.name;