cancel
Showing results for 
Search instead for 
Did you mean: 

Virtual Characteristic on multi provider

Former Member
0 Kudos

Hello all,

I have two basic cubes, CUBE-1 and CUBE-2 both of them have almost similar data except couple of fields, one of them is an indicator (Y or N).I have three infoobjects named 0Competitor 1 , 0Competitor 2 and 0Competitor 3 in both the cubes.

Report Requirement on Multi Provider is I want to run the report where I am checking for a competitor for example "ORACLE" in either 0competitor1,2 and 3 info objects.

I cannot chage the current design, so I have to handle this only through query.

any input is really appreciated,

thank you much.

k.

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Your post is not very clear to me.

You have these 3 'competitor' fields in both cubes, and you want to select rows if 'any' of these rows match with the specified value (is it an input from the user - 'ORACLE' in your example)?

Former Member
0 Kudos

thanks ajay,

Yes User will input 'ORACLE' in a variable for one of the Competitor fields.

Currently user is running this report three times, with "ORACLE" as filter in three variable for three compitetior's.

let me know if you would like to know anything else.

k

former_member213594
Participant
0 Kudos

Krishna,

This can be done easily with BEx variables customer exit, don't go for virtual fields that makes the query performance worse on multiprovider.

(1) Create variable type “<i>Processing by User Entry/Default Value</i>” on 0COMPETITOR1 with single selection entry.

(2) Pass the value entered in above variable into the field 0COMPETITOR2 by creating another variable type <i>Processing by “Customer Exit”</i> . In customer exit ABAP code at <b>I_STEP = 2</b> , read the value entered in step1 and assign this value to 0COMPETITOR2

(3) Repeat the same with 0COMPETITOR3

So that the user entering the “ORACLE” (or) selected value in 0COMPETITOR1 field onetime that will bring the matching data from all three fields in both cubes.

Cheers

Martin

Former Member
0 Kudos

Ok, here is a work-around which might just work :-

- create two additional variables of user-exit type, assign value to these variables from the one which user has input. At the end of it, all 3 variable have the same input value (eg ORACLE)

- create restricted KF column restricting some KF (any, doesn't matter) on first char (0COMPETITOR1 say), restricting it by variable1. This column will then have values for rows where 0competitor1 matches the variable value and initial/zero for other rows.

- Create similar other two restricted KF; restricting them on 0comp..2 and 0comp..3 chars, with corresponding variable values. These column would also then have non-zero values for the rows where corresponding char contains the variable value (eg ORACLE).

- create a CKF which is RKF1RKF2RKF3. Now, this CKF will be non-zero if one of the three 0COMPx characteristics contain the user-input variable value, and zero where none match.

- Create a condition (remember there was no filter used) to show only rows where the CKF from the previous step has a non-zero value.

- Hide the CKF/RKF columns that you don't need to show.

Don't tell, it is convoluted

Former Member
0 Kudos

Thanks Martin

Would this work with selection range. if it does could you help me on this.

k

former_member213594
Participant
0 Kudos

Hi Krishna,

Yes, this will work for selection range as well.

The customer exit variable for other 2 fields needs to be <u>"not ready for input"</u>, then only variable entry comes into ABAP code.

please inform if need ABAP code for I_STEP = 2 , Couple of posting available online for the same.

Thanks

Martin

Former Member
0 Kudos

I understand what you are saying, but it works as "AND" condition. If I copy the variable value of one infoobject into other two info objects.

It will retrive records where competitor 1 , 2 and 3 are "ORACLE" in my example.

But I want it to work on "OR" i.e I want all the rows where competitor is "ORACLE" in Either competitor 1 or either competitor 2 or either competitor 3.

k

Former Member
0 Kudos

That is what I also thought.

You may try what I mentioned earlier (would like to know whether it works in case you decide to give it a try).