BI Java SDK - query parameters

Hello.
I`m using BI Java SDK to develop a custom Java Swing Application to integrate with the SAP BW 3.5
I need to replicate the BW query in Java Application and execute this in the Java Side.
My question is: ...can i replicate the initial screen of the BW query in Java Application  ?
The initial screen of bw query with the filters and parameters to execute the query in Java side.
How i capture the filters and paramenters of BW query in BI Java SDK ?
Best Regards.
Taylor

We have a problem with the API BI Java SDK.
In my application, i using the swing and BI Java SDK to list al cubes and execute the queries.
The tutorials in "BI Java SDK Examples page" are in "Hard Coded" for all itens, parameters, cubes, mdx Queries ...etc !!!
When i try to execute the query i need add all dimensions in rows to set in moveDimensionToRows in IBICommandProcessor Class
This the sample code and the problem:
//Create olap Query and Commandprocessor
IBIQuery query = olap.createQuery(cube);
IBICommandProcessor commandProcessor = query.getCommandProcessor();
//Here i set the dimension in "hard Coded", but my application captures this automatically to set the dimensions.
Dimension dimension1 = olap.getObjectFinder().findDimensionFirst(cube, "0CALMONTH");
Dimension dimension2 = olap.getObjectFinder().findDimensionFirst(cube, "EPINSTALA__0UCRATE_CAT");
// Here i move the (dimension1 and dimension2 to rows. <-- THE PROBLEM IS HERE - How to capture only dimensions in rows to set in moveDimensionRows ???
commandProcessor.moveDimensionToRows(dimension2);
commandProcessor.moveDimensionToRows(dimension1);
// Execute the query and retrieve the result set.
IBIDataSet dataset = query.execute();
Problem --> When i try to execute the query without set moveDimensionToRows, this return only the global result of query (1 row only).
To return all data in my Grid (JTable), i need to set moveDimensionToRows.
How i can capture only the rows dimensions to set in moveDimensionToRows and collum dimension ???
How to separate row dimension and collum dimension???
thanks...

Similar Messages

  • Retrieve underlying SQL query for deski report via java SDK in BOXIR2

    Hi all,
    I am trying to retrieve underlying SQL queries of a deski report in BOXIR2. However I find the error as
    oDataProvider = oDocumentInstance.getDataProviders().getItem(i1);               
    System.out.print(oDataProvider.getName());
    oSQLDataProvider = (SQLDataProvider) oDataProvider;
    oSQLContainer_root = oSQLDataProvider.getSQLContainer();
    But "This feature is not supported for desktop Intelligence " exception has occured.
    I am running the same query for Webi, and I did not find any issue . After several time spending in google, it appears to me that this code is supported by webi only. But "This feature is not supported for desktop Intelligence " exception has occured.
    Please help me to find out the solution in java SDK. If its not supported by Java SDK, then could you please provide me any workaround , e.g. any macro . Any help !!
    Regards,
    Nita
    Edited by: Nita Prasad on Aug 11, 2009 11:20 AM
    Edited by: Nita Prasad on Aug 11, 2009 11:25 AM

    Hi Fritz,
    I am not getting the way.. how to open the deski report programmatically. I am writing the code in this way:
    Dim oInfoObjects1 As CrystalInfoStoreLib.InfoObjects
            Set oInfoObjects1 = oInfoStore.Query("SELECT * FROM CI_INFOOBJECTS WHERE SI_NAME='" & oInfoObject.Title & "' AND SI_ID='" & oInfoObject.Id & "' order by SI_NAME")
        Dim oInfoObject1 As CrystalInfoStoreLib.InfoObject
        Dim UserCount1 As Integer
            UserCount1 = oInfoObjects1.ResultCount
            MsgBox "SELECT * FROM CI_INFOOBJECTS WHERE SI_NAME=' " & oInfoObject.Title & " ' AND SI_ID=' " & oInfoObject.Id & " ' order by SI_NAME"
            MsgBox " Total number of Deski reports are : [" & UserCount1 & "]", vbOKOnly
        Dim j As Integer
         For j = 1 To UserCount1
          Set oInfoObject1 = oInfoObjects1.Item(i)
                sFile_ReportList = StrConv(oInfoObject1.Title, vbLowerCase) & ".rep"
                sFile_Output = "D:\TraceWrite1\ " & StrConv(oInfoObject1.Id & "_" & oInfoObject1.Title, vbLowerCase) & ".txt"
                sFile_ReportListTemp = StrConv(oInfoObject1.Files.Item(j), vbLowerCase)
                MsgBox "[" & sFile_ReportList & "]", vbOKOnly
                        If Dir(sFile_ReportList) = "" Then
                MsgBox "The text file [" & sFile_ReportList & "] for the DeskI documents does not exist!" & vbCrLf & "Aborting process."
                Exit Sub
                End If
    I am getting the error on line ...  If Dir(sFile_ReportList) = "" Then...  The code is not able to locate the deski report path.
    Is this the correct way to get a deski report information? Please let me know, If I am going in the right direction.
    Edited by: Nita Prasad on Aug 18, 2009 3:47 PM

  • BI Java SDK: Bex query in Webdynpro java

    Hi,
    I want to know is it possible to view a Bex query output
    in a webdynpro java application. There is a Bex query defined i just want to get the report of this query or atleast the output of this query. Also how will be the output structure? i am not familier to BI plz help. I did go though BI SDK documentation but did not help
    Vinay

    Hi Vinay,
    The BEx query output in webdynpro is with help connectors. the connector SAP query which you were speaking about is one of the four options. I hope this is the link what u were refering to link:[http://help.sap.com/saphelp_nw04/helpdata/en/6e/011e681cf74ab4b3acf73f77653405/frameset.htm]
    SAP Query is a component of SAP's Web Application Server that allows you to create custom reports without any ABAP programming knowledge. The BI SAP Query Connector uses SAP Query to allow applications created with the BI Java SDK to access data from these SAP operational applications.SAP Query offers users a broad range of ways to define reports and create different types of reports such as basic lists, statistics, and ranked lists.
    It would be a better option if  with JDBC connector because that worked for me in extarcting data from a different source system.BI JDBC Connector is aslo used to make these data sources available in BW, via BW's UD Connect.
    For the WD code i need to check.
    Please tell me if its helpful.
    Regards,
    Shaila.

  • Execution of BEx Query Designer Querys in BI Java SDK

    Hello experts,
    i am actually occupying with the possibilities of the BI Java SDK. I checked the documentation but could not find an answer to my question, so i address this issue now to the community in the hope, that someone out there can give me a hint:
    Is it possible to execute a BI query, which was designed in the BEx query designer, within the BI Java SDK OLAP query api?
    Is  there somewhere a method, which could be simply passed the technical names of the infocube and  the query and then returns the query result as a IBIResultSet or IBIDataSet?
    Thanks in advance for your help,
    best regards,
    Thilo

    Hello Mohan,
    thanks for this impression - thats a way i didn't think about at all before. I even think, that it is not necessary to publish the query as iview - it would suffice to invoke the BEx-AdHoc-Analysis Service via a HttpConnection-Object within a servlet and then parse the result delivered by the BEx service. You won't even need BI Java SDK for this, since this is plain Java functionality.
    But as i see there seems to exist no BI Java SDK-"generic" possibility to invoke an existing query as i see....
    If anybody has got another idea, it is very welcome. But i think i will investigate on the approach with the native HTTP call to AdHoc Service.
    Thanks anyway & best regards,
    Thilo

  • How to send query parameters using BIApplicationFrame in WD Java

    HI,
    I am working on integration of BEx WebTemplate in webdynpro view.
    I am using BIApplicationFrame ui element for this.
    I set the template id in template property of BIApplicationFrame.
    I have to execute a query of this template.
    So i selected the option 'query' of dataProviderStateType property.
    How to send the query parameters to that query.
    I am setting the fowlloing values in BIApplicationFrame
    dataProviderStateName: BEx Query Name
    dataProviderStateType: query
    server: server url
    server type: java
    templateid: BEx template id.
    The query screen is opening ..But no data.
    I have to pass the following two parameters to that query:
    BI_COMMAND_1-I_COMMAND_TYPE=SET_VARIABLES_STATE&BI_COMMAND_1-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE=ZVARCUST01&BI_COMMAND_1-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE=VARIABLE_INPUT_STRING&BI_COMMAND_1-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE-VARIABLE_INPUT_STRING=0500000003
    &BI_COMMAND_2-BI_COMMAND_TYPE=SET_VARIABLES_STATE&BI_COMMAND_2-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE=0I_CMNTH&BI_COMMAND_2-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE=VARIABLE_INPUT_STRING&BI_COMMAND_2-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE-VARIABLE_INPUT_STRING=01/2000-12/2002
    How to send these two query parameters using BIApplicationFrame.
    I did not find any help ( Example tutorial ) for BIApplicationFrame UI element in SDN.
    Please help me.

    My problem solved. I used the following code in wdModifyView() method.
    Map parameters=new HashMap();
    parameters.put("BI_COMMAND_1-BI_COMMAND_TYPE=SET_VARIABLES_STATE&BI_COMMAND_1-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE=ZVARCUST01&BI_COMMAND_1-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE=VARIABLE_INPUT_STRING&BI_COMMAND_1-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE-VARIABLE_INPUT_STRING","0500000003");
    parameters.put("BI_COMMAND_2-BI_COMMAND_TYPE=SET_VARIABLES_STATE&BI_COMMAND_2-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE=0I_CMNTH&BI_COMMAND_2-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE=VARIABLE_INPUT_STRING&BI_COMMAND_2-VARIABLE_VALUES-VARIABLE_VALUE_1-VARIABLE_TYPE-VARIABLE_INPUT_STRING","01/2000-12/2002");
    WDBIMethods.addCustomParameters(wdThis.wdGetAPI(),"BIApplicationFrame",parameters);

  • How to create a report with data using the Crystal Reports for Java SDK

    Hi,
    How do I create a report with data that can be displayed via the Crystal Report for Java SDK and the Viewers API?
    I am writing my own report designer, and would like to use the Crystal Runtime Engine to display my report in DHTML, PDF, and Excel formats.  I can create my own report through the following code snippet:
    ReportClientDocument boReportClientDocument = new ReportClientDocument();
    boReportClientDocument.newDocument();
    However, I cannot find a way to add data elements to the report without specifying an RPT file.  Is this possible?  I seems like it is since the Eclipse Plug In allows you to specify your database parameters when creating an RPT file.
    is there a way to do this through these packages?
    com.crystaldecisions.sdk.occa.report.data
    com.crystaldecisions.sdk.occa.report.definition
    Am I forced to create a RPT file for the different table and column structures I have? 
    Thank you in advance for any insights.
    Ted Jenney

    Hi Rameez,
    After working through the example code some more, and doing some more research, I remain unable to populate a report with my own data and view the report in a browser.  I realize this is a long post, but there are multiple errors I am receiving, and these are the seemingly essential ones that I am hitting.
    Modeling the Sample code from Create_Report_From_Scratch.zip to add a database table, using the following code:
    <%@ page import="com.crystaldecisions.sdk.occa.report.application.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.data.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.document.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.definition.*"%>
    <%@ page import="com.crystaldecisions.sdk.occa.report.lib.*" %>
    <%@ page import = "com.crystaldecisions.report.web.viewer.*"%>
    <%
    try { 
                ReportClientDocument rcd = new ReportClientDocument();
                rcd.newDocument();
    // Setup the DB connection
                String database_dll = "Sqlsrv32.dll";
                String db = "qa_start_2012";
                String dsn = "SQL Server";
                String userName = "sa";
                String pwd = "sa";
                // Create the DB connection
                ConnectionInfo oConnectionInfo = new ConnectionInfo();
                PropertyBag oPropertyBag1 = oConnectionInfo.getAttributes();
                // Set new table logon properties
                PropertyBag oPropertyBag2 = new PropertyBag();
                oPropertyBag2.put("DSN", dsn);
                oPropertyBag2.put("Data Source", db);
                // Set the connection info objects members
                // 1. Pass the Logon Properties to the main PropertyBag
                // 2. Set the Server Description to the new **System DSN**
                oPropertyBag1.put(PropertyBagHelper.CONNINFO_CRQE_LOGONPROPERTIES, oPropertyBag2);
                oPropertyBag1.put(PropertyBagHelper.CONNINFO_CRQE_SERVERDESCRIPTION, dsn);
                oPropertyBag1.put("Database DLL", database_dll);
                oConnectionInfo.setAttributes(oPropertyBag1);
                oConnectionInfo.setUserName(userName);
                oConnectionInfo.setPassword(pwd);
                // The Kind of connectionInfos is CRQE (Crystal Reports Query Engine).
                oConnectionInfo.setKind(ConnectionInfoKind.CRQE);
    // Add a Database table
              String tableName = "Building";
                Table oTable = new Table();
                oTable.setName(tableName);
                oTable.setConnectionInfo(oConnectionInfo);
                rcd.getDatabaseController().addTable(oTable, null);
        catch(ReportSDKException RsdkEx) {
                out.println(RsdkEx);  
        catch (Exception ex) {
              out.println(ex);  
    %>
    Throws the exception
    com.crystaldecisions.sdk.occa.report.lib.ReportSDKException: java.lang.NullPointerException---- Error code:-2147467259 Error code name:failed
    There was other sample code on SDN which suggested the following - adding the table after calling table.setDataFields() as in:
              String tableName = "Building";
                String fieldname = "Building_Name";
                Table oTable = new Table();
                oTable.setName(tableName);
                oTable.setAlias(tableName);
                oTable.setQualifiedName(tableName);
                oTable.setDescription(tableName) ;
                Fields fields = new Fields();
                DBField field = new DBField();
                field.setDescription(fieldname);
                field.setHeadingText(fieldname);
                field.setName(fieldname);
                field.setType(FieldValueType.stringField);
                field.setLength(40);
                fields.add(field);
                oTable.setDataFields(fields);
                oTable.setConnectionInfo(oConnectionInfo);
                rcd.getDatabaseController().addTable(oTable, null);
    This code succeeds, but it is not clear how to add that database field to a section.  If I attempt to call the following:
    FieldObject oFieldObject = new FieldObject();
                oFieldObject.setDataSourceName(field.getFormulaForm());
                oFieldObject.setFieldValueType(field.getType());
                // Now add it to the section
                oFieldObject.setLeft(3120);
                oFieldObject.setTop(120);
                oFieldObject.setWidth(1911);
                oFieldObject.setHeight(226);
                rcd.getReportDefController().getReportObjectController().add(oFieldObject, rcd.getReportDefController().getReportDefinition().getDetailArea().getSections().getSection(0), -1);
    Then I get an error (which is not unexpected)
    com.crystaldecisions.sdk.occa.report.lib.ReportDefControllerException: The field was not found.---- Error code:-2147213283 Error code name:invalidFieldObject
    How do I add one of the table.SetDataFields()  to my report to be displayed?
    Are there any other pointers or suggestions you may have?
    Thank you

  • BI Java SDK in BI 7.0: Read Time out when executing MDX Statements

    Hi all,
    we´ve implemented some functions with the BI JAVA SDK which gets informations out of our BI via the SOAP / XMLA  Service. For some Queries this is not working and the following exception occurs on Java Side:
    --- snip ---     
    Caused by: java.rmi.RemoteException: Service call exception; nested exception is:
         java.net.SocketTimeoutException: Read timed out
    --- snip ---
    The same query works on our Test Enviroment (which has longer execution times) so the difference has to be in some parameters set on the BI System. So the question is:
    Which parameters affect the queries sent via the SOAP / XMLA Service ?
    Any clues ?
    Thank for your help.
    Marco

    Hi Shan,
    that was also my first idea - but it didn´t help. It also does not explain, why the same codings works against the testsystem. Thats why i think the problem is related to some type of (profile-?) parameters on the BI Server itself. But its just a guess ....
    Marco

  • Creating a sample report using JAVA SDK

    Hi,
    I am trying to create a sample report using JAVA SDK.
    I slelect 4 "free cells" and pass 4 different strings to it.
    I even slelect the font colour and size. When i run the class and try to view the report in Infoview, I only seeblank blocks without any data. Now if I edit the report from infoview, and save the changes, I am able to see the data.
    My issue is, Why am I not able to see the data when I run the java code.
    Please find teh code below.
    package com;
    import java.awt.Color;
    import java.io.FileOutputStream;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    import com.businessobjects.rebean.wi.BinaryView;
    import com.businessobjects.rebean.wi.DataProvider;
    import com.businessobjects.rebean.wi.DataProviders;
    import com.businessobjects.rebean.wi.DataSource;
    import com.businessobjects.rebean.wi.DataSourceObject;
    import com.businessobjects.rebean.wi.DocumentInstance;
    import com.businessobjects.rebean.wi.DocumentLocaleType;
    import com.businessobjects.rebean.wi.FontImpl;
    import com.businessobjects.rebean.wi.FreeCell;
    import com.businessobjects.rebean.wi.HTMLView;
    import com.businessobjects.rebean.wi.OutputFormatType;
    import com.businessobjects.rebean.wi.PageHeaderFooter;
    import com.businessobjects.rebean.wi.Query;
    import com.businessobjects.rebean.wi.Recordset;
    import com.businessobjects.rebean.wi.Report;
    import com.businessobjects.rebean.wi.ReportBody;
    import com.businessobjects.rebean.wi.ReportCell;
    import com.businessobjects.rebean.wi.ReportContainer;
    import com.businessobjects.rebean.wi.ReportElement;
    import com.businessobjects.rebean.wi.ReportEngine;
    import com.crystaldecisions.sdk.framework.CrystalEnterprise;
    import com.crystaldecisions.sdk.framework.IEnterpriseSession;
    import com.crystaldecisions.sdk.framework.ISessionMgr;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObject;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
    import com.crystaldecisions.sdk.occa.infostore.IInfoStore;
    import com.crystaldecisions.sdk.plugin.CeKind;
    public class Aug7th {
          * @param args
         public static void main(String[] args) {
              // TODO Auto-generated method stub
              String CMS = "pundl8136:6400";
              String userID = "srivas";
              String password = "morcom123";
              String auth = "secEnterprise";
              List<String> entire =new ArrayList<String>();
              List<String> country =new ArrayList<String>();
              List<String> resort =new ArrayList<String>();
              IEnterpriseSession enterpriseSession;
              try
                   ISessionMgr mySessionMgr = CrystalEnterprise.getSessionMgr();
                   enterpriseSession = mySessionMgr.logon(userID, password, CMS,auth);
                   if (enterpriseSession != null)
                   {//Create and store useful objects for the session.
                        IInfoStore iStore = (IInfoStore)enterpriseSession.getService("InfoStore");
                        ReportEngine reportEngine = (ReportEngine)enterpriseSession.getService("WebiReportEngine");
                        IInfoObject infoView = null;
                        String str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS WHERE (SI_KIND = '"+CeKind.WEBI+"' OR SI_KIND='FullClient') " +
                        "AND SI_INSTANCE = 'false' AND SI_NAME='Structure Test_001_Java' ORDER BY SI_NAME ASC ";
                        //String str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS ORDER BY SI_NAME ASC ";
                        IInfoObjects objInfoObjectsWIDs = (IInfoObjects) iStore.query(str);
                        System.out.println(objInfoObjectsWIDs.size());
                        IInfoObject objInfoObjectWID = (IInfoObject) objInfoObjectsWIDs.get(0);
                        DocumentInstance doc = reportEngine.openDocument(objInfoObjectWID.getID());
                        DataProviders dps = doc.getDataProviders();
    //                     Retrieve the 1st data provider
                        DataProvider dp = dps.getItem(0);
    //                     Retrieve the universe objects
                        DataSource ds = dp.getDataSource ();
                        Query q = dp.getQuery();
                        Recordset rs = dp.getResult(0);
    //                     0: assume query has one flow
                        rs.first();
    //                     Print the column types. They can be Integer, String,
    //                     or Date.
                        for (int i = 0; i < rs.getColumnCount(); i++) {
                        Class c = rs.getColumnType(i);
                        StringBuffer sbt = new StringBuffer();
                        if ( c.equals(Integer.class) )
                        sbt.append("Integer");
                        if ( c.equals(String.class) )
                        sbt.append("String");
                        if ( c.equals(Date.class) )
                        sbt.append("Date");
                        sbt.append(";");
                        System.out.println(sbt.toString());
                        System.out.println(rs.getColumnCount());
                        while (!rs.isLast()) {
    //                          column names
                             StringBuffer sbn = new StringBuffer();
                             StringBuffer sbd = new StringBuffer();
                             for (int j = 0; j < rs.getColumnCount(); j++) {
                             sbn.append( rs.getColumnName(j).toString() );
                             sbn.append(";");
                             System.out.println("sbn "+sbn.toString());
    //                          data
                             for (int k= 0; k< rs.getColumnCount(); k++) {
                             sbd.append( rs.getCellObject(k).toString() );
                             sbd.append(";");
                             entire.add(rs.getCellObject(k).toString());
                             System.out.println("sbd "+sbd.toString());
                             rs.next();
                        System.out.println(entire.size());
                        for(int i=0;i<entire.size();i++){
                             country.add(entire.get(i));
                             i++;
                             System.out.println("entireList "+entire.get(i));
                             resort.add(entire.get(i));
                        DataSourceObject city = ds.getClasses().getChildByName("Country");
                        DataSourceObject resorts = ds.getClasses().getChildAt(1);
                        dp.runQuery();
                        ReportContainer report = doc.createReport("Resort");
                        PageHeaderFooter header = report.getPageHeader();
                        FreeCell headerCell = header.createFreeCell("Resort Report");
                        PageHeaderFooter footer = report.getPageFooter();
                        FreeCell footerCell = footer.createFreeCell("Report Ends");
                        ReportBody body =  report.createReportBody();
                        for(int k=0;k<resort.size();k++){
                        FreeCell res=body.createFreeCell(resort.get(k));
                        res.getAttachTo();
                        res.setHeight(15d);
                        res.setWidth(30d);
                        Color c = new Color(255,255,255);
                        Color c1 = new Color(255,0,0);
                        FontImpl fnt = (FontImpl)res.getFont();
                        fnt.getDecoration().setTextColor(c1);
                        res.setFont(fnt);
                        //res.deleteAttachment();
                        //res.setAttachTo(body,VAnchorType.BOTTOM,HAnchorType.NONE);
                        doc.applyFormat();
                        doc.refresh();
                        final String l_docToken = doc.getStorageToken();
                        final DocumentInstance l_docToSave = reportEngine.getDocumentFromStorageToken(l_docToken);
                        doc.saveAs("mor31",835,null,null);
                        doc.closeDocument();
                        str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS WHERE (SI_KIND = '"+CeKind.WEBI+"' OR SI_KIND='FullClient') " +
                        "AND SI_INSTANCE = 'false' AND SI_NAME='mor31' ORDER BY SI_NAME ASC ";
                        //String str = "SELECT SI_ID, SI_NAME, SI_PARENTID FROM CI_INFOOBJECTS ORDER BY SI_NAME ASC ";
                        objInfoObjectsWIDs = (IInfoObjects) iStore.query(str);
                        System.out.println(objInfoObjectsWIDs.size());
                        objInfoObjectWID = (IInfoObject) objInfoObjectsWIDs.get(0);
                        DocumentInstance doc1 = reportEngine.openDocument(objInfoObjectWID.getID());
                        String token = doc1.getStorageToken();
                        DocumentInstance doc2 = reportEngine.getDocumentFromStorageToken(token);
                        doc2.saveAs("123123", 835, null, null);
                   //     doc.refresh();
                        //doc.save();
                   enterpriseSession.logoff();
              catch(Exception e)
                   e.printStackTrace();

    duplicate post:
    Sample report using JAVA SDK

  • How to get the primarykey columns of the table in SAP BI Java SDK

    Hi, I'm new to sap BI Java SDK. I'm not getting how to get the primarykey columns, using BI JDBC Connector (for relational data sources). If anybody knows, please let me know. its very very urgent task to be done in my project. In the below following code.... I have written a code to connect to the database through resource bundle, reading table names, once user select table name, i need to show the primary key columns of that table to the user. here i'm not getting how to get the primary key columns . Please send me the code if there is any method to find out the primarykey columns or a logic to get them. I will be greatful to you.... if you can do this favour.
    Please check out the following code ........
    ManagedConnectionFactory mcf;
    IConnectionFactory cf;
    IConnectionSpec cs;
    mcf = new JdbcManagedConnectionFactory();
    cf = (IConnectionFactory) mcf.createConnectionFactory();
    cs = cf.getConnectionSpec();
    ResourceBundle rbLocal = ResourceBundle.getBundle( "xxxx");
    Enumeration propnames = rbLocal.getKeys();
    while (propnames.hasMoreElements())
    String key = (String) propnames.nextElement(); //out.print(key); //out.println("="rbLocal.getString(key)"");
    cs.setPropertyValue(key, rbLocal.getString(key));
    // Establishing the connection. // The IBIRelational interface provides an entrypoint to access // metadata and execute queries.
    IBIConnection connection = (IBIConnection) cf.getConnectionEx(cs); I
    BIRelational rel = connection.getRelational();
    IBIQuery query = rel.createQuery();
    String sqlStatement = "SELECT * FROM " + "BICQPERSON where type='pk'"; ResultSet rs = IBIDataSet dataset = query.execute();
    Thanks SreeKanth

    Hi,
    looks like you are on Infomation Builders, correct? If yes through which adapter and to what DB are you connecting?? in an R3/BW system you can do the folowing:
    "(ABAP)
    SELECT DISTINCT FIELDNAME
    FROM DD03L
    WHERE TABNAME = '/BIC/QPERSON'
      AND AS4LOCAL = 'A'
      AND KEYFLAG = 'X'
    ORDER BY 1
    Another option is goto directly to the RDBMS; in this case let me which one are you using
    hope this helps...
    Olivier.
    Message was edited by:
            Olivier Cora

  • How to set DbConnections when scheduling a crystal report using Crystal Reports Server Java SDK?

    Post Author: Manjula
    CA Forum: JAVA
    Hi,
    Trying to schedule a report using Crystal Reports Server Java SDK. Want to pass DBConnections from API, though passing DBConnections, the report is not being scheduled and says "Failed to retrieve data from the database.Details:&#91;Database Vendor Code:6550&#93;.
    Would be thankful if someone could answer my point as applicable.
    Here is the code attached.
    ISDKList dbLogons = oReport.getReportLogons();int dbLogonSize = dbLogons.size();
    for(int i=0; i<dbLogonSize; ++i) {
    IReportLogon dbLogon = (IReportLogon)dbLogons.get(i);
    dbLogon.setDatabaseName("DBname");
    dbLogon.setUserName("usrname");
    dbLogon.setPassword("pwd");
    Thanks in advance.

    Post Author: Manjula
    CA Forum: JAVA
    Ted,
    Thank you for your valuable information.
    First, tried scheduling on Central Management Console and then with the java code.It worked fine, but here is another question for you.
    On the Console, a report exists with ServerName and UserName harcoded and when trying to set ServerName and UserName from the java code, its throwing exception. Where as Password is not set on Console, am able to set password from java.
    And DatabaseName is not set on Console (non editable), unable to set the same from java too. Why is it so?
    So, my question is - though ServerName,DatabaseName,UserName,Password exists on the Console report, can't I override those parameters from java?
    Would be greatful if you answer my question and provide me some guidance.
    Thanks in advance.

  • Webi document prompts order from Java SDK does not refresh correctly?

    Hi
    I'm developping a standalone command-line Java program which will schedule a report with custom prompt values.
    I am having a problem with Webi prompts ordering acquired from the SDK.
    We are running BO XI R2 SP4 under Windows on Tomcat servers.
    Here is the problem:
    I have a Webi report called "Articles Racines" in a "Tests SDK" directory.
    This report uses two prompts named "Type Article :" and "Code Marque :" (in this order).
    Java SDK (code below) returns the right prompts in the right order.
    Now, in Infoview, I modify the report in order to change the order of the prompts (in the "Properties" tab) making "Code Marque :" the first and "Type Article :" the second one and save the changes.
    When I run the report, prompt order has changed but the prompts retrieved from the Java SDK are still in the old order.
    I noticed that if I update the name of both prompts, the prompts retrieved from the SDK now are in the right order (with the updated names).
    Am I doing something wrong? Is it a known issue?
    Thanks in advance.
    Guillaume
    PS : I am aware that "select *" are very bad but I am still in research stage of developpment.
    TestsScheduler.java:
    import java.util.Iterator;
    import java.util.List;
    import java.util.StringTokenizer;
    import com.businessobjects.sdk.plugin.desktop.webi.IWebi;
    import com.businessobjects.sdk.plugin.desktop.webi.IWebiPrompt;
    import com.crystaldecisions.sdk.exception.SDKException;
    import com.crystaldecisions.sdk.framework.CrystalEnterprise;
    import com.crystaldecisions.sdk.framework.IEnterpriseSession;
    import com.crystaldecisions.sdk.framework.ISessionMgr;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObject;
    import com.crystaldecisions.sdk.occa.infostore.IInfoObjects;
    import com.crystaldecisions.sdk.occa.infostore.IInfoStore;
    public class TestsScheduler {
         public static void main(String[] args) {
              String cms = "XXX";
              String username = "XXX";
              String password = "XXX";
              String authentification = "secEnterprise";
              String reportPath = "/Tests SDK/Liste des racines";
              try {
                   ISessionMgr sessionManager = CrystalEnterprise.getSessionMgr();
                   IInfoObjects objects;
                   // Connexion
                   System.out.println("Connexion à "+ username +"@"+ cms +" ("+ authentification +") en cours...");
                   IEnterpriseSession session = sessionManager.logon(username, password, cms, authentification);
                   System.out.println("Connecté à "+ session.getCMSName());
                   // Récupération de l'infoStore
                   IInfoStore infoStore = (IInfoStore) session.getService("InfoStore");
                   // Récupération des informations d'un report
                   StringTokenizer st = new StringTokenizer(reportPath, "/");
                   int reportID = 0; // Le dossier "Dossiers Publics" est la racine (/)
                   IInfoObjects infoObjects;
                   IInfoObject infoObject;
                   do {
                        String token = st.nextToken();
                        System.out.println("Recherche de l'objet '"+ token +"' en cours...");
                        infoObjects = infoStore.query("select * from CI_INFOOBJECTS where SI_NAME = '"+ token +"' and SI_PARENTID = '"+ reportID +"'");
                        if(infoObjects.size() != 1) {
                             throw new Error("Le dossier SI_ID='"+ reportID +"' possède "+ infoObjects.size() + " fils nommés '"+ token +"'.");
                        infoObject = (IInfoObject) infoObjects.get(0);
                        reportID = infoObject.getID();
                        System.out.println("Trouvé l'objet SI_ID='"+ reportID +"' nommé '"+ infoObject.getTitle() +"'.");
                   } while(st.hasMoreTokens());
                   if(infoObject instanceof IWebi) {
                        IWebi webi = (IWebi) infoObject;
                        List prompts = webi.getPrompts();
                        System.out.println("Le rapport Webi possède "+ prompts.size() +" invite(s).");
                        for(Iterator itPrompts = prompts.iterator(); itPrompts.hasNext();) {
                             IWebiPrompt prompt = (IWebiPrompt) itPrompts.next();
                             List values = prompt.getValues();
                             System.out.println("     L'invite '"+ prompt.getName() +"' possède "+ values.size() +"' valeur(s).");
                             for(Iterator itValues = values.iterator(); itValues.hasNext();) {
                                  Object value = itValues.next();
                                  System.out.println("          Valeur='"+ value +"'.");
                   // Déconnexion
                   System.out.println("Déconnexion en cours...");
                   session.logoff();
                   System.out.println("Déconnecté");
              } catch(SDKException e) {
                   throw new Error("Erreur lors de la connexion : "+ e.getMessage());
    Edited by: Guillaume L on Dec 10, 2008 3:22 PM

    Here's the reason why:
    Web Intelligence document prompting is handled properly if you open the doc using the ReportEngine Java (REBean) SDK.
    When you set prompts and schedule, you'd first open the doc using REBean, set the prompts, then copy over the prompt values you've set to the IWebi you're scheduling using the PromptsUtil.populateWebiPrompts(...,...) helper method.
    So the InfoObject IWebi doesn't know about the actual ordering of the prompts in the document itself - it's just receiving the prompts in order as it's fed from PromptsUtil.
    It's not recommended to assume that the IWebi.getPrompts() will return a non-empty collection.  The Web Intellligence document must be first opened in ReportEngine and the prompting values set using PromptsUtil to fill the collection.
    Sincerely,
    Ted Ueda

  • Issue about BI JAVA SDK-SOAP request failed with return message 2147483653

    Dear Experts,
    I'm trying to use BI JAVA SDK to connect BW by using XMLA connector.
    But there's an error messaet said :
    SOAP request failed with return message 2147483653 ( Invalid MDX command with INCLUDING)
    I'm really new to this JAVA SDK, and after searching help in SAP Service Market and Google, there's no helpful suggestion.
    please help me about how to fix this error.
    Here is my code:
    IBIConnection connection = (IBIConnection) cf.getConnectionEx(cs);
          IBIOlap olap = connection.getOlap();
          Cube cube = olap.getObjectFinder().
          findCubeFirst((String)null, "ZFI_C11/ZFI_C11_Q001");
        // This is just a sanity check to verify that the
        // cube on which this example relies was retrieved 
        if (cube==null){
            System.out.println("no cube found");
    // Didn't print out this message, seems it can connect to BW and get the InfoCube and Query.
        Dimension plantDimension = olap.getObjectFinder().
        findDimensionFirst(cube, "ZPLANT");
      Dimension materialDimension = olap.getObjectFinder().
        findDimensionFirst(cube, "ZMATERIAL"); 
      IBIQuery query = olap.createQuery(cube);
      IBICommandProcessor commandProcessor = query.getCommandProcessor();
      commandProcessor.moveDimensionToRows(plantDimension);
      commandProcessor.moveDimensionToRows(materialDimension);
      IBIDataSet dataset = query.execute(); // After execute this statement, error happens.
    Thank you!
    Andy

    Solved myself, it's because the query used in my code have user input variable.

  • Migration from Crystal IX to BO-XI using java sdk-- very urgent

    Post Author: Pranav.Sharma
    CA Forum: Migration to XI R2
    Need help in migration from Crystal Report IX to BO-XI.
    Currently we are using CR IX and Java SDK to access reports from J2ee application. These reports reside on remote server where we have shared access to that directory.
    We are accessing these reports through our j2ee application.Can anyone please elaborate whether we can use same SDK here with slight change in code probably in authentication related to CMS etc and calling mechanism or we have to go for BO java SDK alltogether. Is anything we are missing here?
    Can anyone please  help as  we have to complete migration in 1-2 days.

    The first thing you will want to do is to publish all of your reports to Business Objects XI and make sure they all still work. Obviously they won't have the dynamic parameters anymore but you should just ensure they all work and are able to connect to their databases. You can use a tool like the publishing wizard to help you.
    All the reports should now be available inside of XI.
    Unfortunately you will need to manually modify all of the 400 reports to use the business objects Dynamic Cascading Parameters DCP.
    There should be some DCP info in the Business Views documentation.
    I hope this helps
    Rob Horne<br /><a href="/blog/10">Rob&#39;s blog - http://diamond.businessobjects.com/robhorne</a>

  • Please Help me on BI Java SDK using BI JDBC Connector

    Hi, I'm new to sap BI Java SDK. I'm not getting how to get the primarykey columns, using BI JDBC Connector (for relational data sources). If anybody knows, please let me know. its very very urgent task to be done in my project. In the below following code.... I have written a code to connect to the database through resource bundle, reading table names, once user select table name, i need to show the primary key columns of that table to the user. here i'm not getting how to get the primary key columns . Please send me the code if there is any method to find out the primarykey columns or a logic to get them. I will be greatful to you.... if you can do this favour. Please check out the following code ........
    ManagedConnectionFactory mcf;
    IConnectionFactory cf;
    IConnectionSpec cs;
    mcf = new JdbcManagedConnectionFactory();
    cf = (IConnectionFactory) mcf.createConnectionFactory();
    cs = cf.getConnectionSpec();
    ResourceBundle rbLocal = ResourceBundle.getBundle( "xxxx");
    Enumeration propnames = rbLocal.getKeys();
    while (propnames.hasMoreElements())
    String key = (String) propnames.nextElement(); //out.print(key); //out.println("="rbLocal.getString(key)"");
    cs.setPropertyValue(key, rbLocal.getString(key));
    // Establishing the connection. // The IBIRelational interface provides an entrypoint to access // metadata and execute queries.
    IBIConnection connection = (IBIConnection) cf.getConnectionEx(cs);
    IBIRelational rel = connection.getRelational();
    IBIQuery query = rel.createQuery();
    String sqlStatement = "SELECT * FROM " + "BICQPERSON where type='pk'"; ResultSet rs = IBIDataSet dataset = query.execute();
    Thanks SreeKanth

    Well, I added two lines in OC4J.cmd
    set ORACLE_HOME=C:\OC4J\oc4j_extended_101350
    set JAVA_HOME=C:\JAVA\JDK7u7
    before
    set J2EE_HOME=%ORACLE_HOME%\j2ee\home
    and I restarted the windows. It looks try to run OC4J but failed, as I open services window, it shows OC4J is "stopping". When I try to run it manually, I got the same problem again. is there anything I missed? What is your OC4J, JDK and javaservice version?
    Sam

  • How to use Java SDK to schedule a report in business objects

    hi guys i am having a scenario , were the Java SDK will be passing the parameters dynamically to the report in business objects . the Java SDK is kicked by the file based events. this Java SDK will be on the unix server and the business object is also on the unix server. I am having the crystal reports in boe which need to be triggered by the Java SDK . such that the report is scheduled to a particular location on the unix  for every week,when the java passes the parameters to the report in boe
    Edited by: americansalt on Nov 4, 2010 11:30 AM

    You can do this by using the BOE SDK. Here are some samples:
    http://www.sdn.sap.com/irj/boc/index?rid=/library/uuid/806fc83f-18ba-2b10-f2b9-cbb49963fc93
    Regards,
    Stratos

Maybe you are looking for