Skip to Content
Author's profile photo Alexandre DUSSAC

The 3 B’s – BI, BICS and BW – Part 1: Deep dive into a basic workflow

Hi everyone,

After my first blog about BICS HANA in design studio and with BI 4.1 being GA last week, I have decided to right a series of blog around our BI suite connecting to BW with BICS (3 B’s) 🙂

They are already many resources available and to not repeat things I will try to offer you a different view.

I’m thinking of several parts, let’s see where I can go:

Part 1: Deep dive into a basic workflow (current)

Part 2: Analytical vs. reporting (to come)

Part 3: <tbd>

The goal of this first part is to understand how the connection is made between BI (in this case our Business Objects Enterprise – BOE) and BW. I will describe a basic workflow using web intelligence and we will look at traces on the systems to confirm the way it works.

I will not go into details on how to setup traces as I prefer to insist on the way it works. I will really recommend you to look at this great documentation with many information about traces and how to optimize performance.

The agenda for this blog will be:

  • a definition of BICS (I will not try to define BI and BW)
  • 4 different workflows (3 with webi)
  • a summary

So let’s start with what is BICS?

BICS means BI Consumer Services and is a SDK developed and used by SAP.

It is a layer for multidimensional and relational data access and its API offers many benefits for developing BI applications and guess what? SAP BI tools use it!

We are focusing on BICS with BW so here is a thing to remember for this 1st blog. We differentiate 2 types of BICS:


Pretty obvious where the difference is… 😉 but we will focus on how they work together. We could mention another one but not let’s complicate things for now.

How does this work? (my simplified definition)

A java BI application uses java bics. The java side of bics uses the SAP Java Connector (JCo) to connect to BW via RFC and triggers the abap bics. The abap bics gets the result from bw and send it back to the java bics that presents it back to the BI application.

Easy… 😎 but still let’s try to put facts behind this definition.

Create an OLAP connection

If you have never done it, you can see how to create OLAP connections from the CMC here.

This creation process is handle by the Multi Dimensional Analysis Service (MDAS) from the BI platform (BOE). You can find it within the Adaptive Processing Server (APS). For the purpose of the blog, I want to isolate my process so I have clone the APS only with the MDAS service and rest of the servers are down (except CMS and I/O FRS).

— working on your acronyms 🙂 —


The server’s trace is set to High as I want to see what is happening… If you just fill the connection details, not much… But we will use the connect option to browse the BW system as you may want to create your connection on top of an info provider or query directly.

Using Process Explorer, I can see that my java process (my MDAS server) communicates with my BW system, sounds good!


And using my notepad++ on my traces, I will search for “BICS”:


Good start! it seems we can confirm that my BI java process uses BICS and JCo to connect to BW. Let’s move to the next workflows using web intelligence and search for RFCs.


  • Note:
    1. about BI sizing:
    2. about splitting the APS


Browse a connection from webi

It is time now to go to the BI launch pad and create a new web intelligence document.


  • Note: You can only create a new Web Intelligence document from a BEx query when your modify preference is set to the Rich Internet Application.


So I need to make sure I start the Web Intelligence processing server but I also need the DSL Bridge Service under the APS. I will do the same thing from previous workflow (clone APS and assign DSL service):


Again let’s browse our connection to find my BEx query for my web intelligence report and look at our java process (my DSL server this time):


Connection is made.. nice! and if we look in the trace for “BICS”:


and for “NODES”:


But we did this already, just a new java process we are looking at… It is time to move to the BW system, I will use transaction ST05 to trace RFC:


Activate > Run your workflow (browsing BW from Webi) > Deactivate > Display – Super easy!

JCo uses RFC to talk to BW and the calls we have seen in the trace should be seen in the BW system too.


And yes we do see them!

Interesting enough it took 18 seconds to give back to my “not-sized” BOE the first level of nodes…long…but I’m also using a user with SAP_ALL authorization and the BW system is far from being small (thousands of objects).

Query is selected, next step comes.

Design time

Web Intelligence will now present you the query panel:


The query panel is the place where you will have access to the metadata of your BEx query (hierarchies, dimensions, attributes…). You can then select the objects you want to have in your report, apply filters, create prompts, select levels,…

This process of retrieving metadata information is called design time. So let’s have a look at it closer.

The DSL server I have created is still in charge so we will just check RFC trace from BW:


We can see that BICS was working to retrieve this metadata information.

BICS_PROV_SET_HIERARCHY is a good example as BICS needs to set each hierarchy because they are all presented in the query panel. In the trace we can see that the max duration was ~500ms so still ok…but what will happened if you have 30 infoobjects with each of them having 100 hierarchies… (never saw something like this)

worst case: 0.5*30*100 = 1500 seconds … ok it could become costly … 😛

But I have good news for you! A lot of improvements have been done in BI 4.1 (I will try to show you an example in one part of this blog series)

Now we have seen BICS being used in the java processes of BOE, the JCo, RFC, let’s move the final stage, the ABAP BICS.


Once you have selected the different objects you want to display in your report, you can click Run Query and then the actual data is retrieved from the BW system. This is the runtime.


So let’s go one step further with a transaction that I really like: RSTT. Select the user you want to trace in the User Activation screen and then check the trace in the Trace Collection.


You will see the different ABAP functions from BICS that were executed and the time it took.


We can see now that the calls are a bit different than in design time and a good example that we are in runtime is the BICS_PROV_GET_RESULT_SET where the actual data asked by the user is retrieve.

But what is even cooler with this transaction is that you can debug in ABAP (if you like too 🙂 )  and see what happened in the workflow and what was exchanged between the JAVA and the ABAP sides of BICS.

Let’s go quickly to the E_T_DATA_CELLS of the BICS_PROV_GET_RESULT_SET and we can notice that the table has a specific structure for optimization so difficult to read for normal human eyes…


But easy enough I can see that the value of row 6 (in yellow) is the same that I can retrieve in my webi doc:


Memo: your job here is not to debug! just if you want to have fun. 😎

What I want to mention here is that with rstt, you can have a great overview of where the runtime was spent in BW. And what is even better, if you see one call being extremely long you should better check SAP notes as one could improved your overall performance after few minutes of implementation in tcode snote.


So what did we see?

  1. BICS for BW has 2 parts JAVA and ABAP.
  2. The ABAP side of things is easy to check on BW and I will recommend you to always check sap notes for ABAP BICS improvements.
  3. Different BI java processes in BOE uses java BICS to access BW hence importance of changing the default configuration with a proper sizing!
  4. Difference between design time and runtime.
  5. Finally, if you remember my definition from the beginning:

A java BI application uses java bics. The java side of bics uses the SAP Java Connector (JCo) to connect to BW via RFC and triggers the abap bics. The abap bics gets the result from bw and send it back to the java bics that presents it back to the BI application

Hopefully it makes more sense now.

It was a bit longer than I expected at the beginning but hope you enjoyed reading! I’ll be happy to get comments/questions and will try to answer if I can.

More soon where I will compare analytical vs. reporting with something you should all have at home. 😉

Cheers, Alex.

PS: I used BI 4.0 SP7 and BW release: 702 / level: 0006

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Vineet Gupta
      Vineet Gupta

      Great post tracing the data flow. Very helpful. I don't see the pictures in your blog. Is it just me or you need to upload the pictures to an area that is accessible for everyone?

      Author's profile photo Alexandre DUSSAC
      Alexandre DUSSAC
      Blog Post Author

      Thanks Vineet, I had to change the space and images got lost... Everything should be fine now.

      Author's profile photo Former Member
      Former Member

      Thanks for sharing Alexandre, looking forward for more content like this!

      Author's profile photo Alexandre DUSSAC
      Alexandre DUSSAC
      Blog Post Author

      Thanks Victor!

      Author's profile photo Former Member
      Former Member

      Alexandre,  very helpful blogg, the part I like most was the Summary part..... Keep up with the good work....



      Author's profile photo Markus Tempel
      Markus Tempel

      Well structured with just enough content to understand what's going on. Looking forward to more CSA-flavored hands-on material like this.



      Author's profile photo Former Member
      Former Member

      Great work understanding the JAVA and ABAP BICS , looking forward for part 2


      Sneha Bankar

      Author's profile photo Former Member
      Former Member

      This is a very good and informative.

      We are have landscape SAP BI 4.0 SP04 on LINUX and SAP NetWeaver BW (not HANA) and it is well integrated in accessing BW content using business objects webi reports.

      We recently upgraded to SP06 and ended up with issues like, the Webi reports which are biult on BW BEx queries are not working properly, the prompts in BW BEx quries are not showing up in Webi reports, BEx variable prompts are not working.

      Please suggest!


      Ratnamachary A

      Author's profile photo Alexandre DUSSAC
      Alexandre DUSSAC
      Blog Post Author

      Hi Ratnamachary, I'll advise you to open a case with SAP or a discussion in one of the space with more details (errors, screenshots,...)

      @you and others: thanks for the feedback!

      Author's profile photo Pawan Kumar Lolla
      Pawan Kumar Lolla

      Hi Alex,

      A nice detailed document. Can you please post the improvements in 4.1 w.r.t. BI/BW/BICS



      Author's profile photo Former Member
      Former Member

      Hi Alex,

      Thanks for the clear info!

      Author's profile photo Former Member
      Former Member

      Hi Alex,

      when every we try to open the report based on BICS and BW does it authenticates at BW end first then it comes to BO?

      if user doesn't have BW roles then report will show blank page?

      Author's profile photo Krishna Chaitanya
      Krishna Chaitanya

      Thanks for sharing Alexandre.  Really very useful doc.