From ABAP to Flex


After seeing my tweets(@RichHeilman) over the past several months, a few people have asked me about what I’ve been working on related to Flex.  Most of the readers here recognize me as an ABAP developer more than anything else, but for the last half of 2008, I took a break from ABAP and dove into the Flex world.  This was great for me, as I wanted to learn Flex anyway.   I was charged with the task of creating a suitable grid control for Xcelsius using the Xcelsius SDK and Flex 2.  Basically my team(SAP BPC Solution Management) wanted to create Xcelisus models and embed them into the SAP BPC(Business Planning and Consolidations) product, but the grid control which is delivered by Xcelisus is not quite what we wanted.  It is not very visually appealing.

I was the only one working on this piece of the project, so my first task was to actually learn Flex.  I would describe the learning experience as better than learning java and not as good as learning ABAP.  No surprises there, I guess.  I like Flex a lot, but found myself missing ABAP when it comes to simple things like internal tables.  I actually learned a lot by reading the book, Adobe Flex 3: Training from the Source.  If you are  looking into learning Flex, I would highly recommend this book.

So once I had a basic understanding of Flex ( MXML and ActionScript ), it  was time to start playing around with the Xcelsius SDK.  The SDK helps imagein making connections between the actual UI component, its property sheet, as well as enables cell binding to the excel spreadsheet in the Xcelsius designer.  You then create the components using Flex Builder. The Xcelisus Add-On Packager, which also comes with the SDK, allows you to package all these pieces into one component .xlx file.  This component .xlx is then added to Xcelsius using the Add-On Manager,  and as you can see in the image to the right,  you can then use them like any other component which Xcelsius supports.  The .xlx file is the only file that the end user requires to use the BPC Data Grid in an Xcelsius model.

After doing some prototyping, I started coding the actual development.  First, I had to create the actual grid UI component which will be the visible runtime component. Second, I had to create another flex component which would be the property sheet. which would allow the user to change attributes of the grid component at design time.  Here is where the Xcelsius SDK comes into play. Basically it consists of a handful of methods that you use to create the cell bindings in Xcelsius as well as connects the property sheet component to the actual UI component. It also contains documentation about how to use the SDK.  As you can see in the below image, this grid component looks a lot like the DataGrid component in Flex. The reason is that the BPC Data Grid extends from that component.  We plan on adding more features to the BPC Data Grid, but for right now, we just wanted to get the baseline grid working.  Some features that we get for free that the existing grid in Xcelsius does not support are things like, a true column header, sorting, re-arranging columns, and row selection. This grid is fairly simple and implements a lot of what the existing grid has, but at least it has a column header. On the right side is the property sheet which is the separate flex component.  It has four different tabs to work with, and allows you to set other properties of the grid as well. Mostly, the properties are the standard ones delivered with the Flex 2 DataGrid component.

image

Here is an example of an Xcelsius model which is using the BPC Data Grid as well as other standard UI elements which it also interacts with. For example, If a row of the grid is selected, the appropriates changes are made to the line chart below.

image

A How-To guide about how to consume BPC data using Xcelsius, as well as a demo video, have been published on SDN.  This How-To guide also contains the  BPC Data Grid component(.xlx file) which you can install into Xcelisus using the Add-On Manager.  This is NOT an official SAP development, hence the reason why it is released via SDN, and not the service market place.  Of course, this also means that it is not supported by SAP Global Support either, so don’t try it.

All-in-all, I think this project went pretty well, and I am happy with the results.  I learned a lot about Flex and also the fundamental concepts used in developing RIAs.  At some point, I will be adding new features to this component, and of course fixing bugs as well.  I also plan on doing a new release when/if Xcelsius starts supporting Flex 3.

Tags: , ,

34 responses to “From ABAP to Flex”

  1. Ed Herrmann says :

    Awesome, Rich…great stuff! What’s the rational behind not being an official SAP development or not being supported by SAP Global Support? Are they shying away because it’s a flex control? Are they going to start promoting 3rd party controls (via EcoHub?) like this for integration with NW and BPC?

  2. Rich Heilman says :

    Thank Eddie. The reason it was not an official development is because it did not make it into the scope of the initial BPC 7.0 release. There was simply too much to get in, and not enough resources. So after BPC 7.0 had entered rampup, I had some time to work on it, and since 7.5 is not due out for some time, and our customers/partners were begging for this, we decided to release it as a how-to on SDN. Since it did not go through the normal development process at SAP, it is not supported by global support either.

    Most of the integration in regards to BPC and other solutions within the EPM suite will be built into the standard products, but you will see some how-to guides for the same. As for EcoHub, it has not been a part of the discussion as of yet.

    The idea is, at some point this BPC Data Grid will be shipped with the standard product, but when that happens remains to be seen.

    Thanks

    Rich

  3. Chuck says :

    Rich-

    Is there any chance – you can share the source? I am ona mission to develop a flexible Scorecard XLX that would work like the Flex3 Advanced DataGrid with tree nodes, and KPI indicators.

    If not I understand. Perhaps you would know if/when the SDK will support Flex 3?

    Thanks for the inspiration.

    -Chuck

  4. Jay Philips says :

    Great info and details. I have been playing with Xcelsius for a couple of weeks now and am looking into the Flex option now.

    As Chuck noted, would you be willing to share your source for those of us still trying this stuff out?

    Thanks,
    Jay

  5. Michael Bruhn says :

    Great stuff reading this – really interesting. Currently I am working on one of the Rampups for BPC you have in Europe – and one of the big issues right now is integration of reporting and planning figures out of BI and reading your post – using xcelsius seems to be capable of this – a couple of questions though(might be off topic):
    – How stable is an xcelsius solution to changes in BPC datamodel e.g. adding a new characteristic ?
    – How are the 7.5 plans on how to integrate planning and actual values ?

    /MiB

  6. Rich Heilman says :

    Hi Michael. I would say that any changes to the datamodel would then have to be updated in the Xcelisus model as well, as the number of column might change, you would have to account for this in the Xcelsius model as well. Because of the way Xcelsius works, you have to bind the importing data to columns/rows of the excel sheet inside Xcelisus, which means you will have fixed columns, if you add a new column of data in the BI backend, then you would need to re-do your xcelsius model to add the new column. As for 7.5, I really can’t comment on that now. Sorry.

    @Chuck, @Jay. Sorry I can not release the source of this component at this time. Even though it is not an official SAP development, we still want to keep the source internal for now. It isn’t top secret rocket science or anything(it really very basic), we just want to control the versioning of it for a while. Again sorry.

    Regards,.
    Rich Heilman

  7. Adam West says :

    perhaps you could point me in the right direction. Where to get started with Xcelsius. My background is more of a Crystal Reports developer and work has me doing Xcelsius now.

    MTIA,
    Adam

  8. Tanner Spaulding says :

    Awesome! I was wondering who created the How To Guide I saw pop up on this. 🙂 I have some ideas for Xcelsius components that might be interesting, however flex skills are ZERO. I did order the book you suggested, so thanks for mentioning that. Perhaps can collaborate on some ideas once I get a bit more up to speed on Flex.

    Thanks for posting this. Tanner

  9. Tanner Spaulding says :

    Hi Adam,

    This should be more than enough to get yer feet wet. 🙂

    1) I would suggest starting with a download of a trial of Xcelsius – which can be found at sap.com/xcelsius.
    2) For general product documentation and user guides, go to help.sap.com > Business Objects tab, and then filter on the relevant product (Xcelsius) to find guides. (or use shortcut http://tinyurl.com/bobjhelp)
    3) For community generated content, sample dashboards, blogs, forums, etc – SDN is an excellent source. (sdn.sap.com) A shortcut to Xcelsius on SDN – https://www.sdn.sap.com/irj/boc/xcelsius.
    4) Ryan Goodman’s blog – A great resource for Xcelsius info, and interesting things you can do with Xcelsius. http://ryangoodman.net/blog/

    Thanks, Tanner
    if you do have follow up questions, feel free to email me..
    tanner.spaulding@sap.com

  10. Durairaj Athavan Raja says :

    One of the basic issues why we couldnt use xcelsius is that it expects the no. of columns and rows of the data known at design time. We are using flex controls extensively for SAP BI data where different queries would be returning different no. of columns/rows of data. We ended up developing our own custom controls, which can be directly invoked from template or BSP pages.

    Rich, does your component can handle dynamic no. of row/columns.

    Regards
    Raja

  11. Rich Heilman says :

    Hi Raja. Actually this is one issue that we found as well, and wanted to try to enhance with this component. Basically because of the way Xcelisus works(binding to excelsheet), there was little I could do about the number of columns, but of course the number of rows was a different story. Basically you still have to map the rows to the excel sheet, but you can mappy a larger number, and have the component simply ignore any empty rows. This new feature is being released with v1.1 which has yet to be uploaded to SDN.

    Cheers,
    Rich Heilman

  12. Durairaj Athavan Raja says :

    Thanks Rich for the quick response. Looking forward to your new version.

    Regards
    Raja

  13. Chuck says :

    Rich-

    I am 95% thru my own TreeGrid with node level filtered rows, multirow-select, swappable dimensions and various KPI icons…..one thing you may want to add – “pre-selected” row. Otherwise the XC opens up and the downstream components do not have data.

    Thanks for the inspiration.

    Chuck

  14. Chuck says :

    Rich-

    Quick question my friend (esp if you reply :-)…..do you have any idea why if I have a component that extends DataGrid and as a custom popUp headerRender – works FINE alone….but when I package as XLX component – the popUp’s background is transparent??? (the popup extends canvas and has list/button etc.)

    Any insight would be great I just converted the MXML to AS after reading the SDK release regarding MXML. No Luck!

    It is killing me.

    Thanks in Advance, Chuck

  15. Rich Heilman says :

    Hi Raja, the new version of the xlx file for BPCDataGrid has been released on SDN. Simply follow the “How-To guide” link above.

    Cheers,
    Rich Heilman

  16. Durairaj Athavan Raja says :

    Thanks Rich. Will check it out and post the feedback

    Raja

  17. Andrea says :

    Hi Rich
    Congratulations for your job (excellent also as inspiration). I have some problems not with the component but with web Service (I don’t know if you have developed it). On the same server only with one application it works fine… With other applications (also finance on apshell) the xml is generated but all values are zero. I don’t have security problems or limitations. Do you have some ideas to solve this problem? Is it possible to have the source of web Service (I think it generates a mdx query from querystring and web cv table) or otherwise some tips to recognize in asp.net pages the user logged in sap bpc like in older release of outlooksoft? Thanks a lot for your reply
    Andrea

  18. Ike says :

    Hi Rich ,
    This Add-on is really very good and should be included as a SAP solution with support.
    I have just one question and would like to know you can help me, In the “formatting” property we can not set to have no decimal places or reduce to one, even i format excel spreadsheet the problem persist. Can you help us creating an option to use the value fields with decimal places definition ? (It is useful when working with quantities)
    Best Regards,
    Ike.

  19. Rich Heilman says :

    Hi Ike. Yes, there are plans to work this component into another bundle and officially release it(as well as support), but the timeline has yet to be developed. As for your question, I just tested it, and if you have a value without decimals in a column, and you set the formatting as “none”, then that value will show without decimals in the output. There is not way to format with any other number of decimal places. In the formatting, we only support USD and EUR currency formatting, which includes 2 decimal places. I would assume other formats will be available if/when this component is fully supported.

    Cheers,
    Rich Heilman

  20. Ike says :

    Hi Rich,
    Yes, we just changed to none and the decimal places were removed, but now the thousands separator is missing.. We would like to have the quantity as it is displayed in excel spreadsheet. If i have 2.550 in excel should be 2.550 in the xcelsius preview. Can you create this correction to turn feasible our implementation ? May be a 999.999 format for quantities. (Or another workaround ?)

    Regards,
    Ike.

  21. Rich Heilman says :

    Hi Ike. I have added your request to our internal document and will address this in the next release of the component. When ever that may be. I don’t really have the time to put into this change at this time.

    Cheers,
    Rich Heilman

  22. Mehmetalierbil says :

    Hi Rich,
    great work. I have implemented the howto from SDN.
    But what i want to know is. The table grid has the setting to enable entries in the table. Can i update the data in BPC by changing values in the data grid???? I mean within the XCelsius generated SWF? This would be great.
    Regards,
    Mehmetalierbil

  23. Steven Bets says :

    Hi Rich,
    i am also interested in the possibility to change BPC values via data grid. Is this possible by now?
    Best Regards,
    Steven

  24. Rich Heilman says :

    Hey guys. The web service that we use in the data connection will support write back functions in BPC 7.5. Initial prototypes are being tested now.

    Cheers,
    Rich

  25. venky says :

    Hi Rich,

    It’s an excellent article. I have requirement to display BPC data in an xCelsius dash board and your article helped me a lot. Thanks very much.

    A question..
    In the How to.. zip file there is a spreadsheet named “SampleData.xls”. In this spreadsheet I did not understand what does the data in blue colored cells (B9:G22) do ??

    When ever I Preview the dashboard, I’m expecting the dashboard to fetch data from the BPC application set or application. But it appears as if the “BPC Data Grid” is ONLY fetching it from the spreadsheet (cells: B27:H33)

    I didn’t realize the need in setting up the ‘XML Data’ connectivity in the xCelsius where it uses a URL from the cell: C1
    Could you please explain this to me ??

    Thanks & Regards,
    Venky

  26. venky says :

    Dear,

    I followed all the right steps according to the “how to” guide to display data in Xcelsius data grid from BPC.

    I am unable to see the data, The ‘BPC Data Grid’ only comes up with data as ZEROs in all cells.

    I’m sure the xCelsius is connecting to the BPC but it is unable to display the data.

    Please please help.

  27. Leo says :

    Hello All,

    Though this is a post on BPC and Xcelcius, I wanted to find out if anyone had to build a Custom Web Service to get SAP BW data into Xcelcius? Any information would be helpful.

  28. Rich Heilman says :

    Hi Leo. There is a new BW connector which comes as part of the product in the lastest support package for Xcelsius.

    Regards,
    Rich Heilman

  29. Anoop says :

    Rich,

    I am trying to use the flex data grid component and extend it as an addon component for Xcelsius to leverage in a Xcelsius dashboard. I am new to development with Flex, MXML and Action Script, but I was able to generate property sheets for the visual model (data grid) and the property sheet for the data grid. But, I am running into issues when I generate the add on (I get a blank addon when added to Xcelsius.)

    Any help you could extend would be extremely helpful as you have already successfully built essentially what I am trying to construct (the only difference being I am not using the BPC connection option on mine).

    Thanks,
    Anoop

  30. Anoop says :

    Rich,

    I am trying to build an addon component for Xcelsius using the standard flex datagrid component.

    Since you have already built a datagrid addon and successfully deployed it as an addon for xcelsius, would you be able to guide me on how i can get this accomplished.

    Thanks for all your help
    Anoop.

  31. vamshi says :

    Hi,

    Is BPC Data Grid available on SDN is free to use without any license?

  32. Rich Heilman says :

    Yes, the BPC DataGrid is attached to the how to guide mentioned above, and it free to use.

    Cheers,
    Rich Heilman

  33. Vidya says :

    Hi Rich,

    BPC DataGrid is too good! But the grid doesn’t work if there’s more than one row header or one column header in the analyzer report. How do I make it work then? My analyzer report has two row headers.
    Also, I connect to the dashboard with EPM connector.

    Thank you!

    Vidya

  34. Shailendar says :

    Hi Rich,

    BPC Datagrid is not supported in DD 4.04 due to Flex 4 technology.. do you have plans to update BPC data grid??

    Thanks,
    Shailendar.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: