Skip to Content
Author's profile photo Eugene Khusainov

Tracing data transformation in SAP BW without debugging

Sometimes in the forums, answering some questions, it’s difficult to explain where to look for errors or wrong settings. Especially, if the wrong settings might be made in any place of data flow, from a source system to a data target. 

Debugging might be very time-consuming and difficult. Moreover, some BWers don’t know ABAP at all.

I’d recommend using Simulate update feature for watching the data transformation. Many BW-people aware of this tool. Though, I guess that the most of them use it for debugging only. Meanwhile, it’s a powerful tool that may help in quick identification of the place of trouble without debugging.

I’ll demonstrate it on two examples.

1. Load of master data through flexible infosource with multiple data targets

(the whole data loading scenario you may see here):

Long texts in SAP BW: Modeling

So, we upload master data for five data targets and want to see how data is transformed during the loading process. Immediately after data load we go from  the infopackage to the ‘Details’ tab of the monitor.

The monitors’ entries contain a lot of information, especially concerning the data flow within the BW system.


If there are no errors, expand all nodes under ‘Processing (data packet)’ node. On the picture below we see that the loading process has updated five data targets simultaneously.

Select any data package and from the context menu choose ‘Simulate update’.


Do not check any flags, just hit ‘Perform Simulation’ button.


Choose a data package to do a simulation.

Pay attention to the screen name each time you proceed further.

We came to the transfer structure (it’s like a replica of datasource structure in the source system).


As you can see, the Address Line 1 columns contains the long text, the next column – some figures (most likely – garbage), and two next columns are empty.

There is also a ‘Start Routine’ button (the icon shows that it is a routine in transfer rules). Click on it or on a ‘Target Records’ button.


This screen shows the data transformation after the start routine in transfer rules has worked out, but before the transfer rules. Note, that the last three columns now contain some text.

Go to the code of the start routine in transfer rules and see that this routine cuts out the long text and places peaces of it in these last columns.

Now, select any row and hit the ‘Target Records’ button.


We are in the communication structure (after the work of transfer rules). Careful comparison with the previous picture shows that something is added to the beginning of the fields in Address Line 1 column.

Go to transfer rules and see that the transfer rule for this field has a routine. In the routine’s code we see that to the field a group code is added  (just for demonstration purposes):

RESULT = addrl.

Now press the ‘Target Records’ button at the bottom of the frame.


We arrived to the data target records screen.


See, that there was no start routine in update rules (no appropriate button). Just update rules have worked out. We can go to update rules and see that all update rules have transferred data from the communication structure to the data targets as 1 to 1.

In this case there were many data targets. By default the simulate/update process bring us to the first one in the scheduler’s list of data targets. In order to track data flow transformation for a particular data target we need to uncheck the other data targets in the scheduler, repeat the load and then go to simulate/update option for a particular (checked) data target.

2. Load of transaction data.

The second way of reaching the discussed option is through PSA area in RSA1. Locate the PSA for our load and choose from the context menu ‘Simulate/Cancel Update’ option.


We are, again, in the monitor. Repeat the steps described earlier.


After not ticking any debug flags we receive a message about changing the number of data records in a start routine. 


It’s a clear indication of a start routine existence.


So, we came to the transfer structure.

The icon on the button for a start routine shows that there is a start routine in update rules.

But, first we want to see what is coming into a communication structure. Hence, we select one row and hit the ‘Target Records’ button.


We see that this record came to the communication structure unchanged. Now press the ‘Target Records’ at the bottom of the screen again.


We see that after the start routine the record has been duplicated. The second row has EURO currency. It’s time to look at the routine itself.

The code:

wa_temp[] = DATA_PACKAGE[].
LOOP AT wa_temp.
wa_temp-AMOUNT = wa_temp-AMOUNT * 2.
wa_temp-CURRENCY = 'EUR'.
MODIFY wa_temp.

clearly shows that in fact, here another record in EURO was added (with pseudo currency translation).

Note: the code was taken from the thread:

Re: Update Rule – to duplicate records in a data package

Later Mark Bernard posted there the more efficient code (if anyone interested in records duplication code).

Finally, by pressing ‘Target Records’ button again, we are brought to the records in the data target. Since we don’t see any transformation in data, we don’t need to look at update rules.

Hope, I have demonstrated that not always you have to debug the code, the Simulate/update feature may help you to figure out fast where the (undesired) data transformation may take place.

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Witalij Rudnicki
      Witalij Rudnicki
      I was always afraid to click on Simulate Update 🙂


      Author's profile photo Former Member
      Former Member
      Hi Vitalik,

      Now you see that there is nothing to be afraid of in simulate/update.

      Best regards,

      Author's profile photo Former Member
      Former Member

      thanks for your help !!!



      Author's profile photo Former Member
      Former Member
      Hello Expert,

      Thanks for ur Guide