cancel
Showing results for 
Search instead for 
Did you mean: 

Crystal report viewer blank page error

sucindar
Discoverer
0 Kudos

Trying to display report inside java application using JSP.

Able to show report successfully but once started scrolling it refreshes and become blank page.

Export also not working.

Below is the error in the exception log.

2024-01-13 19:17:37

com.businessobjects.report.web.shared.WebReportingException: The viewer could not process an event. The report source could not be retrieved from the state object. [CRWEB00000134] ---- Error code:0 [CRWEB00000119]

at com.businessobjects.report.web.shared.WebReportingException.throwWebReportingException(WebReportingException.java:71)

at com.businessobjects.report.web.component.ViewerContainer.processEvents(ViewerContainer.java:1577)

at com.businessobjects.report.web.WorkflowController.doEventProcessing(WorkflowController.java:401)

at com.businessobjects.report.web.WorkflowController.doLifecycle(WorkflowController.java:289)

at com.businessobjects.report.web.WorkflowController.doAsyncLifecycle(WorkflowController.java:122)

at com.crystaldecisions.report.web.viewer.CrystalReportViewerUpdater._processHttpRequest(CrystalReportViewerUpdater.java:61)

at com.crystaldecisions.report.web.ServerControl.processHttpRequest(ServerControl.java:345)

at com.crystaldecisions.report.web.viewer.CrystalReportViewerServlet.doUpdate(CrystalReportViewerServlet.java:210)

at com.crystaldecisions.report.web.viewer.CrystalReportViewerServlet.doPost(CrystalReportViewerServlet.java:198)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:681)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:764)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at org.apache.openejb.server.httpd.EEFilter.doFilter(EEFilter.java:67)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.dassault_systemes.cv.servlet.CVServletWebCacheLoader.doFilter(CVServletWebCacheLoader.java:94)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.matrixone.apps.domain.util.XSSInputFilter.doFilter(XSSInputFilter.java:317)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at org.jasig.cas.client.util.HttpServletRequestWrapperFilter.doFilter(HttpServletRequestWrapperFilter.java:70)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.dassault_systemes.dspassport.cas.client.validation.BubbleKeepAliveFilter.doFilter(BubbleKeepAliveFilter.java:83)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.dassault_systemes.dspassport.cas.client.authentication.DynamicServiceUrlAuthenticationFilter.doFilter(DynamicServiceUrlAuthenticationFilter.java:245)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.dassault_systemes.dspassport.cas.client.validation.DynamicServiceUrlAbstractTicketValidationFilter.doFilter(DynamicServiceUrlAbstractTicketValidationFilter.java:416)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.dassault_systemes.dspassport.cas.client.validation.CASProxyTicketValidationFilter.doFilter(CASProxyTicketValidationFilter.java:169)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.dassault_systemes.plmsecurity.ticket.servlet.LoginTicketAuthenticationFilter.doFilter(LoginTicketAuthenticationFilter.java:78)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.dassault_systemes.dspassport.cas.client.session.SingleSignOutFilter.doFilter(SingleSignOutFilter.java:99)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at com.matrixone.servlet.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:173)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)

at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)

at org.apache.tomee.catalina.OpenEJBSecurityListener$RequestCapturer.invoke(OpenEJBSecurityListener.java:97)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)

at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.base/java.lang.Thread.run(Thread.java:889)

Caused by: com.businessobjects.report.web.shared.MissingReportSourceException: The report source could not be retrieved from the state object.---- Error code:0 [CRWEB00000134]

at com.businessobjects.report.web.event.ViewerBroadcaster.broadCastEvent(ViewerBroadcaster.java:125)

at com.businessobjects.report.web.event.ViewerBroadcaster.broadcast(ViewerBroadcaster.java:110)

at com.businessobjects.report.web.event.EventQueue.processEvents(EventQueue.java:53)

at com.businessobjects.report.web.component.ViewerContainer.processEvents(ViewerContainer.java:1559)

... 66 more

JSP

<%@ page import="com.crystaldecisions.sdk.framework.*" %>

<%@ page import="com.crystaldecisions.sdk.exception.*" %>

<%@ page import="com.crystaldecisions.sdk.occa.infostore.*" %>

<%@ page import="com.crystaldecisions.sdk.occa.security.*" %>

<%@ page import="com.crystaldecisions.report.web.viewer.*" %>

<%@ page import="com.crystaldecisions.sdk.plugin.desktop.report.*" %>

<%@ page import="com.crystaldecisions.sdk.plugin.desktop.common.*" %>

<%@ page import="com.crystaldecisions.sdk.occa.managedreports.*" %>

<%@ page import="com.crystaldecisions.sdk.occa.report.reportsource.*" %>

<%@ page import="com.crystaldecisions.sdk.occa.report.data.*" %>

<%@ page import="java.text.SimpleDateFormat" %>

<%@ page import="java.text.ParsePosition" %>

<%@ page import="java.util.*" %>

<%@ include file="logon.jsp" %>

<%

try

{

//Get the requested report ID and the Crystal Enterprise Session

String siName = request.getParameter("SI_NAME");

String refreshData = request.getParameter("RefreshData");

refreshData = refreshData == null ? "false" : request.getParameter("RefreshData");

IInfoStore iStore;

IInfoObjects oInfoObjects;

IInfoObject oInfoObject = null;;

Fields f = new Fields();

if ( refreshData.equals("true") || session.getAttribute("crview") == null ) {

SimpleDateFormat dateFormatter= new SimpleDateFormat("(yyyy,M,d)");

SimpleDateFormat dateTimeFormatter= new SimpleDateFormat("(yyyy,M,d,h,m,s)");

// Get the report using the SI_ID

iStore = (IInfoStore) es.getService("", "InfoStore");

oInfoObjects = iStore.query("SELECT * FROM CI_INFOOBJECTS WHERE SI_NAME = '" + siName + "'");

oInfoObject = (IInfoObject)oInfoObjects.get(0);

IReport theReport = (IReport)oInfoObject;

// If the report has parameters, there should be form data for their values

if (theReport.getReportParameters().size() > 0) {

for (int i = 0; i < theReport.getReportParameters().size(); i++) {

IReportParameter param = (IReportParameter)theReport.getReportParameters().get(i);

// Create a new ParameterField object, copy the values

// from the parameters read out of the IReport object

ParameterField pf = param.getParameterField();

switch (param.getValueType()) {

case 0:

pf.setType(FieldValueType.numberField);

break;

case 1:

pf.setType(FieldValueType.currencyField);

break;

case 2:

pf.setType(FieldValueType.booleanField);

break;

case 3:

pf.setType(FieldValueType.dateField);

break;

case 4:

pf.setType(FieldValueType.timeField);

break;

case 5:

pf.setType(FieldValueType.dateTimeField);

break;

case 6:

pf.setType(FieldValueType.stringField);

break;

default:

}

Values pvls = new Values();

if (param.isRangeValueSupported()) {

ParameterFieldRangeValue pfrv = new ParameterFieldRangeValue();

String from = request.getParameter("frm" + i);

String to = request.getParameter("to" + i);

switch (param.getValueType()) {

case 0: //Number Value Type

case 1: //Currency Value Type

// differentiate between longs and doubles

if (from.indexOf(".")<0)

pfrv.setBeginValue(new Long(from));

else

pfrv.setBeginValue(new Double(from));

if (to.indexOf(".")<0)

pfrv.setEndValue(new Long(to));

else

pfrv.setEndValue(new Double(to));

break;

case 3:

// expected format for date: (YYYY,MM,DD)

Date dateValue= dateFormatter.parse(from.substring(from.indexOf('(') ), new ParsePosition(0));

pfrv.setBeginValue(dateValue);

Date dateValue1= dateFormatter.parse(to.substring(to.indexOf('(') ), new ParsePosition(0));

pfrv.setEndValue(dateValue1);

break;

case 4:

// expected format for time: (YYYY,MM,DD,HH,MM,SS)

Date timeValue= dateTimeFormatter.parse(from.substring(from.indexOf('(') ), new ParsePosition(0));

pfrv.setBeginValue(timeValue);

Date timeValue1= dateTimeFormatter.parse(to.substring(to.indexOf('(') ), new ParsePosition(0));

pfrv.setEndValue(timeValue1);

case 5:

// expected format for datetime: (YYYY,MM,DD,HH,MM,SS)

Date dateTimeValue= dateTimeFormatter.parse(from.substring(from.indexOf('(') ), new ParsePosition(0));

pfrv.setBeginValue(dateTimeValue);

Date dateTimeValue1= dateTimeFormatter.parse(to.substring(to.indexOf('(') ), new ParsePosition(0));

pfrv.setEndValue(dateTimeValue1);

break;

default:

pfrv.setBeginValue(from);

pfrv.setEndValue(to);

}

// set the upper and lower bounds to be inclusive

pfrv.setLowerBoundType(RangeValueBoundType.inclusive);

pfrv.setUpperBoundType(RangeValueBoundType.inclusive);

pvls.add(pfrv);

} else {

ParameterFieldDiscreteValue pfdv = new ParameterFieldDiscreteValue();

String val = request.getParameter("vl" + i);

switch (param.getValueType()) {

case 0: //Number Value Type

case 1: //Currency Value Type

if (val.indexOf(".")<0)

pfdv.setValue(new Long(val));

else

pfdv.setValue(new Double(val));

break;

case 3: //Date Value Type

Date dateValue= dateFormatter.parse(val.substring(val.indexOf('(') ), new ParsePosition(0));

pfdv.setValue(dateValue);

break;

case 4: //Time Value Type

Date timeValue= dateTimeFormatter.parse(val.substring(val.indexOf('(') ), new ParsePosition(0));

pfdv.setValue( timeValue );

case 5: //DateTime Value Type

Date dateTimeValue= dateTimeFormatter.parse(val.substring(val.indexOf('(') ), new ParsePosition(0));

pfdv.setValue(dateTimeValue);

break;

default: //String Value Type

pfdv.setValue(val);

}

pvls.add(pfdv);

}

// use the Values to set the current values

pf.setCurrentValues(pvls);

// add the field to the Fields collection

f.add(pf);

}

}

//Get a Page Server Report factory and use it to create a ReportSource object

IReportSourceFactory factoryPS = (IReportSourceFactory) es.getService("PSReportFactory");

IReportSource reportSource = factoryPS.openReportSource((oInfoObject),Locale.ENGLISH);

//Create a Report Viewer and set its properties before calling processHttpRequest

CrystalReportViewer viewer = new CrystalReportViewer();

viewer.setReportSource(reportSource);

viewer.setEnterpriseLogon(es);

viewer.setDisplayPage(true);

viewer.setDisplayToolbar(true);

viewer.setOwnPage(true);

viewer.setPrintMode(CrPrintMode.ACTIVEX);

viewer.setName("CrystalReportViewer");

viewer.setParameterFields(f);

session.setAttribute("crview", viewer );

}

((CrystalReportViewer)session.getAttribute("crview")).processHttpRequest(request, response, getServletConfig().getServletContext(), null);

}

catch (Exception e) {

System.out.println("ReportSDKException: "+e);

}

%>

SAP BusinessObjects BI Platform 4.3 Support Pack 4 Patch 1

Version: 14.3.4.4808

Please help

Accepted Solutions (0)

Answers (0)