Mar 29, 2013

Store locations from SAP BW to Google Maps

via Content in SCN

There are times when we do something for one pure and simple reason: "Because We Can". So when Wally wanted to see all the customer stores in the country in Google maps, I said why not!

We can maintain a master data with the coordinates (latitude, longitude) in SAP BW and write a code which will read these coordinate from the master-data table and generate a geoRSS or a KML or a KMZ file.

There is a growing trend among internet users to use these file formats to exchange publish and consume geographical data, and moreover google maps consume them readily. These formats are more or less like a normal xml file with a few extra tags, that's all…

The only question in my mind was whether I could generate the KML file or not; but there is no reason why we can't considering that we can quite easily generate a XML.

So once we generate the KML through ABAP we can place it in share-point or some webhosting site and consume it directly though google maps.

It's cool for the customers to view their stores/plants in the map, and to know that they are indeed having a footprint in the information superhighway. 

In fact we can we can write a small app that will handle this in a more sophisticated manner in an Iphone.

Mar 21, 2013

How to use OpenDocument with BEx variables


While the official OpenDocument guide is a great resource and explains in detail how to use OpenDocument syntax, We have not seen a good documentation explaining how to use OpenDocument in conjunction with SAP BW BEx variables, and yes, there are syntax differences depending on the different BEx variable types. 

What is the OpenDocument interface?
The OpenDocument interface allows you to open reports that are saved in the BI LaunchPad by using URL hyperlinks. You can take advantage of the OpenDocument syntax and parameterize the report to be opened.

How to pass values to BEx variables in general?
As everything in SAP BW, there is always a Text and a Key for every record in your report. The text is clearly not unique though, it depends for example on the language of the user that is currently viewing the report. On the other side most of the users are not very comfortable seeing and working only with technical keys, you should always pass both: Key and Text.

How do I construct an OpenDocument URL in general? 
While you can construct your own URL manually by carefully reading the manual, there is much fancier way: Use the hyperlink wizard! The hyperlink wizard is available only in Web Intelligence Web Mode (DHTML), it is not available in RIA mode (Java) nor in the Rich Client. You can open the hyperlink wizard by right-clicking on a field > Linking > Add Document Link:


After you select a target document in the hyperlink wizard, you will be presented with all the prompts of the target report. In this example I have a prompt (from a BEx variable) on a dimension object named "Material", an example of a material is a material named "Ten" with key "010". The following would be a correct way of passing a single material by using the dimension objects in a table:

In the first box you should provide a Text (Dimension Object), and in the second its corresponding key. In the screenshot above "Z_SINGLE_OPT_TEXT" corresponds to the description of the BEx variable, on the other side, the generated hyperlink will use the technical name of the variable.

How do I pass Single Values?
If you use the hyperlink wizard to pass a single value variable, you will notice that the wizard will use two parameters lsS for the Text and lsI for the key. If for example you click on a material "Ten" with key "010" using a variable "Z_SINGLE_OPT" (technical name):

You will get a syntax like this: 
"…lsSZ_SINGLE_OPT=Ten&lsIZ_SINGLE_OPT=010"

Notice that code is hard coded with the values for a better understanding, but of course you can use dimensions here.

How do I pass Multiple Single Values?
By separating individual values with a semicolon (;), you can pass multiple single values at a time. For example:
The corresponding syntax equates to: 
"…&lsMZ_MSV_OPT=Ten;Fourty&lsIZ_MSV_OPT=010;040"

Notice that lsM is used to pass multiple single values.

How do I pass Ranges?
When passing ranges you must separate the minimum and maximum value with two consecutive dots (..). The start and end of the range must have square brackets that you have to create manually:


Generated syntax: 
"…lsRZ_RANGE_OPT=[Ten..Thirty]&lsIZ_RANGE_OPT=[010..030]"

Notice that lsR will be used to pass ranges.

How do I pass nodes of a Hierarchy?
Passing a hierarchy node with standard text and key objects works fine most of the times, however I use following syntax (according to note 1677950) to avoid potential issues: [Hierarchy].key


In this case you will notice that a "0HIER_NODE/" will be inserted to all non-leaves in the hierarchy.

Generated syntax:
„…&lsSZ_HIER_OPT=Even&lsIZ_HIER_OPT=0HIER_NODE/EVEN"

How do I pass compounded objects?
In this case you need to make sure that the key that you are passing is not compounded (more Information in this blog post). You can achieve this by using formulas in the front-end e.g. "=right()" or by selecting the non-compounded key available since BI4 SP05:


Hope you enjoyed this introduction into using OpenDocument with BEx variables

Original Article of : Victor Gabriel Saiz Castillo