Skip to Content

ABAP Development in SAP BW

Hi and welcome to my first Weblog. After 4 years in SAP development (cost center planning) and 5 years in BW consulting I like to see myself as a problem solver. My experience shows that the biggest problem in SAP BW implementation are these little (or big) features that the customers got accustomed to and that are totally against the ‘standard’ BW implementation guidelines. In the future I will present little solutions to little problems that seem to be much more difficult at the first glance.

But the first blog will be about a different topic. This is why I love to develop in SAP BW. I started my first BW project with lots of experience as a developer and no experience in BW except from the standard courses. I was certified and all my confidence came from my belief in /h. The first project was a CO project based on BW 2.0A – back in a time when the PSA was called ODS and the ODS was not existent, 50% of the error messages were marked as self explaining and the BW was more a toolbox than the consistent data warehouse it is today. And I was right. About three out of four error messages were solved by debugging to the error message, looking at the wrong values in the IF statement before and setting the correct switches. This was fine until there was my first ‘Mission impossible’.

We extracted most of the data out of a flat file, but a small part was coming via Excel sheet. And to prevent double upload we had to develop a feature that allows uploading a flat file twice or more and automatically build the delta. There was no ODS available and so I started reading the InfoCube in the update rules – directly by shuffling the database tables.

I still don’t know why it didn’t work properly 😉

Anyway I got hooked. In the next years I implemented every user exit available in BW (and SEM-BPS) and combined with the nice and consistent abilities of the BW (which can be used as a kind of super DDIC if you like) I think that the BW is the best platform available for programming business software. Here are the reasons why:

1. No need to focus on the output! – Write your data into an ODS or an InfoCube and you have a state-of-the-art output tool available. Output in Excel, output in the web, output on the PDA all straight out of the box.

2. No need to focus on the input! – Whether the data is in an SAP table, another database, a CSV or XML file, you can get it into the BW. If this still isn’t enough you can use either the BW-BPS or even text variables for input – and modify the results accordingly.

3. Different user exits for different topics – When you upload data into a cube you have at least eight different user exits you could pass. Whether you want to modify the data on single record or on the complete data package, whether you look at the raw data or at the harmonized data you’ll have a fitting exit. And there you can focus on the logic because you get all the necessary data as input values.

4. ABAP and JAVA, DHTML, JavaScript or VBA – All these programming languages are supported at one or the other way in SAP BW. I’ve seen powerful VBA routines run in workbooks with nine different queries embedded – this connection of different languages and different programming philosophies helps you find easy solutions for difficult problems.

5. Performance – The BW is developed to handle huge amounts of data. I know about a BW project that handles 500 million data records – per day! With this amount of data you better know what you’re developing because using a LOOP AT … INTO… instead of LOOP AT … ASSIGNING … can easily shoot the upload time way out of the critical time window that you have per night.

6. User- and Authorization handling – Straight out of the box, on any level you’d like to have.

7. Automatic use of master data – The InfoObject concept easily helps to get consistent master data across different applications. Plus you get hierarchy handling, attributes and multiple languages without any additional line of code.

All this allows me to do what I (as a studied mathematician) like best. Just focus on the algorithm. Ignore all those tedious tasks like checking the correct input values. BW programming is as close to pure algorithm programming as you can get.

I’m sure that one or the other will easily find a list as long as mine why he wouldn’t use BW. If you do feel free to discuss it here. But I will present some enhancements to SAPs weaknesses in future blogs.

May the InfoObjects be with you!

You must be Logged on to comment or reply to a post.
  • Hi Dirk,
    congratulations for your weblogging start !
    Since I have to post very soon a weblog about the enhancement in Logistic Cockpit (and then generic extraction), I wonder if you want to join in this venture and create a little ‘related’ weblog with some sample code…if you want, give me your mail address and I’ll send you my weblog draft as soon as possible !
  • Hi Dirk,

    Although I don’t work with BW, I found your weblog quite interesting.

    It would be great, if you could discuss the difference in detail between development in BW and R/3 (&ERP) in one of your next weblog.


  • Not a BW guy, but I find this weblog has amazing clarity, concise and it doesn’t require two readings to understand the simple concepts.

    Thanks Dirk.

    Subramanian V.

  • Hi, nice weblog. I just can tell that I think the same. If you think this is so great for the analytical world, take a look at the Composite Application Framework. That one’s for the transactional world and was built by former BW guys. So the thinking is the same.
    The thing we have to do now is “simply” to integrate BW and CAF…


    • Unfortunately I don’t have that much experience on FOX formulas. When you’re skilled in ABAP you always prefer an Exit function. But when it fits I’ll mention FOX formulas.

      Best regards, Dirk

  • Dirk,

    I’ve read many of your posts on the SDN BW Forums and always thought highly of them and look forward following your blog.

    While I have a lot of years in IT and a good many of them with Oracle based data warehousing, I’m relatively new to the BW world and always enjoy being able to talk to the folks that design/build systems and know the good and the bad.

  • Hello Dirk,

    I couldn’t agree more with the points you made. It’s the first time that I have seen them listed in such a condensed way. Marvelous!

    On a personal note, for those interested in FOX (BW-BPS formulas), you can look forward to an SDN Webinar about it that I will be holding on March 10.

    Looking forward to more blogs from you,

  • Hi Dirk,

    nice blog and i hope u will carry on feeding us with your clever Ideas and Insight in the BW area. However i would like to comment on few statements made by you.

    1) I beleive there still is a big enuf room for improvement in the Formated Reporting and the Layout design of Reports. (speaking of rel 3.0B there are too many little Bugs in Web AS and many simple things do not work).

    2) As far as Error handling and Analysis is concerned. One need to be handy with ABAP Debugger, otherwise u dont stand a  chance. Many times simple Error analysis need debugging and many times Error-messages are rather confusing and vague than helping. So i hope in coming Releases SAP will think of poor BW implementation consultants 🙂

    Ok i m gonna stop here with negativity (and wishful thinking). What i like abt BW is it being an end-to-end Data Warehouse system with comfort of preconfigured R/3 extractors, Content and being integrated in the SAP world (Net Weaver, APO…). I am eager to see new features in the Big release 7.0 and do think that BW is definitely going to be a important component of Netweaver/XI.

    Anyway all the best and keep up the good work.

    Umair Ahmed Shah

  • Hi Dirk,

    Nice work on giving out the basicconceptson SAP BW. Being a novice oN BW, as am a ABAPer for past 4 years. I have been told by ABAP-BWer that they prefer User exists to FOX functions I look forward to your weblog on User Exits to userstand the difference. Hope to be a ABAP-BWer soon.


  • hi dirk

    I read your booklet “ABAP Development for SAP BW—User Exits and BAdIs” which is very good. As you propose I use the master routines more often than before. But I haven’t find out yet which exception must be raised in order to write a record into the error stack. Additionally, how can an error stack be deleted?

    Can you help?

    Many thanks for your answers in advance.

    • Hello Reto,
      I’m glad that you like the book. Which master routine are you talking about? Do you mean the expert routine? If so you can use the methods of the object LOG, e.g. CALL METHOD LOG->ADD_MSG…
      Best regards
      • Hi Dirk
        Indeed I mean the expert routine, but I face the same problem  in the start or end routine. We have already uese the method add_msg of the class log but i do not know which method i have to use that the record is written to the error stack.
        thanks for your advice.

        Best regards