cancel
Showing results for 
Search instead for 
Did you mean: 

How to extract data from virtual cube..?

Former Member
0 Kudos

Gurus,

How can i read data from an virtual infocube thru an ABAP code..Is there any FM that i can use..

Kindly Help me in this...

Really URGENT..

Thanks

Sam

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Sam,

You can use the FM RSDRI_INFOPROV_READ for this purpose and see this demo report RSDRI_INFOPROV_READ_DEMO for its usage.

Thanks and Regards

Subray Hegde

Former Member
0 Kudos

Subray,

Thanks for the reply..I have created a wrapper for this FM in the same way te DEMO program shows but still doesn't wrk.

No data is returned in the Table.

I also tried using the FM RSDRI_INFOPROV_READ_RFC and it does some processing but does nt return the results..

I am attaching my code...Can u please help me with that...

TYPES:

BEGIN OF gt_s_data,

cs_version(3) TYPE c,

cs_chart(2) TYPE c,

bcs_llob(4) TYPE c,

bcs_lcus(3) TYPE c,

bcs_ldch(2) TYPE c,

bcs_lprg(5) TYPE c,

curkey_lc TYPE /BI0/OICURKEY_LC,

curkey_tc TYPE /BI0/OICURKEY_TC,

bcs_lmay TYPE /BIC/OIBCS_LMAY,

figlxref3 TYPE /BIC/OIFIGLXREF3,

unit TYPE /BI0/OIUNIT,

CS_TRN_LC TYPE /BI0/OICURKEY_GC,

CS_TRN_TC TYPE /BI0/OICURKEY_GC,

CS_TRN_QTY TYPE /BI0/OIUNIT,

END OF gt_s_data.

DATA:

l_msg_text TYPE string,

g_s_sfc TYPE rsdri_s_sfc,

g_th_sfc TYPE rsdri_th_sfc,

g_s_sfk TYPE rsdri_s_sfk,

g_th_sfk TYPE rsdri_th_sfk,

g_s_range TYPE rsdri_s_range,

g_t_range TYPE rsdri_t_range.

DATA:

g_s_data TYPE gt_s_data,

g_t_data TYPE STANDARD TABLE OF gt_s_data,

g_t_rfcdata TYPE rsdri_t_rfcdata,

g_t_sfc TYPE rsdri_t_sfc,

g_t_sfk TYPE rsdri_t_sfk,

g_t_field TYPE rsdp0_t_field.

DATA:

g_first_call TYPE rs_bool.

g_first_call = rs_c_true.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_VERSION'.

g_s_sfc-chaalias = 'cs_version'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_CHART'.

g_s_sfc-chaalias = 'CS_CHART'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LLOB'.

g_s_sfc-chaalias = 'BCS_LLOB'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LCUS'.

g_s_sfc-chaalias = 'BCS_LCUS'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LDCH'.

g_s_sfc-chaalias = 'BCS_LDCH'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LPRG'.

g_s_sfc-chaalias = 'BCS_LPRG'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CURKEY_GC'.

g_s_sfc-chaalias = 'CURKEY_LC'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CURKEY_GC'.

g_s_sfc-chaalias = 'CURKEY_TC'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LMAY'.

g_s_sfc-chaalias = 'BCS_LMAY'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'FIGLXREF3'.

g_s_sfc-chaalias = 'FIGLXREF3'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0UNIT'.

g_s_sfc-chaalias = 'UNIT'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

***Fill up the key figures data.

CLEAR g_s_sfk.

g_s_sfk-kyfnm = '0CS_TRN_GC'.

g_s_sfk-kyfalias = 'CS_TRN_LC'.

g_s_sfk-aggr = 'SUM'.

INSERT g_s_sfk INTO TABLE g_th_sfk.

CLEAR g_s_sfk.

g_s_sfk-kyfnm = '0CS_TRN_GC'.

g_s_sfk-kyfalias = 'CS_TRN_TC'.

g_s_sfk-aggr = 'SUM'.

INSERT g_s_sfk INTO TABLE g_th_sfk.

CLEAR g_s_sfk.

g_s_sfk-kyfnm = '0CS_TRN_QTY'.

g_s_sfk-kyfalias = 'CS_TRN_QTY'.

g_s_sfk-aggr = 'SUM'.

INSERT g_s_sfk INTO TABLE g_th_sfk.

      • Fill up selection criteria.

CLEAR g_s_range.

g_s_range-chanm = '0CS_VERSION'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = '100'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = 'BCS_VERS'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'ACT'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0CS_CHART'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'ZG'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0CO_AREA'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'AZ01'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0FISCVARNT'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'K2'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0FISCYEAR'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = '2007'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0FISCPER3'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = '003'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0SEM_CGCOMP'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'US0075'.

APPEND g_s_range TO g_t_range.

g_t_sfc = g_th_sfc.

g_t_sfk = g_th_sfk.

CALL FUNCTION 'RSDRI_INFOPROV_READ_RFC'

EXPORTING

I_INFOPROV = 'BCS_C1V11'

  • I_REFERENCE_DATE = SY-DATUM

  • I_SAVE_IN_TABLE = ' '

  • I_TABLENAME =

  • I_SAVE_IN_FILE = ' '

  • I_FILENAME =

  • I_AUTHORITY_CHECK = RSDRC_C_AUTHCHK-READ

  • I_CURRENCY_CONVERSION = 'X'

  • I_S_RFCMODE =

  • I_MAXROWS = 0

  • I_USE_DB_AGGREGATION = RS_C_TRUE

  • I_USE_AGGREGATES = RS_C_TRUE

  • I_ROLLUP_ONLY = RS_C_TRUE

  • I_READ_ODS_DELTA = RS_C_FALSE

  • I_RESULTTYPE = ' '

  • I_DEBUG = RS_C_FALSE

  • IMPORTING

  • E_END_OF_DATA =

  • E_AGGREGATE =

  • E_RFCDATA_UC =

  • E_SPLIT_OCCURRED =

TABLES

I_T_SFC = g_t_sfc

I_T_SFK = g_t_sfk

I_T_RANGE = g_t_range

  • I_T_TABLESEL =

  • I_T_RTIME =

  • I_T_REQUID =

E_T_RFCDATA = g_t_rfcdata

  • E_T_RFCDATAV =

E_T_FIELD = g_t_field

  • EXCEPTIONS

  • ILLEGAL_INPUT = 1

  • ILLEGAL_INPUT_SFC = 2

  • ILLEGAL_INPUT_SFK = 3

  • ILLEGAL_INPUT_RANGE = 4

  • ILLEGAL_INPUT_TABLESEL = 5

  • NO_AUTHORIZATION = 6

  • GENERATION_ERROR = 7

  • ILLEGAL_DOWNLOAD = 8

  • ILLEGAL_TABLENAME = 9

  • ILLEGAL_RESULTTYPE = 10

  • X_MESSAGE = 11

  • DATA_OVERFLOW = 12

  • OTHERS = 13

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

CALL FUNCTION 'RSDRI_DATA_UNWRAP'

EXPORTING

i_t_rfcdata = g_t_rfcdata

CHANGING

c_t_data = g_t_data.

Former Member
0 Kudos

Hi Sam,

Try the other FM RSDRI_INFOPROV_READ. I have used this FM to read from remote cubes and it works. I think it should work for you. Hope it helps.

Thanks and Regards

Subray Hegde

Former Member
0 Kudos

Subray,

Can you provide me a test program to look at..Becoz i tried using that FM but it did not wrk...

CAn u help me with the codeing part plzzz....

Cheers:

Sam

Former Member
0 Kudos

Hi Sam,

Please give me your mail id and I will send you a demo code.

Thanks and Regards

Subray egde

Former Member
0 Kudos

Subray,

Email address: tomayanksharma@gmail.com....

I tried using the FM that u told me too...Given is the code....

TYPE-POOLS: rs, rsdrc.

TYPES:

BEGIN OF gt_s_data,

0cs_version TYPE /BI0/OICS_VERSION,

0cs_chart TYPE /BI0/OICS_CHART,

bcs_llob TYPE /BIC/OIBCS_LLOB,

bcs_lcus TYPE /BIC/OIBCS_LCUS,

bcs_ldch TYPE /BIC/OIBCS_LDCH,

bcs_lprg TYPE /BIC/OIBCS_LPRG,

0curkey_gc TYPE /BI0/OICURKEY_LC,

bcs_lmay TYPE /BIC/OIBCS_LMAY,

figlxref3 TYPE /BIC/OIFIGLXREF3,

0unit TYPE /BI0/OIUNIT,

0CS_TRN_GC TYPE /BI0/OICURKEY_GC,

0CS_TRN_QTY TYPE /BI0/OIUNIT,

END OF gt_s_data.

DATA:

l_msg_text TYPE string,

g_s_sfc TYPE rsdri_s_sfc,

g_th_sfc TYPE rsdri_th_sfc,

g_s_sfk TYPE rsdri_s_sfk,

g_th_sfk TYPE rsdri_th_sfk,

g_s_range TYPE rsdri_s_range,

g_t_range TYPE rsdri_t_range.

DATA:

g_s_data TYPE gt_s_data,

g_t_data TYPE STANDARD TABLE OF gt_s_data,

g_t_rfcdata TYPE RSDRI_T_RFCDATA,

g_t_sfc TYPE rsdri_t_sfc,

g_t_sfk TYPE rsdri_t_sfk.

  • g_t_field TYPE rsdp0_t_field.

DATA:

g_first_call TYPE rs_bool,

g_end_of_data TYPE rs_bool.

g_first_call = rs_c_true.

g_end_of_data = rs_c_false.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_VERSION'.

g_s_sfc-chaalias = '0cs_version'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_CHART'.

g_s_sfc-chaalias = '0CS_CHART'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LLOB'.

g_s_sfc-chaalias = 'BCS_LLOB'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LCUS'.

g_s_sfc-chaalias = 'BCS_LCUS'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LDCH'.

g_s_sfc-chaalias = 'BCS_LDCH'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LPRG'.

g_s_sfc-chaalias = 'BCS_LPRG'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CURKEY_GC'.

g_s_sfc-chaalias = '0CURKEY_GC'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

*CLEAR g_s_sfc.

*g_s_sfc-chanm = '0CURKEY_GC'.

*g_s_sfc-chaalias = 'CURKEY_TC'.

*g_s_sfc-orderby = 0.

*INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'BCS_LMAY'.

g_s_sfc-chaalias = 'BCS_LMAY'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = 'FIGLXREF3'.

g_s_sfc-chaalias = 'FIGLXREF3'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

CLEAR g_s_sfc.

g_s_sfc-chanm = '0UNIT'.

g_s_sfc-chaalias = '0UNIT'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

***Fill up the key figures data.

CLEAR g_s_sfk.

g_s_sfk-kyfnm = '0CS_TRN_GC'.

g_s_sfk-kyfalias = '0CS_TRN_GC'.

g_s_sfk-aggr = 'SUM'.

INSERT g_s_sfk INTO TABLE g_th_sfk.

*CLEAR g_s_sfk.

*g_s_sfk-kyfnm = '0CS_TRN_GC'.

*g_s_sfk-kyfalias = 'CS_TRN_TC'.

*g_s_sfk-aggr = 'SUM'.

*INSERT g_s_sfk INTO TABLE g_th_sfk.

CLEAR g_s_sfk.

g_s_sfk-kyfnm = '0CS_TRN_QTY'.

g_s_sfk-kyfalias = '0CS_TRN_QTY'.

g_s_sfk-aggr = 'SUM'.

INSERT g_s_sfk INTO TABLE g_th_sfk.

      • Fill up selection criteria.

CLEAR g_s_range.

g_s_range-chanm = '0CS_VERSION'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = '100'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = 'BCS_VERS'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'ACT'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0CS_CHART'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'ZG'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0CO_AREA'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'AZ01'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0FISCVARNT'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'K2'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0FISCYEAR'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = '2007'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0FISCPER3'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = '003'.

APPEND g_s_range TO g_t_range.

CLEAR g_s_range.

g_s_range-chanm = '0SEM_CGCOMP'.

g_s_range-sign = rs_c_range_sign-including.

g_s_range-compop = rs_c_range_opt-equal.

g_s_range-low = 'US0075'.

APPEND g_s_range TO g_t_range.

g_t_sfc = g_th_sfc.

g_t_sfk = g_th_sfk.

WHILE g_end_of_data = rs_c_false.

CALL FUNCTION 'RSDRI_INFOPROV_READ'

EXPORTING

I_INFOPROV = '0BCS_C1V11'

I_TH_SFC = g_th_sfc

I_TH_SFK = g_th_sfk

I_T_RANGE = g_t_range

  • I_TH_TABLESEL =

  • I_T_RTIME =

  • I_REFERENCE_DATE = SY-DATUM

  • I_ROLLUP_ONLY = RS_C_TRUE

  • I_T_REQUID =

  • I_SAVE_IN_TABLE = ' '

  • I_TABLENAME =

  • I_SAVE_IN_FILE = ' '

  • I_FILENAME =

  • I_PACKAGESIZE = 1000

  • I_MAXROWS = 0

  • I_AUTHORITY_CHECK = RSDRC_C_AUTHCHK-READ

  • I_CURRENCY_CONVERSION = 'X'

  • I_USE_DB_AGGREGATION = RS_C_TRUE

  • I_USE_AGGREGATES = RS_C_TRUE

  • I_READ_ODS_DELTA = RS_C_FALSE

  • I_CALLER = RSDRS_C_CALLER-RSDRI

  • I_DEBUG = RS_C_FALSE

  • I_CLEAR = RS_C_FALSE

IMPORTING

E_T_DATA = g_t_data

E_END_OF_DATA = g_end_of_data

  • E_AGGREGATE =

  • E_SPLIT_OCCURRED =

  • E_T_MSG =

CHANGING

C_FIRST_CALL = g_first_call

EXCEPTIONS

ILLEGAL_INPUT = 1

ILLEGAL_INPUT_SFC = 2

ILLEGAL_INPUT_SFK = 3

ILLEGAL_INPUT_RANGE = 4

ILLEGAL_INPUT_TABLESEL = 5

NO_AUTHORIZATION = 6

ILLEGAL_DOWNLOAD = 7

ILLEGAL_TABLENAME = 8

TRANS_NO_WRITE_MODE = 9

INHERITED_ERROR = 10

X_MESSAGE = 11

OTHERS = 12

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDWHILE.

Thanks

Former Member
0 Kudos

Sam,

Please try to debug and see whats happening. It works for me.

Thanks and Regarsd

Subray Hegde

Former Member
0 Kudos

Subray,

Thanks for the mail..

I did try doing what u r doing...but just want to confirm whether this code will work for VIRTUAL INFOCUBE also....

The cube from which i have to extract data is virtual infocube...

Does it matter?

Former Member
0 Kudos

Gurus,

Any suggestions...I am trying to extract data from the VIRTUAL INFOCUBE and it doesnt wrk and throws an exception which is not handled by the FM...What shud i do...Please guide me in solving this issue....

Thanks

Sam

former_member187400
Active Contributor
0 Kudos

Hi Sam,

Here is the useful blog for reading the data from info-provider (info-cube), there are few way to make it.

/people/dinesh.lalchand/blog/2006/06/07/reading-infocube-data-in-updatetransfer-rules

Hopefully it can help you a lot.

Regards,

Niel

  • thanks for the points you choose to assign.

Answers (0)