FOR BI PROS Tableau
Accessing SAP BusinessObjects from Tableau using Web Data Connector
October 1, 2015
9
, , , , , , , , , , , , , , ,

Regardless the sad facts I just can’t hate Business Objects. It belongs to my professional career: ugly but useful Web Intelligence reports, long running bursts for personalized mega excels – I still have nostalgic emotions. But what is bittersweet memory for me, is an everyday encounter for many of my customers. They still manage large SAP BusinessObjects portals in addition to their Tableau heaven. Up till now there were no good ways to integrate these platforms without any 3rd party tool but with Tableau 9.1 WDC this isn’t the case anymore. Let’s see how can we access BOBJ data from Tableau and how it works behind the scenes.

UPDATE: I released a new SAP Business Objects data connector that connects to BO Universes directly. It’s free and open source. You can get more information here.

How to use the connector? It’s as simple as with any other connector. Just paste the WebI or QaaWS/DaaWS proxy address URL to the WDC connection window with your BusinessObjects credentials and the data will be loaded immediately:

Loading SAP BusinessObjects to Tableau

Loading SAP BusinessObjects to Tableau

How to publish Reports and Queries with Tableau?

In SAP Business Objects there is an option to publish the reports as Web Services. This enables us to query the data behind and make it accessible in a more convenient format than soap.

First let’s se how to publish a Web Intelligence report as a web service. It is quite straightforward after one figures out that only the applet and the rich client are capable of doing it and where to right click. To get the Publish as a web service option you need to right click on the edge of the data in the report.

Publishing Webi Reports

Publishing Webi Reports

Copy the newly published web service URL and paste the WSDL URL to our WDC and you are ready to go.

How it works?

We’ve already showed some pretty cool Web Data Connectors for Tableau such as Github commits and MongoDB. With this BusinessObjects web connector things are a bit different. It has the usual SAP complexity. Fortunately there is an npm package (yes, we built that) that takes the burden of dealing with SAP BO Web Services off of our shoulders. We could use this package right from our WDC javascript but there are some problems with that approach.

  1. The package connects to another server for data and it can cause CORS to block the data from there.
  2. This package uses some other packages and their browserified, combined size can be huge.

To get rid of these issues we’ve added two endpoints to our web server that just do the proxying of the data:

In the WDC code we only need to set up only two callbacks, the rows and the columns of the Starschema WDC Base object:


We’ve also set up the state machine and the Jade template for getting WSDL url and credentials as user input. They can be found in the Starschema Tableau Web Table Connector repository.

If you need any help to set this up just leave a comment or open an issue on github.

Tamás Földi

Tamás Földi

Director of IT Development at Starschema
Decades of experience with data processing and state of the art programming. From nuclear bomb explosion simulation to distributed file systems. ethical hacking, real time stream processing practically I always had a great fun with those geeky ones and zeros.
Tamás Földi
  • David Smith

    Hello Tamas, thank you for the instructions. I am trying to perform the same but with SAP Business Objects 3.1 SP7. I’m finding it difficult to find the correct address to enter in the initial Tableau Web Data Connector URL. In your example you enter http://:/sapbo.html” – For XI3.1 i think this needs to be different, but i can’t seem to get it right. Are you able to help? Many Thanks in advance

  • Jake Tully

    Hello Tamas,

    Very impressive work, you truly are a pioneer in the field. I have a quick question. If I wanted to have the data to change easily on refresh, how can I call the “rows” method when I “Refresh Data Source” in Tableau? Currently, refreshing the Data Source just calls for the Table Definition, but if I want to refresh the underlying data, I need to call the sap.getTableData instead of sap.getFields. Could you tell me in which document I need to update that information? I’ve tried the proxy_server.coffee and the sap_bo_connector.coffee but haven’t had any luck so far.

    Thanks,

    Jake

    • I think if you just refresh the extract in your workbook it will update the data as well.

      I can update the docs or we can look quickly at it with some screen share stuff

      • Jake Tully

        Sweet, that definitely worked, at least once :P. Thanks for the quick reply. However, I just updated the WSDL again, tried the extract again and it’s not refreshing.

        Is there a best practice when refreshing the WEBI data before trying a refresh/extract in Tableau?

        Right now, I :

        1. Update the WEBI query.
        2. Refresh the report.
        3. Update the WSDL report block.
        4. Save the WEBI report.
        5. Refresh Extract in Tableau.

        Like it said, it worked once, but now it’s not returning the new data again.

        I’d be happy to set up a screen share if you’d like, I don’t mind this chat either though, so others can learn from my mistakes.

        Thanks,

        Jake

        • realdataboss

          If you change the WSDL then I guess you have to update the metadata (Edit data source, re-enter the URL for the WSDL)

        • Jake Tully

          I just got it to refresh correctly again. I feel like there is an amount of time I need to wait before a refresh can be done. Are you aware of any defaults, or timers that prevent constant refreshing? Perhaps that’s something that can be configured?

          • realdataboss

            Hmm. Sounds interesting. It should fail with the different WSDL unless you edit the datasource. You can reach me out at tfoldi a_t starschemaDOTnet and continue there

  • Pablo Arriagada P.

    Hi, this is a fantastic connector. Is there any way to use the getfromlatestdocumentinstance parameter in this query? We were used to work with instances and that parameter in the old Dashboards (Xcelsius) software. If not, how can I be assured of getting the freshest data? Instances were useful to us, because we can solve that problem in BusinessObjects, regardless the connector.

    Thanks,
    Pablo.

  • Jana

    Hi Tamas, Thanks for sharing the connector. When i installed and try to run i get Cert.key not installed. Can you help me finding the cert.key.

Related items

/ You may check this items as well

Tableau Consistency Checker

Tableau Filestore Consistency Checker – How Repository Maps to Filestore

Regardless the sad facts I just can’t hate B...

Read more
TCOT

Pushing the Limits of Tableau Server – Practical Lessons from a Zen Master

Regardless the sad facts I just can’t hate B...

Read more
Sales dashboard embedded into SAP GUI

Embed Tableau Dashboards in SAP ERP and S4/HANA

Regardless the sad facts I just can’t hate B...

Read more