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

Change DataProvider source via WebiServices.document in Webi UI Extensions ?

$
0
0

Hi,

 

I'd like to be able to build something into WebI via Web Intelligence UI Extension Points, that can change a dataprovider for a report from one Universe to another Universe (unv to unx in this case)

 

I know it's possible via RESTful Web Services, but I'd like to do it from within an Extension.

 

The documentation for 4.1 shows a WebIntelligence Service JavaScript method WebiServices.document.updateDataProvider but it doesn't seem to take an argument for a new UniverseId.

 

Is there another way to do this via the JavaScript API ?  If not is this something that might be added to the WebIntelligence Service JavaScript API in 4.2 ?

 

If the answer to both of these is no, is there a way of accessing the RESTful Web Services calls from within the WebIntelligence Service JavaScript API without having to make another call to create a session etc ?

 

Thanks,

Hayden


Formatted SQL

$
0
0

So I found dataproviders/x/queryplan to get a WebI document's SQL.  But the SQL is all on one line.  If my report's SQL is:

 

select     blah,     foo,     bar
from     table

then the /queryplan result will look like:

 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><queryplan editable="true" custom="false">    <statement index="1">select blah, foo, bar from table</statement></queryplan>

How do I get the query's SQL in its original form?

/queryplan returns HTTP 204

$
0
0

I was able to successfully get the SQL from one report.  Upon trying it on the second report:

 

GET /biprws/raylight/v1/documents/316875/dataproviders/DP0/queryplan

 

I get:

 

HTTP/1.1 204 No Content

Date: Fri, 26 Feb 2016 21:42:45 GMT

Server: Apache-Coyote/1.1

Content-Type: text/xml

Content-Length: 0

Keep-Alive: timeout=5, max=88

Connection: Keep-Alive

 

I was able to open the report in WebI and view the SQL, so there is nothing wrong with the report.

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

Poor performance refreshing LiveOffice document

$
0
0

Hi,

 

We are using Live Office 4.1 SP6 Patch 5, and we've noted that refreshing Live Office objects associated to WebI, the performance was so bad, compared to when we were still not using RESTFul web service (prior to patch).  Any suggestion on improving the LiveOffice refresh performance when using RESTFul web service?

 

Thanks

Aloy

List of documents by folder name

$
0
0

Hello Friends,

 

I use the following method call to get the list of all the documents 50 at a time.

 

request.send(BIP_RWS + "/raylight/v1/documents?offset="+offsetindex+"&limit=50", "GET", null);

 

Is it possible to extract the list of documents from a specific public folder by using the folder name?

 

Regards,

-Chris

HTTPS for RESTful web service ?

$
0
0

Hello,

 

How to configure HTTPS/TLS for "RESTful web service" and "Web Service" application ?

 

I didn't find any clear explaination...

 

Default URL are:

Properties: RESTful Web Service

URL: http://server_name:6405/biprws

Properties: Web Service

URL :http://server_name:6405/dswsbobje

 

I configured WACS HTTPS connector following this note:

http://service.sap.com/sap/support/notes/1618311

I use port 443 for Tomcat and port 8443 for WACS

 

Then I changed web services properties:

Properties: RESTful Web Service

URL: https://server_name:8443/biprws

 

Properties: Web Service

URL :https://server_name:8443/dswsbobje

 

These 2 URL are well answering from the client.

 

When I try to connect in "Live Office", I get "LO 02049" error.

 

Has anybody a working example of HTTPS configuration for these web services ?

What must be used for field "Bind to Hostname or IP Address" in HTTPS section of WACS properties ? Local FDQN ? Public FDQN ?

Or "hostname" is mandatory ?

 

In certificate, what must be "CN" equal to ? Local FDQN ? Public FDQN ? Hostname ?

 

Regards,

 

Stéphane.

Restful api Not Refreshing Multiple values in InList Prompts

$
0
0

I am using Restful web service to refresh the document which as filter values with InList and EqualTo prompts. When saving the refreshed report into any format say PDF using Restful api the report data is incorrect. I am using the below XML as a request body.

 

<parameters>

    <parameter>

        <id>0</id>  

        <answer>      

            <values>

                <value>0</value>

                <value>2</value>

                <value>761</value>

                <value>858</value>

                <value>863</value>

                <value>867</value>

                <value>868</value>

                <value>869</value>

                <value>870</value>

                <value>871</value>

                <value>872</value>

                <value>873</value>

                <value>893</value>

            </values>

        </info>

    </answer>

</parameter>

<parameter>

    <id>1</id>

    <answer>

        <values>

            <value>BURDN</value>

        </values>

    </answer>

</parameter>

</parameters>

 

If I provide single value in InList and EqualTo Prompt then the report produces the correct data. But this is not the case when passing multiple InList values and EqualTo prompts.

 

Can any body please suggest me the possible solutions.


Web page hosting using SAPUI5

$
0
0

Hi Experts,

 

Could you please let me know how a web page (index.html) which is developed in NWDS using SAP UI5 will be hosted in a web server?

 

I have found blogs of how to develop web page using java or asp.net and host it in the server but not on this.

 

Please let me know if there is any suitable link for this or the steps.

 

Also please let me know what all things that I need to host in the server to run the web page properly.

 

Regards,

Soumya

Retrieving query results

$
0
0

In REBean, we could use DataProvider.getResult() to get a RecordSet object that enabled easy navigation of the query result set.  In REST, it appears the only way to do this is to retrieve the entire result as CSV or XML, then manually parse it.

 

Is there an easier way to do this?

How to update the Query of an existing WEBI document's dataprovider, through the RESTful Web service SDK.

$
0
0

Hi,

 

I am trying to update the Query of an existing WEBI document's dataprovider, through the RESTful Web service SDK.

 

For this, first i will get the Dataprovider information,

 

Example:

 

URI: http://localhost:6405/biprws/raylight/v1/documents/11111/dataproviders/DP0

 

Expected result;

 

<dataprovider>

     <id>DP0</id>

     <name>Query 1</name>

     <dataSourceId>1234</dataSourceId>

     <updated>2014-04-18T11:55:21.000-08:00</updated>

     <duration>1</duration>

     <isPartial>false</isPartial>

     <rowCount>113</rowCount>

     <flowCount>11</flowCount>

     <dictionary>

          <expression qualification="Dimension" dataType="String">

               <id>DP0.DO1</id>

                <name>EmpID</name>

               <description>Employee ID.</description>

                <dataSourceObjectId>DS0.DO1</dataSourceObjectId>

          </expression>

          <expression qualification="Dimension" dataType="String">

               <id>DP0.DO2</id>

               <name>EmpName</name>

               <description>Employee Name.</description>

               <dataSourceObjectId>DS0.DO2</dataSourceObjectId>

          </expression>

     </dictionary>

     <query>SELECT Employee.EmpID, Employee.EmpName FROM Employee</query>

</dataprovider>

 

Then Changing the above dataprovider's Query to some thing like below,

 

<query>SELECT Employee.EmpID, Employee.EmpName FROM Employee where Upper(Employee.EmpName)='RAJ'</query>

 

Please let me know the RESTful Call required to do this.

 

 

Thanks in advance.

 

 

Thanks,

Mahendra.

Poor performance refreshing LiveOffice document

$
0
0

Hi,

 

We are using Live Office 4.1 SP6 Patch 5, and we've noted that refreshing Live Office objects associated to WebI, the performance was so bad, compared to when we were still not using RESTFul web service (prior to patch).  Any suggestion on improving the LiveOffice refresh performance when using RESTFul web service?

 

Thanks

Aloy

RESTful Raylight Error Incorrect session

$
0
0

Hello,

 

I'm starting my journey with RSDK and I have small issue here.

 

Based on SAP Web Intelligence RESTful web service SDK User Guide document I was able to retrieve my logon token, I can get info from infostore and document properties (with GET http://servername:6405/biprws/infostore, and so one). But then I tried to retrieve more details (GET http://servername:6405/biprws/raylight/v1/documents) I'm still getting:

 

401 Unauthorized

 

<error>

    <error_code>2</error_code>

    <message>Incorrect session found in HTTP header X-SAP-LogonToken (too many values)</message>

</error>

 

could you please help?

 

Many 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>

Purging doesn't work always

$
0
0

Hi,

 

I am having a strange behavior where purging do not work correctly every time.

 

(1) PUT = http://<Servername>:6405/biprws/raylight/v1/documents/33280/dataproviders/DP0?purge=true

 

The above URL doesn't work, so i tried like below and it worked.

 

(2) PUT = http://<Servername>:6405/biprws/raylight/v1/documents/33280?purge=true

 

When i tried the same above URL (2) for another report it did not work. To make it work i have to first execute URL (1) and then URL (2).

 

Not clear what i should do? Do i have to execute both the URLs?

 

Appreciate your help.

 

Thanks,

Arun


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.

Creating report using template using Restful

$
0
0

Hi,

 

Is there a way of creating report by referring to existing report template by using Restful API?

Not able to create report using restful SDK - BO XI 4.1

$
0
0

I am trying to create report using restful SDK and I getting this error "The remote server returned an error : (405) Method Not Allowed.

 

2016-03-22_110406.jpg

OpenDocument not working in Chrome (language settings problem)

$
0
0

This is a strange one.

I'm a Brit, living in Switzerland, so my Windows 7 regional settings is set as English, but my keyboard is Swiss German.

 

When I attempt to use OpenDocument from my RESTful web site, it works fine in IE11, but barely opens properly in Chrome  (see attached image).

 

Opening the Developer Options in Chrome, and looking at the Network tab, I can see that it's looking for files which don't exist, like this one:

http://MyServer:6405/BOE/OpenDocument/160312/AnalyticalReporting/webiDHTML/dhtmllib/language/de/labels.js


Whereas in IE, it looks for this file, which does exist:

http://MyServer:6405/BOE/OpenDocument/160312/AnalyticalReporting/webiDHTML/dhtmllib/language/en/labels.js

 

Also in Chrome, it attempts to find "dialogservice_strings_de.js", which also doesn't exist on our server, and a load of JavaScript errors appear (as shown in the attached image).

 

Can someone tell me how to tell the OpenDocument / BO Server to just use the English language ?


I've scanned through the documentation... but nothing. 

I can't see any mention of how to set the language.


Can anyone help, please ?





Viewing all 262 articles
Browse latest View live


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