Skip to Content

I work for SAP Business Objects in Technical Customer Assurance.  My speciality is the Software Development Kits (SDKs) that’s provided with our Business Intelligence products – BusinessObjects Enterprise, Web Intelligence, Desktop Intelligence, Crystal Reports and Crystal Xcelsius. 

In my blog, I discuss subjects that I personally find interesting – little known or not-well-documented corners of the SDK, new functionality or new SDKs, or interesting issues that I’ve come across in a SAP Incident or SAP Developer Network forums. 

You’re more than welcome to suggest any topic (SAP Business Objects SDK related, of course…) that you’d like me to discuss – I have a dozen or so items on my blog to-do list, but I’m always on the hunt for anything interesting with our SDKs.   

You might have come across Rob Horne, either through his SCN Business Objects Community contributions – blog[1] and articles – or at one of several SAP Business Objects Developer Conferences.   He’s a real good guy and still very active in the BOC Developer community. 

Rob was one of my technical mentors when I started at Business Objects (now SAP Business Objects), and I’ve always enjoyed talking tech with him.  On the phone a couple weeks back, he wondered if it was possible to integrate Google Maps into the Web Intelligence Rich Client.

Google Maps integration is something that users just expect now – they want to click on something, and have its map location displayed.  

Being always in the hunt for interesting stuff to do with our SDKs, I spent a couple of days during my training period looking around to see what’s available for Maps integration.   

As it turned out, it didn’t take much effort to build up a very simple Proof-Of-Concept. Here’s a screenshot:

 

image

 

When I click on a City cell, the Google Maps to the right updates to centre (ah, a Canadian!) on the City selected.

Let me describe what I did.

Dramatis Personæ

The heavy lifting is done by the stuff I used – all that I did was write a page of code to tie stuff together.  So let me introduce the characters in this play:

  • Web Intelligence Rich Client – a desktop solution for ad-hoc reporting, that frees Web Intelligence documents from the Web.
  • Web Intelligence Extension Points – a Java-based API for the Web Intelligence Rich Client or Java Reporting Panel, allowing extension of the user interface.
  • JDICplus – an incubator project of JDesktop Integration Components (JDIC[2]) that integrates Microsoft Internet Explorer into Java.

The Web Intelligence Rich Client (WRC) is a new feature with BusinessObjects Enterprise XI 3.x.  It’s a desktop application that allow you to view, modify and create Web Intelligence documents.  With the WRC, you no longer need web connectivity to do ad-hoc reporting with WebI – install it on your laptop, and now you can take your reports with you anywhere you go.

I’ve been playing with the Web Intelligence Extension Points (WebIExtPts) on and off for the past few months, and am pretty impressed with how it allows you to integrate your own components into the WRC.  It may not have full document creation/modification functionality, but does give you plenty of hooks to embed your own Java stuff into the UI and have them triggered via user events on the document viewer.  The WebIExtPts SDK is included with the WRC – there’s no additional download required[3].

JDIC is an Open Source project bringing desktop integration to Java (WRC uses JDIC for Microsoft Outlook integration).  JDICplus offers several ready-made Java components using Microsoft Internet Explorer.  One of the featured components is a class that integrates the three most popular Internet Maps APIs – Google Maps, Yahoo! Maps or Microsoft Virtual Earth.

Web Intelligence Extension Points Code

Here’s the Java code I wrote:

Java Code to Integrate JDICplus BrMaps class to WebI Rich Client

This creates a Java Report Panel plugin that opens JDICplug BrMap in the WRC right panel, then registers a Report Selection Listener to listen for Selection Events.  If a Web Intelligence cell is selected, it checks the cell text to see if it’s displaying a [City] value, and if so, pass the value of the cell to a JavaScript to pass it to Google Maps.

If you want to alter the selection rule, modify the code just after the “if(reportElementSelection.getSelectionCount() > 0) {” line.

Assuming the WRC is installed at the default folder, create the folder path and file:

c:Program FilesBusiness ObjectsBusinessObjects Enterprise 12.0classesWRC_Embed_Google_Mapscomsapwebi
ichclientsampleWRCReportingPanelMap.java

and copy-and-paste the code into the Java source file.

Download the JDICplus library from https://jdic.dev.java.net/documentation/incubator/JDICplus/index.html and copy the contents of the lib folder into the folder path:

c:Program FilesBusiness ObjectsBusinessObjects Enterprise 12.0classesJDICplus

Inside the JDICplus folder, you should see the files JDICplus.jar, binjdicArc.dll and binjdicWeb.dll.

Compile the Java code by opening the Command Prompt, cd’ing to the WRC_Embed_Google_Maps folder, and running the command:

javac.exe -classpath ..cdz_ext.jar;..RCThinCadenza.jar;..JDICplusJDICplus.jar comsapwebi
ichclientsampleWRCReportingPanelMap.java

Make sure you have the Java SDK javac.exe command in your Path environment variable to execute the above.

Now create a webi_plugin.properties file:

c:Program FilesBusiness ObjectsBusinessObjects Enterprise 12.0classeswebi_plugin.properties

that contains the following text:

webi_plugin.properties files

This file ensures that the WRC can find the JDICplus library and our compiled WebIExtPts code, and registers our class to be used when the WRC reporting panel is started.

Start up the WRC, and try creating a document that displays a [City] value.  You can use the “Island Resorts Marketing” sample Universe, and the Customer.City object within it.

Click on the City, and you should see Google Maps refresh to show you the city map!

Conclusion

This is a very bare-bones POC – but certainly shows how you can use the Web Intelligence Extension Points to extend the functionality of Web Intelligence. 

There’s plenty of other freely available Java integration components out there – if you find any interesting ones to embed in the Rich Client, do post below.  I’m very interested in seeing what people can come up with.

Have fun!

References

[1] Rob’s Blog: /people/robert.horne/blog

[2] JDIC site: http://jdic.dev.java.net

[3] The Web Intelligence Extension Points is a recent ‘Graduate’ of SAP Business Objects labs (http://labs.businessobjects.com) – the API documentation will soon move to SCN, but can currently still be found on the labs site.  Note that, officially, the Web Intelligence Extension Points is supported for use by SAP Business Objects OEM/Partner customers only. If you’re not a Partner, you’re more than welcome to use it but questions should be directed to the BusinessObjects SDK forums (/community [original link is broken]) rather than Customer Support.

To report this post you need to login first.

8 Comments

You must be Logged on to comment or reply to a post.

    1. Ted Ueda Post author
      There’s so many components out there now for integration (beyond all the Eclipse plugins, that is). 

      There’s certainly more choices out there for ready-made components now, that the first thing I do is Google…

      Sincerely,

      Ted

      (0) 
    1. I have also had the same problem.

      The system used:
          BusinessObjects Enterprise XI R3.1 SP2 FP 2.3

      Running on Windows 2003 Server

      I tried removing the WRCReportingPanelMap.java file.

      I tried creating a file called WRCReportingPanelMap with no contents.

      I tried creating WRCReportingPanelMap with contents.

      I tried creating WRCReportingPanelMap.js

      The exception is not named so I could not find it’s details in the API.

      The posting here is not the only reference to this issue. There are no answers to this issue, however.

      I was very much looking forward to using this. If somebody can give me a clue to a solution it would be great!

      (0) 
      1. I always like to tie up loose ends in online threads. Here is how I solved the problem.

        I tried to remove the code and properties files. This didn’t remove the error. I built the java code again and redid the properties files.

        For no reason I could see this fixed the problem

        (0) 
  1. Former Member
    Hi,

    Currently, I have one requirement that user want to change query panel object Year,Quarter and month.

    I have one prompt which  having year,quarter and month as a value.
    when user selec year report show year object in Query Panel same as for month and quarter.

    Please help on same.

    can you please give me details about Web Intelligence Extension points sample code.

    (0) 

Leave a Reply