Calling / Running a report in Oracle forms 10g / 11g
Below is the procedure to call a report in Oracle Forms 10g/11g by passing report file name with full path and report format like 'PDF', 'RTF' etc.
Procedure call_report (preport In Varchar2, pformat In Varchar2)
Is
pi_id paramlist;
repno Number;
al_id alert;
al_report Number;
User Varchar2 (25);
pass Varchar2 (25);
today Date;
store_var Varchar2 (150);
--OC
vc_reportserverjob Varchar2 (100);
report_job_id Varchar2 (100);
repid report_object;
v_rep_status Varchar2 (100);
Begin
pi_id := Get_parameter_list ('rep_param');
If Not Id_null (pi_id)
Then
Destroy_parameter_list (pi_id);
End If;
pi_id := Create_parameter_list ('rep_param');
Add_parameter (pi_id,
'PARAMFORM',
TEXT_PARAMETER,
'no');
--- report object
--- the below report object 'cproreport' must be created in Report object navigator.
repid := Find_report_object ('cproreport');
Set_report_object_property (repid, report_filename, Rtrim(:parameter.report_path)||preport);
Set_report_object_property (repid, report_server, :parameter.r_server);
Set_report_object_property (repid, report_execution_mode, RUNTIME);
Set_report_object_property (repid, report_comm_mode, SYNCHRONOUS);
Set_report_object_property (repid, report_destype, cache);
Set_report_object_property (repid, report_desformat, pformat);
vc_reportserverjob := Run_report_object (repid, pi_id);
report_job_id :=
Substr (vc_reportserverjob,
Length (:parameter.r_server) + 2,
Length (vc_reportserverjob));
v_rep_status := Report_object_status (vc_reportserverjob);
If v_rep_status = 'FINISHED'
Then
web.show_document (
'http://'
|| :parameter.host
|| ':'
|| :parameter.port
|| '/reports/rwservlet/getjobid'
|| report_job_id
|| '?server='
|| :parameter.r_server,
'_blank'
);
Else
Message ('error when running report' || v_rep_status);
End If;
End;