Your public synonym points to a nonexisting object. You created the public synonym with user SYSTEM without specifying the owner of the package INTEG. So unless user SYSTEM has some kind of object with this same name in his schema the synonym points nowhere! What you should do now is:
CONNECT SYSTEM;
DROP PUBLIC SYNONYM integrat;
CREATE PUBLIC SYNONYM integrat FOR userA.integ;
CONNECT userA;
GRANT EXECUTE ON integ TO userB;
HTH,
Jurij Modic
ASCII a stupid question, get a stupid ANSI
24 hours in a day .... 24 beer in a case .... coincidence?