Hi,
Just to be sure, you are implementing the Virtual Characteristics BAdI. If I am right, you implemented BAdI RSR_OLAP_BADI.
First remark, I advice to implement the new (kernel-based) BAdI RSROA_OLAP_BADI instead of classic BAdI RSR_OLAP_BADI. Please refer to SAP Note 1717880 - Virtual Key Figures & Characteristics for more information.
Did you implement any coding in method IF_EX_RSROA_OLAP_BADI~INITIALIZE (please note that I am referring to the new BAdI as example)? Your coding should look like this (also according to the sample implementation):
METHOD IF_EX_RSROA_OLAP_BADI~INITIALIZE.
* Local data declaration
DATA:
l_global_name TYPE string,
l_error TYPE rs_bool.
FIELD-SYMBOLS:
<l_global> TYPE i,
<l_s_sfc> TYPE rrkg_s_sfc.
* Get field postions for Characteristics in structure
LOOP AT i_th_sfc ASSIGNING <l_s_sfc>
WHERE user_exit NE rrke_c_mode-none. "#EC CI_HASHSEQ
CONCATENATE 'P_CHA' <l_s_sfc>-chanm INTO l_global_name SEPARATED BY '_'.
UNASSIGN <l_global>.
ASSIGN (l_global_name) TO <l_global>.
CHECK <l_global> IS ASSIGNED.
TRY.
<l_global> = zcl_zgen_fdm_g003_q001=>get_field_position_d(
i_fieldnm = <l_s_sfc>-keyreturnnm
i_s_data = i_s_data ).
CATCH cx_rs_not_found.
<l_global> = 0.
ENDTRY.
ENDLOOP.
I suggest to debug here and see if the determination of positions in the structure is OK. I.e. a position > 0 is determined.
Last but not least, please also (or as a first action), regenerate your BEx Query using t/code RSRT. I have done this many times to get rid of issues which I could not explain.
Best regards,
Sander