+2  A: 

Why would you allow the user fire to the report if they don't have permission to view it?

To display a custom message in the SSRS report itself:

  1. Add a text field
  2. Customize the text displayed on it to your satisfaction
  3. Provide an expression for the Visibility > Hidden value (Properties Window). IE:

    = iif( count(Fields!Application_Number.Value, "YOUR-DATASOURCE-NAME") > 0, true, false)

OMG Ponies
@rexem: "Why would you allow the user fire to the report if they don't have permission to view it" That's a valid question. I have asked the developer who has created the menu but there is no way to associate a permission for the menu item "for now" but I still need to get something done and that is why I am looking for a "work-around" to get something done for now.
Sung Meister
Is there a way to "capture" Raierror message?
Sung Meister
I haven't had to capture RAISERROR output in a report, sorry.
OMG Ponies
You might try defining a resultset in the RETURN clause you have in your example, but I imagine the columns needs to match what the report would produce when successfully run.
OMG Ponies
Or you could add a column to your stored procedure to populate with the value of the permission check - this would enable you to trigger the custom message. Not all columns in the resultset need to be displayed to the user.
OMG Ponies
@rexem: What I did was that, I have added another datasource simply that returns a value whether a user has permission or not. And instead of adding a new text field, I added a new expression on "NoRows" property of a table. --> =iif(First(Fields!HasPermission.Value, "permissionDataSet") = 0, "You do not have permission to view this report", "There are no certified labels generated for this client") I have not marked your answer as answer but voted up because I am still interested in capturing RAISERROR value from SQL Server reports. Thanks rexem for your suggestion.
Sung Meister
Sung: No worries, I'm curious too.
OMG Ponies