FRM-41211 Integration error

I got this error,

"Frm-41211 Integration error: SSL failure running another product.",

when running reports from my form.

I've created the call procedure using PL/SQL library. Previously, when I need to run a set of reports, I programmed them individually in the library, each with a different procedure run_report_xxx01, run_report_xxx02...etc.. This run_report_xxx01 procedure will do all the get_parameter_list, destroy_parameter_list, create_parameter_list and add_parameter for the specific report.

After initiating all the parameters, in this procedure, it'll call another procedure which will check for the print option. If the print option for the report is by 'PDF' (softcopy) & hardcopy, then it'll call run_product two times, first time passing in parameter 'destype' as 'PRINTER', delete that parameter, pass in 2nd parameter as 'FILE'.

This is not efficient as when I gradually add new reports, I need to add new procedures (eg: run_report_xxxnew) and recompile the library and also related forms which referenced to it. I decided to create 2 new tables, 1 storing the report name to be generated and another stores the parameters for the reports. I rearrange the codes so that I don't need to create new procedure everytime but to loop the tables for the data.

After my changes, the codes which can be executed previously by separate procedure call for each report without any errors, now pop up a 'FRM-41211' error. The PDF Reports can be generated, but what's the error all about and how to correct it?
LVL 1
jewelfishyAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

sathyagiriCommented:
I think you probably have hit a bug in reports.

Problem Explanation:
This bug does NOT affect all situations in which RUN_PRODUCT is used to call
Oracle Reports from Oracle Forms.  This bug occurs when you issue a second
ASYNCHRONOUS RUN_PRODUCT call to run a report, before the first report has
completed.
 
For example, if you want to get multiple reports based on the number
of check boxes checked in the form, you should execute RUN_PRODUCT in
SYNCHRONOUS mode.  This specifies that control returns to Oracle Forms only
after Oracle Reports has finished executing for the report specified.  If
ASYNCHRONOUS mode is used, control returns to Forms even though Reports has
not finished and then the FRM-41211 error occurs.


WOrkAround:
Use SYSNCHRONOUS CALL or make sure that your run_product does not get called before the first call finishes.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Mark GeerlingsDatabase AdministratorCommented:
Sathyagiri may have identified one of the more common causes of this error, but we have seen it occasionally with just one call to a report from a form.  Unfortunately we have not found a reliable way to prevent this error.  Sometimes a recompile of the form and/or the report seems to help, for a while (days or weeks) at least.

Which version of Forms and Reports do you have?
jewelfishyAuthor Commented:
Hi Satyagiri, thanks for your reply. I suspected that's the reason because when I debug the form, this error does not occur. I let the first run_product completes before stepping in to the second run_product.

However, what makes me wonder is, previously, before I change the program to loop a table to obtain the report_id, this procedure works ok. I'll roughly show the method call.

This is the main procedure I called to create the reports:

procedure CALL_RUN_PRODUCT(pi_xxx in xxxx%type)
is
begin
 .....
 if l_output_opt = '2' then  --send to printer & create softcopy
  add_parameter(l_list_id, 'DESFORMAT', TEXT_PARAMETER, 'PDF');
  run_product(REPORTS, 'report_0001', ASYNCHRONOUS, RUNTIME, FILESYSTEM, l_list_id);
  delete_parameter(l_list_id, 'DESTYPE'); --destype=PRINTER
 add_parameter(l_list_id, 'DESTYPE', TEXT_PARAMETER, 'FILE');
 run_product(REPORTS, 'report_0001', ASYNCHRONOUS, RUNTIME, FILESYSTEM, l_list_id);
 end if;
 .....
end;


Method 1 :
----------
procedure run_report_0001
is
begin
   get_parameter_list....
   destroy_parameter_list....
   create_parameter_list....
   
   l_param_value := get_app_dt;
  add_parameter(l_list_id, 'DATE_FROM', TEXT_PARAMETER, l_param_value);

  call_run_product(l_list_name, xxx, xxx, xxx);
end;


Method 2 :
----------
procedure run_daily_report
is
   cursor c_daily_rpt is
     select rpt_id
     from tschedule_rpt
     where run_mode = 'D';
begin
   for r in c_daily_rpt loop
     init_rpt(r.rpt_id);
   end loop;
end;


procedure init_rpt(pi_rpt_id in tschedule_rpt.rpt_id%type)
is
   cursor c_rpt_param(pi_rpt_id in tschedule_rpt.rpt_id%type) is
      select rpt_param_id, rpt_param_value is
      from trpt_param
      where rpt_id = pi_rpt_id;
begin
   get_parameter_list....
   destroy_parameter_list....
   create_parameter_list....

   for r in c_rpt_param loop
     add_parameter(l_list_id, r.param_id, TEXT_PARAMETER, r.param_value);
   end loop;
   
   call_run_product(l_list_name, xxx, xxx, xxx);  
end;
     

Previously, the codes is done in method 1, and this gives me a lot of procedures.. depending on how many reports I have. With this method, I do not hit any problem. But, it's not a good way to program, because I need to keep changing/ adding if there's a change in requirement. So, I changed the reports to method 2 and now hit the FRM-41211 error. Do you have any suggestions in overcoming this? My 1st run_product call is to send the file to printer and my second run_product call is to create a PDF file. If running this in a SYNCHRONOUS mode, means, the PDF report will need to wait for the printer report to complete before being executed? I think this two reports can be executed in ASYNCHRONOUS mode. Am I correct? Need your expertise to advice me on this...

Hi Markgeer, I am currently using Forms & Reports 6i.

Sorry, I hope the above is not too difficult to read..
Determine the Perfect Price for Your IT Services

Do you wonder if your IT business is truly profitable or if you should raise your prices? Learn how to calculate your overhead burden with our free interactive tool and use it to determine the right price for your IT services. Download your free eBook now!

Mark GeerlingsDatabase AdministratorCommented:
We also have Forms and Reports6i yet.  We use SYNCHRONOUS mode to run reports that we call from forms, and that usually avoids the FRM-41211 error.  Yes, the disadvantage is that the form is locked and the user has to wait until the report finishes before the user can continue in the form (or run another report).  Most of our reports use queries that are well-tuned, so they usually finish in a couple of seconds.
jewelfishyAuthor Commented:
Hi Markgeer,

Does this mean that you are using the approach like method 2 to run reports that you call from forms? Actually, I am not so worried about the daily reports, because the reports can be executed very quickily, but more on the monthly & yearly reports. Data size become bigger as time goes by and it'll take longer to execute. And also, there are quite a number of reports on my side which are run twice, i.e, generate to Printer and PDF.

From the advice I received, seems like there's no other way to do it except changing the mode from ASYNCHRONOUS to SYNCHRONOUS. Am I right?

If you know the answer, can you tell me why method 1 is working alright and not method 2? I am asking this because method 1 is also passing in ASYNCHRONOUS to two run_product call. I know the FRM41211 error is caused by the ASYNCHRONOUS call, but this doesn't explain why my method 2 cannot work while method 1 is working ok.

Thanks a lot.
Mark GeerlingsDatabase AdministratorCommented:
No, we don't use a method like your method 2.  We just use individual program units (or when-button-pressed) triggers in various forms to run their corresponding report.

I don't see any obvious flaws in your method 2, but if that consistently causes the FRM-41211 error, I think you will have to avoid or change that method.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Oracle Database

From novice to tech pro — start learning today.