Skip to main content

Hello,

 

We are popping up a message via PL/SQL off of an event in a custom menu. Every account except for IFSAPP is getting this error when the RMB is executed. We are using ADFS for the users to log in and I am not sure if it’s because it is having an issue with getting user information now? Below is the PL/SQL block. Any help would be appreciated. 

 

DECLARE
stream_ fnd_stream_tab%ROWTYPE;
object_id_ number;
cursor get_ IS
select Max(to_number(mch_code)) as mch_code
from equipment_functional
where LENGTH(TRIM(TRANSLATE(mch_code, ' +-.0123456789',' '))) is null;
BEGIN
open get_;
fetch get_ into object_id_;
close get_;
object_id_ := object_id_ + 1;
stream_.from_user := '';
stream_.to_user :=Fnd_Session_Api.Get_Fnd_User;
stream_.header := 'Next Available Object Id';
stream_.message := 'The next available object id is ' || object_id_;
stream_.stream_type := 'GENERAL';
stream_.lu_name := 'FunctionalObject';
stream_.url := '';
Fnd_Stream_Api.New_Stream_Item(stream_);
END;

Error: 

Ifs.Fnd.FndSystemException: Unexpected error while calling server method AccessPlsql/Invoke ---> Ifs.Fnd.FndServerFaultException: ORA-06550: line 3, column 10:

PLS-00201: identifier 'FND_STREAM_TAB' must be declared

 

Failed executing statement (ORA-06550: line 3, column 10:

PLS-00201: identifier 'FND_STREAM_TAB' must be declared

Thanks, 

Eli Williams

Eli,

We have found that trying to use a _TAB reference (the direct, underlying table) almost always causes issues for users who are not App Owner. This applies to Quick Reports, custom events, etc. My guess is that Fnd_Stream_Tab is not visible to any other user no matter what permissions you allow.

So, can you declare the "stream_" variable explicitly, or as the ROWTYPE of a defined cursor, one generated from the Fnd_Stream view instead of the Fnd_Stream_Tab table? Folks with the correct permissions should be able to access Fnd_Stream, but only App Owner can see Fnd_Stream_Tab.

I am no Oracle expert, but instead of:

stream_  fnd_stream_tab%ROWTYPE;

try this:

CURSOR stream_struct IS SELECT * FROM Fnd_Stream;

stream_ stream_struct%ROWTYPE;

That grabs the row structure form the Fnd_Stream view instead of going after the underlying table. I am not sure field names, etc. for the view are all the same as the underlying table, so you may need to tweak the rest of the code.

Hope that helps!

 

Joe Kaufman


Hi Joe, 

 

That helps a lot knowing that. I will rewrite the code so we can circumvent that. 

Thank you,

Eli Williams