2008 Dec 09 11:46 PM
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
2008 Dec 10 4:25 AM
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
2008 Dec 10 4:25 AM
Hi.
Firstly, set value of I_PACKAGESIZE parameter larger than 1000.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |