Showing results for 
Search instead for 
Did you mean: 

Error when using a Start Routine with a Virtual Provider

Former Member
0 Kudos

We have recently upgraded to BI 7.0. We are just starting to develop. We are on Patch 15.

My start routine seems straight forward and does work fine for a while but for seemingly no reason, I start to get "Assert Condition was violated" when I run the query.

Below is my routine and where I placed my routine in the ABAP code. (under the method "start routine" statement).

METHOD start_routine.

*=== Segments ===




MONITOR_REC TYPE rstmonitor.

$$ begin of routine - insert your code only below this line -

... "insert your code here

Delete SOURCE_PACKAGE where RNR(5) <> 'REQU_'.

Delete SOURCE_PACKAGE where LNR <> ' 1 '.

I ask about the placement because There is another Method statement that seems to be for Direct Access.

METHOD inverse_start_routine.

$$ begin of inverse routine - insert your code only below this line-

... "insert your code here

When I try to place my start routine here, I get the following syntax error.

Field "SOURCE_PACKAGE" is unknown.

I have followed the "How to . . . Routines within Transformations" whitre paper and it really doesn't address virtual providers. Most of the notes that I have seen for ASSERT CONDITION are prior to Patch 15.

Is there something different that I need to do with my start routine because I am using a Virtual Provider?


Accepted Solutions (0)

Answers (3)

Answers (3)

Former Member
0 Kudos

Hi, can you give some more detailed information about your query (e.g. what selections you have, if any), also can you explain the business logic that requires you to delete these records in the start routine.

Generally, with a Virtual InfoProvider you will need to provide your selections in the Inversion routine so that selections made in the query can be passed back to the source. what is the source in your scenario? is it an R/3 (or ECC) system? The inversion routine API does not contain the structure SOURCE_PACKAGE which is why you can not delete from SOURCE_PACKAGE in the inversion routine:




request type rsrequest

datapackid type rsdatapid


monitor type rstr_ty_t_monitors








i_th_fields_outbound TYPE rstran_t_field_inv

i_r_selset_outbound TYPE REF TO cl_rsmds_set

i_is_main_selection TYPE rs_bool

i_r_selset_outbound_complete TYPE REF TO cl_rsmds_set

i_r_universe_inbound TYPE REF TO cl_rsmds_universe


c_th_fields_inbound TYPE rstran_t_field_inv

c_r_selset_inbound TYPE REF TO cl_rsmds_set

c_exact TYPE rs_bool.

The inversion routine will need to fill structure c_r_selset_inbound with the selection conditions from your query which must be read from i_r_selset_outbound_complete

If you can explain in detail your requirements I might be able to assist further.

Kind regards,

Lance Nurick

Former Member
0 Kudos

Hi Lance,

I have a similar query.

have a virtual provider in which i get several key figures but my currency field is blank as it is not maintained on ECC side.

I want to hard coded this currency field to 'BDT'.

Where and what in the inverse field should I write to do the same???




Active Contributor
0 Kudos


My transformation has only •i_r_selset_outbound, how to add •i_r_selset_outbound_complete ? Grtz Koen

Former Member
0 Kudos

Hi Siggi,

You are correct about the syntax and that is how my routine is written. I cut and paste my routine to this post and for some reason it left that out. Also, When I used the source_fields field symbol, it gave me a syntax error.


Former Member
0 Kudos


I don't have access to a 7.0 system at the moment, but isn't the right syntax for the deletion

Delete SOURCE_PACKAGE where RNR(5) = 'REQU_'.

Delete SOURCE_PACKAGE where LNR = ' 1 '.

Additionally I think the package is passed as a field-symbol and you need to use <source_package>.

kind regards