Quantcast
Channel: SCN : All Content - RESTful Web Services SDK
Viewing all 262 articles
Browse latest View live

Not able to refresh the report with Parameters.

$
0
0

I am not able to refresh the report with simple parameters. Error message is "The Remote Server returned error : (400) Bad Request.

 

If I mention Request type "POST" then I get this error "The Remote Server returned error: (405) Method not Allowed.

 

Below is my code snippet. Please help me.

 

2016-03-22_155519.jpg


PDF output with text cut horizontally

$
0
0

Hi,

 

I have a 12 page webi report with CLOB objects and the text in report get cut when exported to PDF. For example, if the text flows from one page to second page it get cut. This was not an issue in the earlier version 6.5. SAP confirmed this as a bug.

 

Using restful webservices i was able to export it into PDF (no text getting cut) with out the pages option (all data showing up in one page). But the issue when printed, only one page of data get printed not all 12 pages. If i export using pages option in Restful (/reportid/pages) the result will be with text getting cut.

 

Wondering any way i can export to one page and take printout or may be convert the one page to many pages of PDF without text get cut.

 

Any ideas or suggestion for a work around is appreciated.

 

Thanks,
Arun

RESTful Webservice "Operation Timed Out."

$
0
0

Version BI4.1 SP4 Patch 4

Clustered Windows Environment

One WACS Service (default settings)

 

Using C# HTTPWebRequest and HTTPWebResponse for all the steps

Workflow

1. POST Login (using Enterprise)

2. PUT Refresh document no parameters (using docid)

3. GET Refreshed document - This Step Fails (Operation timed out)

4. POST Logoff - This step fails (Operation timed out)

 

The workflow fails about 90% of the tries. We also noticed that some of the steps take a long time to process. For example refreshing the document in Launchpad takes about 13 seconds, but using REST calls it varies from 30 to 120 seconds

 

When we do the same steps using a REST Client (in browser) we are able to process all the steps without failures. We did notice the same processing time as mentioned above.

 

Report in BI Launchpad works without any issues.

 

Please advise.

Running query against universe and return results

$
0
0

Hi,

 

I have a custom sql that is used in a report. Can i run the same custom sql against a universe and get the results? I was searching the WS document and found this -

 

  • Runs the query using GET <slURL>/queries/{queryId}/data.svc
  • Returns the query results using GET <slURL>/queries/{queryId}/data.svc/{flowName}ArunI am not clear on this part "queries/{queryId}/data.svc/{flowName}".  Are "queries" the actual custom sql? What is queryId? Also how to find the flowName?Any help appreciated.Thanks,

Can I name an emailed attachment?

$
0
0

I've developed a Java program to schedule and re-schedule reports.  Some of these use Business Objects to email files to recipients.  There doesn't seem to be the ability to name the attached file, which tends to get named the same as the Instance with a random numeric string concatenated to the name. The XSD schema in note 1899352 seems to confirm this, or am I missing something?

 

Is it possible to name the attached file with a chosen name (mimicking the "Use Specific File Name" box in regular BOXI scheduling) or does is these currently not possible?

 

I want the file name to be of the form  - reportnameYYYY-MM-dd-HH-mm.ss.pdf 

Can I name emailed file attachments?

$
0
0

I've developed a Java program which schedules and re-schedules reports and many of these are sent as attachments.  I don't seem to have any control over the name of the attachment which defaults to the instance name with a concatenated numeric string appended.

 

Are there tags to name the attachment?  Sap note 1899352 giving the XSD schema doesn't seem to show them. 

 

I'd like to name my attachments with the date and time appended in the form

Report Name YYYY-MM-dd-HH-mm-ss


The xml template file I'm using is attached

Incorrect session found in HTTP header X-SAP-LogonToken (too many values)

$
0
0

Hi,

 

When I try to retrieve a list of infostore objects using the Rest API (http://localhost:6405/biprws/infostore) everything works fine.

 


But when I try to retrieve a list of universes (http://localhost:6405/biprws/sl/v1/universes) using the same code I get the following error:

ERROR: 401 - Unauthorized - WSR 00002 - Incorrect session found in HTTP header X-SAP-LogonToken (too many values) error


In my code the X-SAP-LogonToken has been surrounded by double-quotes:

    

xhrObj.setRequestHeader("X-SAP-LogonToken",sessionToken);

 

Does anyone know what I'm doing wrong?

 

Here is the full code:

 

<!DOCTYPE html><html><head>    <script src="scripts/jquery-1.11.3.js"></script>    <script src="scripts/jquery.json2html.js" type="text/javascript"></script>    <script>        var nextRequestAttemptDelay=700; //set this value for longer time if many of requests fail-milliseconds        var sessionToken;        var boServer;        function login() {            console.log("logOn");            boServer="http://localhost:6405";            //new logon object            var logonInfo = new Object();            //for BO login there are 3 attributes essential for logging: userName,password and auth.            logonInfo.userName="enter user";            logonInfo.password="enter password";            logonInfo.auth="secEnterprise";            //#biprws/logon/long            var logonUrl="http://localhost:6405/biprws/logon/long";            console.log("URL: " + logonUrl);            //#for log            var inputData = JSON.stringify(logonInfo,null,'\t');            // call request to BO to perform query and log inging we will use JSON. Simply because it is clearer than XML            // convert JS objects to JSON string with input data...            var queryResult=performQuery(inputData,'POST',logonUrl);            // if query was successfull            if (queryResult.errText==null){                //set global session token                sessionToken=queryResult.data.logonToken;                console.log("You are now logged in! ","success");                               setTimeout(  function(){                            loadMainInfostoreView();                                       }                        ,500                );            } else{ //there was an erro while processing request                           console.log("Logging to BOBJ server has failed - "+queryResult.errText ,"error");            }        }               function loadMainInfostoreView() {            setTimeout(  function(){                                              //var infostoreUrl="http://localhost:6405/biprws/infostore";                       var infostoreUrl="http://localhost:6405/biprws/sl/v1/universes"                        //no input data required                        // call request to BO to perform query for getting infostore data                        var queryResult=performQuery(null ,'GET',infostoreUrl);                        // if query was successfull                        if (queryResult.errText==null){                            //show results                            showResults('INFOSTORE_LIST',queryResult.data.entries)                        } else{ //there was an erro while processing request                            //inform user about error during logg-in process..                            console.log("ERROR: Loading main infostore view has failed - "+queryResult.errText ,"error");                        }                    }                    ,300            );        }        function performQuery(inputData,requestType,requestUrl){            // result object            var result = new Object();            result.data=null; //for result data            result.errText=null; //for result error message            //console.log("performing query");            $.ajax({                beforeSend: function(xhrObj){                    //xhrObj.setRequestHeader("Content-Type","application/json");                    xhrObj.setRequestHeader("Accept","application/json");                    //if session exists it is neccessary to add it into any request                    if (sessionToken != null){                        xhrObj.setRequestHeader("X-SAP-LogonToken",sessionToken);                    }                },                //if input data exists we want to add it                async: false, //otherwise function would be always null                crossDomain:true,                data: inputData,                type: requestType,                url: requestUrl,                dataType: 'json',                contentType:'application/json',                error: function(xhrObj, textStatus, errorThrown) {                    // sometimes we get only HTTP OK 200 status without {} and jquery incorrectly ¨                    //interpretes that as an error state so we want                    // check for client 4xx and server 5XX error codes                    if (xhrObj.status>=400){                        //if there is no response at all..                        if (textStatus=="error" && errorThrown==""){                            errorThrown="No response from server";                        }                        var d=" - ";                        var errObj = new Object();                        // try enhanced error description                        try {                            errObj=JSON.parse(xhrObj.responseText.replace(/\n/g,"")); // remove new lines from response string                            result.errText=xhrObj.status+d+errorThrown                                    +d+errObj.error_code+d+errObj.message;                            //otherwise at least some description                        } catch (err) {                            result.errText=xhrObj.status+d+errorThrown;                        }                    }                },                success: function(xhrObj, textStatus, errorThrown) {                    //manage non error but still unsuccessful requests                    result.data=xhrObj;                },            });            return result        }        function showResults(actionType,actionData){            switch(actionType){                case "INFOSTORE_LIST":                    // for infostore base view we create menu items                    // create menu                    $.each(actionData,function(key,value){                        //create menu button and its label                       console.log("data: " + key + " - " + value.name)                    });            }        }    </script></head><body><button onclick="loadMainInfostoreView()">Click me</button></body><script>    $( document ).ready(function() {        console.log( "ready!" );        login();    });</script></html>

Exporting a Webi report as PDF

$
0
0

Hi,

 

I'm having a hard time getting a PDF to export properly. I can get the report to export, but the report header and footer are missing.

 

In a nutshell, here's what I'm doing:

 

* GET request to http://server:6405/biprws/raylight/v1/document/1234/parameters/?lovInfo=false to get the list of parameters my report needs

* PUT request to http://server:6405/biprws/raylight/v1/document/1234/parameters, with the following XML:

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><parameters>    <parameter optional="false" type="prompt" dpId="DP0">        <id>0</id>        <technicalName>Please Enter Date</technicalName>        <name>Please Enter Date</name>        <answer constrained="true" type="Text">            <info cardinality="Single" keepLastValues="true">                <lov hierarchical="false" refreshable="true">                    <id>UNIVERSELOV_DS0.DO2e</id>                </lov>                <previous>                    <value id="0">02/28/2016</value>                </previous>            </info>            <values>                <value id="0">02/28/2016</value>            </values>        </answer>    </parameter>    <parameter optional="false" type="prompt" dpId="DP0">        <id>1</id>        <technicalName>Please Enter Agency Identifier:</technicalName>        <name>Please Enter Agency Identifier:</name>        <answer constrained="false" type="Text">            <info cardinality="Single" keepLastValues="true">                <lov hierarchical="false" refreshable="true">                    <id>UNIVERSELOV_DS0.DO21</id>                </lov>                <previous>                    <value>100049</value>                </previous>            </info>            <values>                <value>100052</value>            </values>        </answer>    </parameter></parameters>

* GET request to http://server:6405/biprws/raylight/v1/document/1234, with Accept header set to "application/pdf"

 

While I do get my PDF, I'm only getting the main body, not the page header/footer.

 

Any suggestions?


Purging after modifying the report

$
0
0

Hi,

 

After purging a document, i opened it modified by adding couple of columns, refreshed and saved it.

Now i run the purge again, it displays the old purged document instead of new modified one. So for state (Original, Unused and Modified) i defined the URL like this -

 

PUT = ../raylight/v1/documents/docid/dataproviders?purge = true&state=Modified

 

and for saving the document back to CMS, my URL is /raylight/v1/documents/docid?state=Modified.

 

This doesn't gives the desired result. I have gone through the document, but it do not mention an example with a URL.

 

Any help appreciated.

 

Thanks,

Arun

Error: RWI 00014

$
0
0

I am trying to execute a WebI report using java apis.Am able to create a reportEngine instance bit when I try to setup a

DocumentInstance using - reportEngine.openDocument(1234)

 

I get the error - RWI 00014

which (from SAP documentaion) relates to

 

Cause

 

You cannot retrieve more than one report part in DHTML output format simultaneously.

 

Action

 

Enter a single report part reference.

 

 

The report I am trying to open is a simple report so not sure what the above error means and how to get around that

 

Thanks.

Error while refreshing report through parameter

$
0
0

Hi ,

 

I am getting below error while refreshing report through parameter, using BO 4.1 SP5

 

1. Created new document

Request:http://xyz:6405/biprws/raylight/v1/documents

Method: POST

Body:

<document>

    <name>sample</name>

<folderId>12644</folderId>

</document>

Accept: application/xml

Content-Type: application/xml

 

2. Added data providera


Request:

http://xyz:6405/biprws/raylight/v1/documents/2374/dataproviders

Method:POST

<dataprovider>

  <name>"XYZ"</name>

  <dataSourceId>3345</dataSourceId>

</dataprovider>


Accept: application/xml

Content-Type: application/xml

 

3. Saved document

Request:

http://xyz:6405/biprws/raylight/v1/documents/2374

Method:PUT

Accept: application/xml

Content-Type: application/xml

 

 

4. added query specification

Request:

http://xyz:6405/biprws/raylight/v1/documents/2374/DP0/specification

Method:PUT

Accept: application/xml

Content-Type: text/xml

<?xml version="1.0" encoding="UTF-8"?>

<queryspec:QuerySpec xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:queryspec="http://com.sap.sl.queryspec" version="17" dataProviderId="DP0">

    <queryParameters>

      <duplicatedRowsProperty activated="true" value="true"/>

      <maxRetrievalTimeInSecondsProperty value="0"/>

      <maxRowsRetrievedProperty value="0"/>

      <removeEmptyRowsProperty activated="true" value="true"/>

      <allowOtherUserToEditQueryProperty activated="true" value="true"/>

      <resetContextOnRefreshProperty activated="true" value="true"/>

      <stripQueryProperty/>

      <useBexQueryDefaultValue activated="true" value="true"/>

    </queryParameters>

    <queriesTree xsi:type="queryspec:QueryDataNode">

      <bOQuery name="Query">

        <resultObjects name="State"/>

        <resultObjects name="Sales revenue"/>

        <conditionPart/>

      </bOQuery>

    </queriesTree>

</queryspec:QuerySpec>

 

5. saved document again

saved successfully

 

6. Refreshing report

Request:

http://xyz:6405/biprws/raylight/v1/documents/2374/parameters

Method: GET

Accept: application/xml

Content-Type: application/xml

 

Getting below error at this stage

 

  • <error>
  •    <error_code>999</error_code>
  •    <message>Internal error (RaylightAction)</message>
  •    <stack_trace>com.sap.webi.raylight.RaylightException: Internal error (RaylightAction)&#13;
  •   at com.sap.webi.raylight.context.Messenger.internalError(Messenger.java:83)&#13;
  •   at com.sap.webi.raylight.actions.ActionDispatcher.handleUnexpectedError(ActionDispatcher.java:131)&#13;
  •   at com.sap.webi.raylight.actions.ActionDispatcher.invoke(ActionDispatcher.java:117)&#13;
  •   at com.sap.webi.raylight.RaylightServiceParameters.getParameters(RaylightServiceParameters.java:94)&#13;
  •   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&#13;
  •   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&#13;
  •   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&#13;
  •   at java.lang.reflect.Method.invoke(Method.java:597)&#13;
  •   at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:173)&#13;
  •   at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:89)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:164)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:242)&#13;
  •   at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:91)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)&#13;
  •   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)&#13;
  •   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)&#13;
  •   at java.util.concurrent.FutureTask.run(FutureTask.java:138)&#13;
  •   at org.apache.cxf.workqueue.SynchronousExecutor.execute(SynchronousExecutor.java:37)&#13;
  •   at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:106)&#13;
  •   at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:255)&#13;
  •   at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:113)&#13;
  •   at org.apache.cxf.transport.servlet.ServletDestination.invoke(ServletDestination.java:102)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:464)&#13;
  •   at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:149)&#13;
  •   at com.sap.bip.rs.server.servlet.BIPServletController.invoke(BIPServletController.java:93)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractCXFServlet.invoke(AbstractCXFServlet.java:148)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:179)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:108)&#13;
  •   at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)&#13;
  •   at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:159)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at com.businessobjects.sdk.actionfilter.WorkflowFilter.doFilter(WorkflowFilter.java:45)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)&#13;
  •   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)&#13;
  •   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)&#13;
  •   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)&#13;
  •   at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)&#13;
  •   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)&#13;
  •   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)&#13;
  •   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)&#13;
  •   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)&#13;
  •   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)&#13;
  •   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)&#13;
  •   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)&#13;
  •   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)&#13;
  •   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)&#13;
  •   at java.lang.Thread.run(Thread.java:743)&#13;
  •   Caused by: java.lang.reflect.InvocationTargetException&#13;
  •   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)&#13;
  •   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)&#13;
  •   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)&#13;
  •   at java.lang.reflect.Method.invoke(Method.java:597)&#13;
  •   at com.sap.webi.raylight.actions.ActionInvoker.invokeWith(ActionInvoker.java:123)&#13;
  •   at com.sap.webi.raylight.actions.ActionDispatcher.invoke(ActionDispatcher.java:105)&#13;
  •   ... 48 more&#13;
  •   Caused by: com.businessobjects.sdk.core.server.CommunicationException$UnexpectedServerException: You do not have sufficient rights to refresh the query. Some objects are not available to your user profile. Contact your administrator to request the necessary rights. (IES 00002)&#13;
  •   at com.businessobjects.sdk.core.exception.ExceptionBuilder.make(ExceptionBuilder.java:152)&#13;
  •   at com.businessobjects.sdk.core.exception.ExceptionBuilder.make(ExceptionBuilder.java:109)&#13;
  •   at com.businessobjects.sdk.core.server.common.CommonRequestHandler.afterProcessing(CommonRequestHandler.java:127)&#13;
  •   at com.businessobjects.sdk.core.server.internal.AbstractServer.processIt(AbstractServer.java:178)&#13;
  •   at com.businessobjects.sdk.core.server.internal.AbstractServer.process(AbstractServer.java:133)&#13;
  •   at com.businessobjects.sdk.core.server.internal.InstanceServer.process(InstanceServer.java:94)&#13;
  •   at com.sap.sl.sdk.services.util.ServerRequestProcessor.processServerRequest(ServerRequestProcessor.java:49)&#13;
  •   at com.sap.sl.sdk.dataprovider.service.DataProviderServiceImpl.processDataProviderCommand(DataProviderServiceImpl.java:589)&#13;
  •   at com.sap.sl.sdk.dataprovider.service.DataProviderServiceImpl.prepare(DataProviderServiceImpl.java:367)&#13;
  •   at com.sap.sl.sdk.workspace.service.WorkspaceServiceImpl.prepare(WorkspaceServiceImpl.java:308)&#13;
  •   at com.sap.sl.sdk.workspace.service.WorkspaceServiceImpl.prepare(WorkspaceServiceImpl.java:296)&#13;
  •   at com.sap.webi.raylight.business.ParameterHelper.&lt;init&gt;(ParameterHelper.java:156)&#13;
  •   at com.sap.webi.raylight.actions.parameter.GetParametersAction.execute(GetParametersAction.java:26)&#13;
  •   ... 54 more&#13;
  •   Caused by: com.businessobjects.sdk.core.server.ServerException: You do not have sufficient rights to refresh the query. Some objects are not available to your user profile. Contact your administrator to request the necessary rights. (IES 00002)&#13;
  •   at com.businessobjects.sdk.core.server.common.CommonRequestHandler.newServerException(CommonRequestHandler.java:260)&#13;
  •   at com.businessobjects.sdk.core.server.common.CommonRequestHandler.createAllServerExceptions(CommonRequestHandler.java:238)&#13;
  •   at com.businessobjects.sdk.core.server.common.CommonRequestHandler.afterProcessing(CommonRequestHandler.java:121)&#13;
  •   ... 64 more&#13;
  • </stack_trace>
  • </error>

How to Display Webi Report using Restful SDK

$
0
0

Hi,

 

I am trying to find a way to display the webi report without saving using Restful SDK. I am able to refresh the report successfully and able to save it and use OpenDocument method to display the report. But I would like to display the refreshed report without saving using Restful SDK. is it possible?

 

Thanks,

 

Madhu V

Export only Report Table data into Excel without Heading of the report.

$
0
0

Hi ,

 

Is it possible to export to excel only the Report Table data into Excel using Rest API?export.jpg

 

Thanks,

Sivaraman

Not able to add query Specification to the Data Provider

$
0
0

1. Create Document

     String Create= "<document><name>Doc</name><folderId>4825</folderId></document>"

2. Added Data Provider

    String Create = <dataprovider><name>eFashion</name><dataSourceId>4835</dataSourceId></dataprovider>"

3.After Dataprovider creation I am using the below code to add queryspecificationcreatecode.jpg

4. Getting  the below error. Please help

 

createerr.jpg

Report using restful API is not fetching the data

$
0
0

Hi ,

The Report downloaded using the RestFul API(in C#) is not fetching the data,i.e, only fetching the schema of the report.we have fallowed below code to fetch the report Please find the code below

 

string userName = "XXXXXXX";

            string password = "***************";

            string auth = "secEnterprise";

            string baseURL = "*********************:6405/biprws/";

            string LogonURI = baseURL + "logon/long";

            string InfoStoreURI = baseURL + "raylight/v1/documents/56547"; //5385 is the document id

          

            string rwsLogonToken;

 

 

            try

            {

                //Making GET Request to  /logon/long to receive XML template.

                WebRequest myWebRequest = WebRequest.Create(LogonURI);

                myWebRequest.ContentType = "application/xml";

                myWebRequest.Method = "GET";

 

 

 

 

                //Returns the response to the request made

                WebResponse myWebResponse = myWebRequest.GetResponse();

                //Creating an instance of StreamReader to read the data stream from the resource

                StreamReader sr = new StreamReader(myWebResponse.GetResponseStream());

                //Reads all the characters from the current position to the end of the stream and store it as string

                string output = sr.ReadToEnd();

                //Initialize a new instance of the XmlDocument class

                XmlDocument doc = new XmlDocument();

                //Loads the document from the specified URI

                doc.LoadXml(output);

 

 

 

 

                //Returns an XmlNodeList containing a list of all descendant elements

                //that match the specified name i.e. attr

                XmlNodeList nodelist = doc.GetElementsByTagName("attr");

                //  Add the logon parameters to the attribute nodes of the document

                foreach (XmlNode node in nodelist)

                {

                    if (node.Attributes["name"].Value == "userName")

                        node.InnerText = userName;

 

 

                    if (node.Attributes["name"].Value == "password")

                        node.InnerText = password;

 

 

                    if (node.Attributes["name"].Value == "auth")

                        node.InnerText = auth;

                }

 

 

                //Making POST request to /logon/long to receive a logon token

                WebRequest myWebRequest1 = WebRequest.Create(LogonURI);

                myWebRequest1.ContentType = "application/xml";

                myWebRequest1.Method = "POST";

 

 

                byte[] reqBodyBytes = System.Text.Encoding.Default.GetBytes(doc.OuterXml);

 

 

                Stream reqStream = myWebRequest1.GetRequestStream();

                reqStream.Write(reqBodyBytes, 0, reqBodyBytes.Length);

                reqStream.Close();

                try

                {

                    WebResponse myWebResponse1 = myWebRequest1.GetResponse();

 

 

                    //Finding the value of the X-SAP-LogonToken

                    rwsLogonToken = myWebResponse1.Headers["X-SAP-LogonToken"].ToString();

 

 

                    //Making GET request to /infostore to retrieve the contents of top level of BI Platform repository.

                    HttpWebRequest myWebRequest2 = (HttpWebRequest)WebRequest.Create(InfoStoreURI);

                    myWebRequest2.Accept = "application/pdf";

                    myWebRequest2.Headers.Add("X-SAP-LogonToken", rwsLogonToken);

                    myWebRequest2.Method = "GET";

                    WebResponse myWebResponse2 = myWebRequest2.GetResponse();

                    ///WebResponse myWebResponse2 = myWebRequest2.GetResponse();

                    // FileStream stream = new FileStream(Request.PhysicalApplicationPath + "output.pdf", FileMode.Create);

                    FileStream writeStream = new FileStream(@"D:\" + "output1.pdf", FileMode.Create, FileAccess.Write);

                    // myWebResponse2.GetResponseStream().CopyTo(stream);

                    //stream.Close();

 

 

                    string result;

                    if (ReadWriteStream(myWebResponse2.GetResponseStream(), writeStream))

                    {

                        //Code to insert data in to database goes here

                        // bool rptArchived = rptSubscrition.AddArchivedReport(userName, reportID, reportName, archivedDate, reportDescription, archivedReportPath);

                        result = "Report has been archived.";

                    }

                    else

                    {

                        result = "Unable to archive the report. Please contact administrator.";

                    }

                }

                catch (WebException ex)

                {

                    //error while accessing the network through a pluggable protocol

                  // Response.Write("<b>" + ex.Message + "</b>");

                }

                catch (Exception ex)

                {

                    //generic error

                  // Response.Write("<b>" + ex.Message + "</b>");

                }

 

 

            }

            catch (WebException ex)

            {

                //error while accessing the network through a pluggable protocol

              // Response.Write("<b>" + ex.Message + "</b>");

            }

            catch (Exception ex)

            {

                //generic error

              // Response.Write("<b>" + ex.Message + "</b>");

            }

 

 

        }

  

        private static bool ReadWriteStream(Stream readStream, Stream writeStream)

        {

            int Length = 256;

            Byte[] buffer = new Byte[Length];

            try

            {

                int bytesRead = readStream.Read(buffer, 0, Length);

                // write the required bytes

                while (bytesRead > 0)

                {

                    writeStream.Write(buffer, 0, bytesRead);

                    bytesRead = readStream.Read(buffer, 0, Length);

                }

                readStream.Close();

                writeStream.Close();

                return true;

            }

            catch (Exception)

            {

                return false;

            }

        }

we also made change in server by referring to the discussion link "http://scn.sap.com/docs/DOC-46367" made the fallowing changes in the BO server

  • Copy XercesImpl.jar from C:\Program Files (x86)\SAP BusinessObjects\tomcat\webapps\BOE\WEB-INF\eclipse\plugins\webpath.PlatformServices\web\WEB-INF\lib to C:\Program Files (x86)\SAP BusinessObjects\tomcat\webapps\AdminTools\WEB-INF\lib
  • We found that “XercesImpl.jar” is not present in  the path “C:\Program Files (x86)\SAP BusinessObjects\tomcat\webapps\AdminTools\WEB-INF\lib”

The report still downloading without data.

We are using BO 4.1  and service pack 5

Any help in this will appreciated

 

Thanks,

Sabir 


SecWinAD authentication using the REST SDK...

$
0
0

Hi,

Trying out the REST sdk (with 4.1) and have hit a problem from the start.  I guess i'm missing some config somewhere but here's the issue...

 

I create an enterprise user in the CMC in the everyone group...

 

Using POSTMAN in Chrome I hit the logon service with...

 

http://server:6405/biprws/logon/long

POST

Accept           application/json

Content-Type  application/json

  
{

     "userName": "testREST",

     "password": "testREST",

     "auth": "SecEnterprise"

}

 

if works and returns "logonToken"...

 

I then try as an Active Diretcory user (the one I used to create the test enterprise account who is a member of administrators..me.) CMC logon is fine using AD and the standard /BI logon is configured for SSO and also logs in fine.

 

so I go with...

 

{

     "userName": "JBRAKER"

     "password": "myADpassword"

     "auth": "SecWinAD"

}

 

It returns error "FWM 00006" with Active Diretcory Authentication failed to log you on.

 

I've tried using @domain and changing server url to FQDN but no joy.

 

Any ideas what i'm missing?  As mentioned the server is setup for AD SSO but i see nothing to configure for the REST services apart from the URL in the CMC.

 

Thanks!

Jeremy

How to move document to another folder using Rest API?

$
0
0

How to move document to another folder using Restful API?

BO XI 4.1 adsso logon without passing credentials

$
0
0

Is it possible to establish a connection without passing the userid/password to rest API calls assuming that AD SSO configured on BOE server?

 

Below is the sample code which we used to connect in the XI 3.1 NET SDK

 

sso.jpg

Calling a webi report chart into other applications

$
0
0

Hello,

 

  Is it possible to call a webi report chart (not the whole report) from a external application. I know we can call a webi report from other applications but our requirement is to call only specific report parts like line graph or charts from a webi report.  Is this possible using Java SDk or RESTful SDK? If so can you please let me know how to achieve this? Thanks!

RESTful Web Services SDK - Published Resources (June 2013)

$
0
0

Purpose

 

The RESTful Web Services SDK SCN Space launched on June 24, 2013. This Document, provides a simple look up of all resources available to developers at this time.

 

 

Overview

 

Searching the SCN for resources should always be the 1st step in getting help on any product. The following should be of help with the how to / when to / why to search:

 

How to use SCN search

My tips on searching knowledge content the SCN

 

Please note that content on SCN is freely available. Knowledge Base Articles (KBAs) for RESTful Web Services SDK are only available through the SAP Service Market Place (SMP) and an S user ID is required.

 

 

Listing of Available Resources (June 2013)

 

Pleae note that this document has been created to list available content at launch of the RESTful Web Services SDK SCN Space. The document will not be updated, nor is a new document planned as using the seach capabilities of the SCN should suffice.

 

Developer Help Files
Business Intelligence Platform RESTful Web Service Developer Guide SAP BusinessObjects Business Intelligence platform 4.1
SAP Web Intelligence RESTful web service SDK User Guide SAP BusinessObjects Business Intelligence platform 4.1
SAP Crystal Reports RESTful web services

 

 

Jive Documents
RESTful Web Services FAQ
Programming RESTful  SDK in Java with Eclipse – Getting Started
SAP BusinessObjects BI SDK

 

 

Blogs
SAP BusinessObjects SDKs: The Next Wave
SAP BI Platform RESTful Web Service SDK Demos
Using REST Web Services SDK to log into the BI Platform Server (JavaScript and C#)
Using Web Intelligence REST Web Services SDK to retrieve information about reports (JavaScript and C#)

 

 

Demos
C# Demo using Web Intelligence RESTful Web Service SDK
Meta Reports Demo using Web Intelligence RESTful Web Services SDK. Charts were generated by the CVOM Visualization Charting Engine
Delta Ski Alliance Google Maps Demo using Crystal Reports RESTful Web Service SDK

 

 

Knowledge Base Articles (KBA)
KBA 1782269 - What are the changes/addition in BI4.0 SP04 SDKs when compared to BI4.0 SP02 SDKs?
KBA: 1861302 - Unable to export WEBI document to PDF using Web Intelligence RESTful web service SDK
KBA: 1733865 - How to enable RESTful Web Services, Insight to Action Service & Multitenancy Manager with SAP BusinessObjects Business Intelligence (BI)
KBA: 1800697 - How to view a document using OpenDocument URL using BI Platform RESTful Web Service API with .NET?
KBA: 1839119 - Can we set Webi prompts and schedule the report using Web Services SDK's in BI 4.0?
KBA: 1795161 - What is RESTful web service ?
KBA: 1831027 - Where to find documentation about the RESTful Web Services SDK?
KBA: 1733307 - JavaScript Access-Control-Allow-Origin and RESTful Web Services
KBA: 1840862 - Adaptive Processing Server remains in starting after adding RESTful Web Services
KBA: 1861323 - Error 404 Not Found, using the SAP Crystal Reports RESTful web service SDK

 

 

 

Wikis
How to find the scheduling URLs for an object using BI Platform RESTful Web Services with .NET?
Exploring BI4 Platform RESTful Web Services with REST browser plugins
How to find the scheduling URLs for an object using RESTful Web Service APIs with RESTful Client
How to schedule an object using BI Platform RESTful Web Services with .NET?
How to schedule an object using RESTful Web Service APIs with RESTful Client?
How to view a document using OpenDocument URL using BI Platform RESTful Web Service API with .NET?
Learning the RESTful Web Services API
Log Off the BI Platform using BI Platform RESTful Web Service APIs with .NET
Log off the BI Platform using BI Platform RESTful Web Service APIs with RESTful Client
Retrieving a logon token in JavaScript using RESTful API
Retrieving Headers and the value of X-SAP-LogonToken attribute using BI Platform RESTful Web Service APIs with .NET
Retrieving Headers and the value of X-SAP-LogonToken attribute using BI Platform RESTful Web Service APIs with RESTful Client
Retrieving the contents of the top level of the Infostore using BI Platform RESTful Web Service APIs with .NET
Retrieving an Object by CUID from Infostore using BI Platform RESTful Web Service APIs with .NET
Retrieving an object by CUID from Infostore using BI Platform RESTful Web Service APIs with RESTful Client
Retrieving an object by ID from Infostore using BI Platform RESTful Web Service APIs with .NET
Retrieving an object by ID from Infostore using BI Platform RESTful Web Service APIs with RESTful Client
Retrieving the children of a parent resource using BI Platform RESTful Web Service APIs with .NET
Retrieving the children of a parent resource using BI Platform RESTful Web Service APIs with RESTful client
Retrieving the contents of the top level of the Infostore using BI Platform RESTful Web Service APIs with RESTful Client
Retrieving X-SAP-LogonToken or Logon Token using BI Platform RESTful Web Service APIs with BI Platform .NET SDK
jQuery and PHP RESTful API and Crystal Reports JS API Sample
Using Web Intelligence REST Web Services SDK JavaScript and C Sharp code examples

 

 

Related Content

 

Related Documents

Learn REST: A Tutorial

Viewing all 262 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>