Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

infocube reading issue

alejandro_romero2
Participant
0 Likes
421

hi gurus i have posted this problem but i still not get answere, i wanto to read an infocube and i use the function module RSDRI_INFOPROV_READ but it only get records from year 2007, i wanto to get records from year 2008 or 2009 or 2006.

I have used the listcube tx and there i can see the 2006,2008,2009 and 2007 records

i use the same parameters for 2006,2007,2008,2009 i only vary the year ant this function module only returns 2007 records what is happening? what should i do?

Here is my source code :

REPORT YPRUEBAINFOCUBE.

TYPE-POOLS: rs.

TYPES: begin of t_docgl,

0cs_unit TYPE /BI0/OICS_UNIT,"

0CURKEY_GC TYPE /BI0/OICURKEY_GC, "

0FISCPER3 TYPE /BI0/OIFISCPER3,"

0CS_ITEM TYPE /BI0/OICS_ITEM, "

0FISCYEAR TYPE /BI0/OIFISCYEAR,"

0CS_TRN_GC TYPE /BI0/OICS_TRN_GC,

0CS_PARTNER TYPE /BI0/OICS_PARTNER,

end of t_docgl.

  • falta el 0CS_PLEVEL, 0CS_DIMEN , 0CS_VERSION,0CS_CHART,0FISCVARNT,0CURKEY_GC,0CS_ITEM

DATA: g_bpheader TYPE bapiplnhdr,

g_delta TYPE c.

DATA: g_s_sfc TYPE rsdri_s_sfc,

g_th_sfc TYPE rsdri_th_sfc,

g_s_range TYPE rsdri_s_range,

g_th_range TYPE rsdri_t_range,

g_s_sfk TYPE rsdri_s_sfk,

g_th_sfk TYPE rsdri_th_sfk,

g_t_sfc TYPE rsdri_t_sfc,

g_t_sfk TYPE rsdri_t_sfk,

g_t_rfcdata TYPE rsdri_t_rfcdata,

e_t_field TYPE rsdp0_t_field,

g_t_data TYPE STANDARD TABLE OF t_docgl,

g_s_data TYPE t_docgl.

DATA: g_end_of_data TYPE rs_bool,

g_first_call TYPE rs_bool.

CONSTANTS : cMQM type /BI0/OICS_UNIT VALUE 'MQM'.

  • Pantalla de seleccion

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

PARAMETERS: p_uni TYPE /BI0/OICS_UNIT,

p_ejer TYPE /BI0/OIFISCYEAR,

p_per TYPE /BI0/OIFISCPER3.

SELECTION-SCREEN END OF BLOCK B1.

PERFORM modifica_rangos.

  • Insertar campos a leer

PERFORM inserta_caracteristicas.

PERFORM inserta_keyfigures.

*

*Leer el infocubo

PERFORM lee_infocubo.

FORM modifica_rangos .

  • Parametros de entrada

*Unidad de consolidacion

IF NOT p_uni IS INITIAL.

g_s_range-chanm = '0CS_UNIT'.

g_s_range-sign = 'I'.

g_s_range-compop = 'EQ'.

g_s_range-low = p_uni. "lgx

INSERT g_s_range INTO TABLE g_th_range.

ENDIF.

*Periodo

IF NOT p_per IS INITIAL.

g_s_range-chanm = '0FISCPER3'.

g_s_range-low = p_per. "001

INSERT g_s_range INTO TABLE g_th_range.

ENDIF.

  • Ejercicio

IF NOT p_ejer IS INITIAL.

g_s_range-chanm = '0FISCYEAR'.

g_s_range-low = p_ejer. " 2009

INSERT g_s_range INTO TABLE g_th_range.

ENDIF.

*Parametros fijos para la consulta de infocubo

*no esta incluido en el documento, se debe agregar

*0CS_PLEVEL Nivel de imputacion, valor constante 00

g_s_range-chanm = '0CS_PLEVEL'.

g_s_range-low = '00'.

INSERT g_s_range INTO TABLE g_th_range.

*

*0CS_DIMEN (Vista de Consolidación, con valor constante = ?ZD?)

g_s_range-chanm = '0CS_DIMEN'.

g_s_range-low = 'ZD'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0CS_VERSION (Versión de Consolidación, con valor constante = ?001?)

g_s_range-chanm = '0CS_VERSION'.

g_s_range-low = '003'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0CS_CHART (Plan de Posiciones, con valor constante = ?ZP?)

g_s_range-chanm = '0CS_CHART'.

g_s_range-low = 'ZP'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0FISCVARNT (Variante del Ejercicio, con valor constante = ?K4?)

g_s_range-chanm = '0FISCVARNT'.

g_s_range-low = 'K4'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0CURKEY_GC (Moneda de Grupo, con valor constante ?MXN?)

  • g_s_range-chanm = '0CURKEY_GC'.

  • g_s_range-low = 'MXN'.

  • INSERT g_s_range INTO TABLE g_th_range.

    • Tomar solo información histórica si la empresa no es MQM

  • If p_uni NE cMQM.

g_s_range-chanm = '0CS_ITEM'.

g_s_range-compop = 'CP'.

g_s_range-low = '1*'. "cuentas 1+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '2*'. "cuentas 2+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '3*'. "cuentas 3+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '4*'. "cuentas 4+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '6*'. "cuentas 6+++++

INSERT g_s_range INTO TABLE g_th_range.

  • endif.

ENDFORM. " modifica_rangos

FORM inserta_caracteristicas .

CLEAR g_th_sfc.

*0CS_ITEM (Posición, equivale a la cuenta de mayor en GL)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_ITEM'.

g_s_sfc-chaalias = '0CS_ITEM'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

*0CS_UNIT (Unidad de Consolidación, equivale a la sociedad FI en GL)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_UNIT'.

g_s_sfc-chaalias = '0CS_UNIT'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

*0FISCPER3 (Periodo Contable)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0FISCYEAR'.

g_s_sfc-chaalias = '0FISCYEAR'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

*0FISCYEAR (Ejercicio)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0FISCPER3'.

g_s_sfc-chaalias = '0FISCPER3'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

**0CS_PARTNER (Unidad Asociada, Equivale a Sociedad GL Asociada en GL)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_PARTNER'.

g_s_sfc-chaalias = '0CS_PARTNER'.

g_s_sfc-orderby = 1.

INSERT g_s_sfc INTO TABLE g_th_sfc.

  • 0CURKEY_GC Moneda

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.

ENDFORM. " inserta_caracteristicas

FORM inserta_keyfigures .

*Ratios:

*0CS_TRN_GC (Valor del periodo en Moneda de Grupo, equivale al importe

  • del documento en GL)

CLEAR: g_th_sfk,

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.

ENDFORM. " insert_keyfigures

*&----


*

*& Form lee_infocubo

*&----


*

  • Obtiene los datos del infocubo según los parámetros establecidos

*----


*

FORM lee_infocubo.

*Bandera de fin de datos

g_end_of_data = rs_c_false.

  • Establece que es la primer llamada a la función de lectura

g_first_call = rs_c_true.

WHILE g_end_of_data = rs_c_false.

CALL FUNCTION 'RSDRI_INFOPROV_READ'

EXPORTING

i_infoprov = 'ZBCS_C50'

i_th_sfc = g_th_sfc

i_th_sfk = g_th_sfk

i_t_range = g_th_range

i_reference_date = sy-datum

i_packagesize = ' '

i_authority_check = 'R'

IMPORTING

E_T_DATA = g_t_data

e_end_of_data = g_end_of_data

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

ncum_not_supported = 7

illegal_download = 8

illegal_tablename = 9

OTHERS = 11.

IF SY-SUBRC <> 0.

WRITE : 'Error durante consulta de cubo'.

ENDIF.

ENDWHILE.

ENDFORM. " lee_infocubo

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
374

Hi.

Firstly, set value of I_PACKAGESIZE parameter larger than 1000.

hi gurus i have posted this problem but i still not get answere, i wanto to read an infocube and i use the function module RSDRI_INFOPROV_READ but it only get records from year 2007, i wanto to get records from year 2008 or 2009 or 2006.

I have used the listcube tx and there i can see the 2006,2008,2009 and 2007 records

i use the same parameters for 2006,2007,2008,2009 i only vary the year ant this function module only returns 2007 records what is happening? what should i do?

Here is my source code :

REPORT YPRUEBAINFOCUBE.

TYPE-POOLS: rs.

TYPES: begin of t_docgl,

0cs_unit TYPE /BI0/OICS_UNIT,"

0CURKEY_GC TYPE /BI0/OICURKEY_GC, "

0FISCPER3 TYPE /BI0/OIFISCPER3,"

0CS_ITEM TYPE /BI0/OICS_ITEM, "

0FISCYEAR TYPE /BI0/OIFISCYEAR,"

0CS_TRN_GC TYPE /BI0/OICS_TRN_GC,

0CS_PARTNER TYPE /BI0/OICS_PARTNER,

end of t_docgl.

  • falta el 0CS_PLEVEL, 0CS_DIMEN , 0CS_VERSION,0CS_CHART,0FISCVARNT,0CURKEY_GC,0CS_ITEM

DATA: g_bpheader TYPE bapiplnhdr,

g_delta TYPE c.

DATA: g_s_sfc TYPE rsdri_s_sfc,

g_th_sfc TYPE rsdri_th_sfc,

g_s_range TYPE rsdri_s_range,

g_th_range TYPE rsdri_t_range,

g_s_sfk TYPE rsdri_s_sfk,

g_th_sfk TYPE rsdri_th_sfk,

g_t_sfc TYPE rsdri_t_sfc,

g_t_sfk TYPE rsdri_t_sfk,

g_t_rfcdata TYPE rsdri_t_rfcdata,

e_t_field TYPE rsdp0_t_field,

g_t_data TYPE STANDARD TABLE OF t_docgl,

g_s_data TYPE t_docgl.

DATA: g_end_of_data TYPE rs_bool,

g_first_call TYPE rs_bool.

CONSTANTS : cMQM type /BI0/OICS_UNIT VALUE 'MQM'.

  • Pantalla de seleccion

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.

PARAMETERS: p_uni TYPE /BI0/OICS_UNIT,

p_ejer TYPE /BI0/OIFISCYEAR,

p_per TYPE /BI0/OIFISCPER3.

SELECTION-SCREEN END OF BLOCK B1.

PERFORM modifica_rangos.

  • Insertar campos a leer

PERFORM inserta_caracteristicas.

PERFORM inserta_keyfigures.

*

*Leer el infocubo

PERFORM lee_infocubo.

FORM modifica_rangos .

  • Parametros de entrada

*Unidad de consolidacion

IF NOT p_uni IS INITIAL.

g_s_range-chanm = '0CS_UNIT'.

g_s_range-sign = 'I'.

g_s_range-compop = 'EQ'.

g_s_range-low = p_uni. "lgx

INSERT g_s_range INTO TABLE g_th_range.

ENDIF.

*Periodo

IF NOT p_per IS INITIAL.

g_s_range-chanm = '0FISCPER3'.

g_s_range-low = p_per. "001

INSERT g_s_range INTO TABLE g_th_range.

ENDIF.

  • Ejercicio

IF NOT p_ejer IS INITIAL.

g_s_range-chanm = '0FISCYEAR'.

g_s_range-low = p_ejer. " 2009

INSERT g_s_range INTO TABLE g_th_range.

ENDIF.

*Parametros fijos para la consulta de infocubo

*no esta incluido en el documento, se debe agregar

*0CS_PLEVEL Nivel de imputacion, valor constante 00

g_s_range-chanm = '0CS_PLEVEL'.

g_s_range-low = '00'.

INSERT g_s_range INTO TABLE g_th_range.

*

*0CS_DIMEN (Vista de Consolidación, con valor constante = ?ZD?)

g_s_range-chanm = '0CS_DIMEN'.

g_s_range-low = 'ZD'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0CS_VERSION (Versión de Consolidación, con valor constante = ?001?)

g_s_range-chanm = '0CS_VERSION'.

g_s_range-low = '003'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0CS_CHART (Plan de Posiciones, con valor constante = ?ZP?)

g_s_range-chanm = '0CS_CHART'.

g_s_range-low = 'ZP'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0FISCVARNT (Variante del Ejercicio, con valor constante = ?K4?)

g_s_range-chanm = '0FISCVARNT'.

g_s_range-low = 'K4'.

INSERT g_s_range INTO TABLE g_th_range.

*

**0CURKEY_GC (Moneda de Grupo, con valor constante ?MXN?)

  • g_s_range-chanm = '0CURKEY_GC'.

  • g_s_range-low = 'MXN'.

  • INSERT g_s_range INTO TABLE g_th_range.

    • Tomar solo información histórica si la empresa no es MQM

  • If p_uni NE cMQM.

g_s_range-chanm = '0CS_ITEM'.

g_s_range-compop = 'CP'.

g_s_range-low = '1*'. "cuentas 1+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '2*'. "cuentas 2+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '3*'. "cuentas 3+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '4*'. "cuentas 4+++++

INSERT g_s_range INTO TABLE g_th_range.

g_s_range-low = '6*'. "cuentas 6+++++

INSERT g_s_range INTO TABLE g_th_range.

  • endif.

ENDFORM. " modifica_rangos

FORM inserta_caracteristicas .

CLEAR g_th_sfc.

*0CS_ITEM (Posición, equivale a la cuenta de mayor en GL)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_ITEM'.

g_s_sfc-chaalias = '0CS_ITEM'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

*0CS_UNIT (Unidad de Consolidación, equivale a la sociedad FI en GL)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_UNIT'.

g_s_sfc-chaalias = '0CS_UNIT'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

*0FISCPER3 (Periodo Contable)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0FISCYEAR'.

g_s_sfc-chaalias = '0FISCYEAR'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

*0FISCYEAR (Ejercicio)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0FISCPER3'.

g_s_sfc-chaalias = '0FISCPER3'.

g_s_sfc-orderby = 0.

INSERT g_s_sfc INTO TABLE g_th_sfc.

**0CS_PARTNER (Unidad Asociada, Equivale a Sociedad GL Asociada en GL)

CLEAR g_s_sfc.

g_s_sfc-chanm = '0CS_PARTNER'.

g_s_sfc-chaalias = '0CS_PARTNER'.

g_s_sfc-orderby = 1.

INSERT g_s_sfc INTO TABLE g_th_sfc.

  • 0CURKEY_GC Moneda

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.

ENDFORM. " inserta_caracteristicas

FORM inserta_keyfigures .

*Ratios:

*0CS_TRN_GC (Valor del periodo en Moneda de Grupo, equivale al importe

  • del documento en GL)

CLEAR: g_th_sfk,

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.

ENDFORM. " insert_keyfigures

*&----


*

*& Form lee_infocubo

*&----


*

  • Obtiene los datos del infocubo según los parámetros establecidos

*----


*

FORM lee_infocubo.

*Bandera de fin de datos

g_end_of_data = rs_c_false.

  • Establece que es la primer llamada a la función de lectura

g_first_call = rs_c_true.

WHILE g_end_of_data = rs_c_false.

CALL FUNCTION 'RSDRI_INFOPROV_READ'

EXPORTING

i_infoprov = 'ZBCS_C50'

i_th_sfc = g_th_sfc

i_th_sfk = g_th_sfk

i_t_range = g_th_range

i_reference_date = sy-datum

i_packagesize = ' '

i_authority_check = 'R'

IMPORTING

E_T_DATA = g_t_data

e_end_of_data = g_end_of_data

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

ncum_not_supported = 7

illegal_download = 8

illegal_tablename = 9

OTHERS = 11.

IF SY-SUBRC <> 0.

WRITE : 'Error durante consulta de cubo'.

ENDIF.

ENDWHILE.

ENDFORM. " lee_infocubo

1 REPLY 1
Read only

Former Member
0 Likes
375

Hi.

Firstly, set value of I_PACKAGESIZE parameter larger than 1000.