Вы находитесь на странице: 1из 3

PACKAGE Reports_Pkg IS

procedure P_Run_Report (P_RepServer VARCHAR2,


P_RepHost VARCHAR2,
P_RepPort VARCHAR2,
P_RepDesFormat VARCHAR2,
P_RepParamList PARAMLIST,
P_RepObjectName VARCHAR2,
P_RepFileName VARCHAR2) ;
END;
PACKAGE BODY Reports_Pkg IS
procedure P_Run_Report (P_RepServer VARCHAR2,
P_RepHost VARCHAR2,
P_RepPort VARCHAR2,
P_RepDesFormat VARCHAR2,
P_RepParamList PARAMLIST,
P_RepObjectName VARCHAR2,
P_RepFileName VARCHAR2)
is
V_RepObj Report_Object;
V_RepServJob VARCHAR2(2000) := '';
V_RepStatus VARCHAR2(2000) := '';
V_RepPort VARCHAR2(2000) := P_RepPort;
V_RepServer VARCHAR2(2000) := P_RepServer;
V_RepServPath VARCHAR2(2000) := '';
V_DesFormat VARCHAR2(2000) := 'HTML';
V_RepJobId VARCHAR2(2000) := '';
V_FileName VARCHAR2(2000) := P_RepFileName;
V_RepObjectName VARCHAR2(2000) := nvl(P_RepObjectName,'rep');
V_ParamList PARAMLIST ;
Begin
IF Upper(P_RepHost) <> 'LOCALHOST' THEN
V_RepServPath := 'http://'||P_RepHost||'/reports';
ELSE
V_RepServPath := 'http://'||P_RepHost||':'||V_RepPort||'/reports
';
END IF ;
-- Find the Report Object Instance
V_RepObj := Find_Report_Object(V_RepObjectName);
-- Set the Report Object Properties
SET_REPORT_OBJECT_PROPERTY(V_RepObj, REPORT_FILENAME, V_FileName);
SET_REPORT_OBJECT_PROPERTY(V_RepObj, REPORT_COMM_MODE, SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(V_RepObj, REPORT_EXECUTION_MODE, BATCH);
SET_REPORT_OBJECT_PROPERTY(V_RepObj, REPORT_DESTYPE, CACHE);
SET_REPORT_OBJECT_PROPERTY(V_RepObj, REPORT_DESFORMAT, V_DesFormat);
SET_REPORT_OBJECT_PROPERTY(V_RepObj, REPORT_SERVER, V_RepServer);
-- Check if a parameter list is provided with the report run
if not ID_NULL(P_RepParamList) then
V_ParamList := P_RepParamList ;
V_RepJobId := RUN_REPORT_OBJECT(V_RepObj,V_ParamList) ;
else
V_ParamList := NULL ;
V_RepJobId := RUN_REPORT_OBJECT(V_RepObj) ;
end if ;
-- Get the Report run status
V_RepStatus := REPORT_OBJECT_STATUS(V_RepJobId);
WHILE V_RepStatus in ('RUNNING','OPENING_REPORT','ENQUEUED')LOOP
V_RepStatus := Run_Report_Object(V_RepObj);
END LOOP;
-- Show the report after execution has completed
IF V_RepStatus='FINISHED' THEN
WEB.SHOW_DOCUMENT(V_RepServPath||'/rwservlet/getjobid'||substr(V_RepJobId,
instr(V_RepJobId,'_',-1)+1)||'?'||'server='||V_RepServer,'_blank');
ELSE
Message('Error Running the requested Report Please contact the system Adm
inistrator ! ');
Message('Error Running the requested Report Please contact the system Adm
inistrator ! ');
Clear_Message;
END IF;
Exception
When others then
Raise FORM_TRIGGER_FAILURE;
Message('Unexpected error raised while attempting to run the request
ed report, please contact your system Administrator');
Message('Unexpected error raised while attempting to run the reque
sted report, please contact your system Administrator');
Clear_Message;
End P_Run_Report;
END;

PROCEDURE P_Call_Report (P_ReportName VARCHAR2,


P_ParamList PARAMLIST)
IS
V_ExitFlag boolean := False ;
report_id Report_Object;
ReportServerJob VARCHAR2(100);
rep_status VARCHAR2(200);
L_REPORT_SERVER VARCHAR2(200) := 'repserver';
L_REPORT_SERVER_PATH VARCHAR2(100):= 'localhost';
L_REPORT_DESFORMAT VARCHAR2(15) :='HTML';
report_job_id VARCHAR2(200);
V_Host VARCHAR2(400) := 'Application Server';
BEGIN
if P_ReportName is null then
Message('Report Name is not recognized !');
Message('Report Name is not recognized !');
Clear_Message ;
V_ExitFlag := true ;
end if ;
V_Host := 'Local' ;
if V_host = 'Local' then -- Local Testing
Reports_Pkg.P_Run_Report
('repserver1', -- Report Server Name
'localhost', -- Service Host
'8890', -- Http Port
'HTML', -- Dest Type
P_ParamList , -- Parameter List
'rep', -- Report Object Instance
P_ReportName) ; -- Physical Report Name
V_ExitFlag := true ;
end if ;
if not V_ExitFlag then
Reports_Pkg.P_Run_Report
('Repserver1', -- Report Server Name
'localhost', -- Service Host
'8889', -- Http Port
'HTML', -- Dest Type
P_ParamList , -- Parameter List
'rep', -- Report Object Instance
P_ReportName) ; -- Physical Report Name
else
Return ;
end if ;
END;
PROCEDURE P_Call_Reports (par_rpt_type_in in varchar2) IS
BEGIN
DECLARE
lvp_pl_id PARAMLIST;
BEGIN
lvp_pl_id := CREATE_PARAMETER_LIST('rep_paramlist') ;
--ADD_PARAMETER(lvp_pl_id, 'DESTYPE', TEXT_PARAMETER, 'SCREEN');
--ADD_PARAMETER(lvp_pl_id, 'DESNAME', TEXT_PARAMETER, ' ');
ADD_PARAMETER(lvp_pl_id, 'Q_ESL_NO', TEXT_PARAMETER, :global.esl_no);
ADD_PARAMETER(lvp_pl_id, 'START_PPB',TEXT_PARAMETER, :PRINT_INDEXES.ppb_ran
ge_start);
ADD_PARAMETER(lvp_pl_id, 'END_PPB', TEXT_PARAMETER, :PRINT_INDEXES.p
pb_range_end);
ADD_PARAMETER(lvp_pl_id, 'PARAMFORM',TEXT_PARAMETER, 'NO');
P_Call_Report(par_rpt_type_in||'.rep',lvp_pl_id);
DESTROY_PARAMETER_LIST('rep_paramlist');
END;
END;

Вам также может понравиться