cancel
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 ===

FIELD-SYMBOLS:

<SOURCE_FIELDS> TYPE tys_SC_1.

DATA:

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?

Thanks

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:

METHODS

start_routine

IMPORTING

request type rsrequest

datapackid type rsdatapid

EXPORTING

monitor type rstr_ty_t_monitors

CHANGING

SOURCE_PACKAGE type tyt_SC_1

RAISING

cx_rsrout_abort.

METHODS

inverse_start_routine

IMPORTING

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

CHANGING

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???

Thanks.

Regards,

Rohit

kohesco
Active Contributor
0 Kudos

Hi,

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.

Thanks.

Former Member
0 Kudos

Hi,

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

Siggi