Hi Experts,<br />
please help me with this. i have created java class to fetch data from SAP system using SAP JCO connector.<br />
code
<br />
import java.lang.reflect.Array;<br />
import java.util.Arrays;<br />
<br />
import org.eclipse.birt.report.engine.api.script.IScriptedDataSetMetaData;<br />
import org.eclipse.birt.report.engine.api.script.IUpdatableDataSetRow;<br />
import org.eclipse.birt.report.engine.api.script.eventadapter.ScriptedDataSetEventAdapter;<br />
import org.eclipse.birt.report.engine.api.script.instance.IDataSetInstance;<br />
import com.sap.mw.jco.*;<br />
public class MyScriptedDataSet extends ScriptedDataSetEventAdapter {<br />
public int recordCount = 0;<br />
public String[][] buffer;<br />
R3Table table;<br />
SapDataSource sds;<br />
<br />
@Override<br />
public boolean fetch(IDataSetInstance dataSet,IUpdatableDataSetRow row ) {<br />
try{<br />
<br />
if(buffer.length<1) return false;<br />
for(int i=0;i<buffer.length;i++){<br />
for(int j=0;j<buffer
.length;j++) row.setColumnValue(buffer[0][j], buffer[j]);<br />
}<br />
return true;<br />
<br />
}catch( Exception e ){<br />
e.printStackTrace();<br />
sds.disconnect();<br />
return false;<br />
}<br />
}<br />
@Override<br />
public void open( IDataSetInstance dataSet ) {<br />
String[] arr={"110","sysadm","basis56","EN","10.28.32.23","00","0","0","T002","",""};<br />
sds=new SapDataSource(arr);<br />
table=sds.getTable();<br />
}<br />
public void dataBuffer(){<br />
<br />
String info;<br />
try{<br />
MyScriptedDataSet msds=new MyScriptedDataSet();<br />
<br />
for(int j=0;j<msds.table.getNumRows();j++){<br />
<br />
for(int i=0; i<msds.table.getMetaData().getFieldCount();i++)<br />
{ <br />
if(j==0){<br />
info=msds.table.getMetaData().getName(i);<br />
}<br />
else{<br />
info=(String) msds.table.getValue(i);<br />
}<br />
buffer[j]=info;<br />
} <br />
}<br />
<br />
sds.disconnect();<br />
}catch( Exception e ){<br />
e.printStackTrace();<br />
sds.disconnect();<br />
<br />
} <br />
}<br />
public static void main(String[] args){<br />
String[] arr={"110","sysadm","basis56","EN","10.28.32.23","00","0","0","T002","",""};<br />
SapDataSource sds1=new SapDataSource(arr);<br />
R3Table table1=sds1.getTable();<br />
for(int j=0;j<table1.getNumRows();j++){<br />
for(int i=0; i<table1.getMetaData().getFieldCount();i++)<br />
{ <br />
System.out.print(table1.getMetaData().getName(i)+":"+table1.getValue(i));<br />
<br />
} <br />
System.out.println(" ");<br />
}<br />
}<br />
}<br />
<br />
when is execute it as Java Application in eclpise. its working fine but when i run this in the from the report i am getting following error..<br />
<br />
Error
<br />
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568)<br />
at org.mortbay.http.HttpContext.handle(HttpContext.java:1530)<br />
at org.mortbay.http.HttpContext.handle(HttpContext.java:1482)<br />
at org.mortbay.http.HttpServer.service(HttpServer.java:909)<br />
at org.mortbay.http.HttpConnection.service(HttpConnection.java:820)<br />
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986)<br />
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837)<br />
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245)<br />
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357)<br />
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534)<br />
Caused by: org.eclipse.birt.report.engine.api.EngineException: Error happened while running the report<br />
at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:259)<br />
at org.eclipse.birt.report.engine.api.impl.RunTask.run(RunTask.java:90)<br />
at org.eclipse.birt.report.service.ReportEngineService.runReport(ReportEngineService.java:1246)<br />
... 51 more<br />
Caused by: java.lang.ExceptionInInitializerError: JCO.classInitialize(): Could not load middleware layer 'com.sap.mw.jco.rfc.MiddlewareRFC'<br />
JCO.nativeInit(): Could not initialize dynamic link library sapjcorfc [Native Library C:sapjcosapjcorfc.dll already loaded in another classloader]. java.library.path [D:eclipse;.;C:WINDOWSSunJavabin;C:WINDOWSsystem32;C:WINDOWS;C:/Program Files/Java/jdk1.6.0_02/bin/../jre/bin/client;C:/Program Files/Java/jdk1.6.0_02/bin/../jre/bin;d:share;c:sapjco;c:sapjcosapjco.jar;C:Program FilesJavajdk1.6.0_02bin;C:usrsitebin;C:usrbin;D:Program FilesMySQLMySQL Server 5.1bin;C:usrbin;C:Perlbin;D:oracleora92bin;c:program filessdbprogramsbin;c:program filessdbprogramspgm;;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:Program FilesIntelDMIX;C:Program FilesOpenOffice.org 3program;C:Program FilesOpenOffice.org 3Basisprogram;C:Program FilesOpenOffice.org 3Basisprogramclasses]<br />
at com.sap.mw.jco.JCO.(JCO.java:776)<br />
at SapDataSource.(SapDataSource.java:37)<br />
at MyScriptedDataSet.(MyScriptedDataSet.java:14)<br />
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)<br />
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)<br />
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)<br />
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)<br />
at java.lang.Class.newInstance0(Class.java:355)<br />
at java.lang.Class.newInstance(Class.java:308)<br />
at org.eclipse.birt.report.engine.script.internal.ScriptExecutor.getInstance(ScriptExecutor.java:129)<br />
at org.eclipse.birt.report.engine.script.internal.DataSetScriptExecutor.initEventHandler(DataSetScriptExecutor.java:62)<br />
at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.initEventHandler(ScriptDataSetScriptExecutor.java:56)<br />
at org.eclipse.birt.report.engine.script.internal.DataSetScriptExecutor.(DataSetScriptExecutor.java:47)<br />
at org.eclipse.birt.report.engine.script.internal.ScriptDataSetScriptExecutor.(ScriptDataSetScriptExecutor.java:47)<br />
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.newScriptDataSet(ModelDteApiAdapter.java:625)<br />
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.createDataSetDesign(ModelDteApiAdapter.java:220)<br />
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.doDefineDataSet(ModelDteApiAdapter.java:288)<br />
at org.eclipse.birt.report.engine.adapter.ModelDteApiAdapter.defineDataSet(ModelDteApiAdapter.java:247)<br />
at org.eclipse.birt.report.engine.data.dte.AbstractDataEngine.prepare(AbstractDataEngine.java:140)<br />
at org.eclipse.birt.report.engine.executor.ReportExecutor.execute(ReportExecutor.java:118)<br />
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:59)<br />
at org.eclipse.birt.report.engine.internal.executor.emitter.ReportEmitterExecutor.execute(ReportEmitterExecutor.java:76)<br />
at org.eclipse.birt.report.engine.internal.executor.wrap.WrappedReportExecutor.execute(WrappedReportExecutor.java:59)<br />
at org.eclipse.birt.report.engine.internal.executor.dup.SuppressDuplciateReportExecutor.execute(SuppressDuplciateReportExecutor.java:51)<br />
at org.eclipse.birt.report.engine.presentation.ReportDocumentBuilder.build(ReportDocumentBuilder.java:209)<br />
at org.eclipse.birt.report.engine.api.impl.RunTask.doRun(RunTask.java:237)<br />
... 53 more<br />
<br />
<br />
<br />
<br />
What could be wrong here.. i have cheked the calss path. it looks fine to me. it points to the sapjco.jar and in path it points to sapjcorfc.dll.<br />
<br />
Thanks<br />
Ramakrishna