From  pl/sql we can add any responsibility to a user.To achieve this we can use fnd_user_pkg package.

Syntax:
 
fnd_user_pkg.addresp(username => Application User Name
,resp_app => Responsiblity_Application_Short_Name
,resp_key => Responsibility_Key
,security_group => Security_Group 'Mostly it is 'STANDARD' so it can be hard coded it'
,description => Any comments you want
,start_date => Sysdate From Today
,end_date => Sysdate + any number of days which is required);

Example:

Adding a System Administrator Responsibilty 

BEGIN
fnd_user_pkg.addresp ('HIMANSHU','SYSADMIN','SYSTEM_ADMINISTRATOR','STANDARD',
'Add Sysadmin Responsibility to Himanshu', SYSDATE, SYSDATE + 100);
COMMIT;
DBMS_OUTPUT.put_line ('Responsibility Added Successfully');
EXCEPTION
WHEN OTHERS
  THEN
DBMS_OUTPUT.put_line ( ' Responsibility is not added due to ' || SQLCODE || SUBSTR (SQLERRM, 1, 100));
ROLLBACK;
END;