2014 Jan 22 8:15 AM
Hello,
I'd like to use FM RSDRI_INFOPROV_READ to read time characteristics of an infocube. I found the report RSDRI_INFOPROV_READ_DEMO but this is designed only for one infocube. I'd like to modify this example so that I can use it for different infocubes.
Are any code examples how I could do this? I use the search but can't find a useful result.
Thanks in advance
Best regards
Ella
Hi Ella
Can you please document here how did you solve the problem so that some one else can use it
Nabheet
2014 Jan 23 8:09 AM
2014 Jan 23 8:23 AM
Hi Ella
Can you please document here how did you solve the problem so that some one else can use it
Nabheet
2021 Mar 23 10:38 AM
No one cares if you solved the problem or not. Just post the solution if you have.
2014 Jan 28 1:50 PM
This is my solution: At the end <fs_table> contains the data of selected InfoCube.
DATA: l_t_dime_iobj TYPE rsd_t_dime_iobj,
l_s_dime_iobj LIKE LINE OF l_t_dime_iobj,
l_t_sfc TYPE rsdri_th_sfc,
l_s_sfc TYPE rsdri_s_sfc,
l_t_sfk TYPE rsdri_th_sfk,
l_t_tot_comp TYPE cl_abap_structdescr=>component_table,
l_t_comp TYPE cl_abap_structdescr=>component_table,
l_s_comp LIKE LINE OF l_t_comp,
v_iobnm TYPE char30,
v_end_of_data TYPE rs_bool,
v_first_call TYPE rs_bool.
FIELD-SYMBOLS: <fs_table> TYPE ANY TABLE,
<fs_line> TYPE ANY,
<fs_field>.
* Select all InfoObjects of InfoCube
CALL FUNCTION 'RSD_CUBE_GET'
EXPORTING
i_infocube = 'Z_TEST'
i_objvers = 'A'
IMPORTING
e_t_dime_iobj = l_t_dime_iobj
EXCEPTIONS
infocube_not_found = 1
illegal_input = 2
OTHERS = 3.
LOOP AT l_t_dime_iobj INTO l_s_dime_iobj
* Techn. name of characteristic
l_s_sfc-chanm = l_s_dime_iobj-iobjnm.
* Name of corresponding column in <lt_table>
l_s_sfc-chaalias = l_s_dime_iobj-iobjnm+1.
* no ORDER-BY
l_s_sfc-orderby = '0'.
* Add entry to list of characteristics
INSERT l_s_sfc INTO TABLE l_t_sfc.
CONCATENATE '/BI0/OI' l_s_dime_iobj-iobjnm+1 INTO v_iobnm.
* Get every components of InfoObject
ref_descr = cl_abap_typedescr=>describe_by_name( v_iobnm ).
CASE ref_descr->type_kind.
WHEN 'STRING'. ref_w_typ = cl_abap_elemdescr=>get_string( ).
WHEN 'XSTRING'. ref_w_typ = cl_abap_elemdescr=>get_xstring( ).
WHEN 'I'. ref_w_typ = cl_abap_elemdescr=>get_i( ).
WHEN 'F'. ref_w_typ = cl_abap_elemdescr=>get_f( ).
WHEN 'D'. ref_w_typ = cl_abap_elemdescr=>get_d( ).
WHEN 'T'. ref_w_typ = cl_abap_elemdescr=>get_t( ).
WHEN 'C'. ref_w_typ = cl_abap_elemdescr=>get_c( p_length = ref_descr->length / 2 ).
WHEN 'N'. ref_w_typ = cl_abap_elemdescr=>get_n( p_length = ref_descr->length / 2 ).
WHEN 'X'. ref_w_typ = cl_abap_elemdescr=>get_x( p_length = ref_descr->length / 2 ).
WHEN 'P'. ref_w_typ = cl_abap_elemdescr=>get_p( p_length = ref_descr->length / 2 p_decimals = '0' ).
ENDCASE.
* Field type
l_s_comp-type = ref_w_typ.
* Field name
l_s_comp-name = l_s_dime_iobj-iobjnm+1.
* Add entry to component table
APPEND l_s_comp TO l_t_tot_comp.
ENDLOOP.
* Create new type from component table
ref_obj_struc = cl_abap_structdescr=>create( l_t_tot_comp ).
* Create new table type
ref_obj_table ?= cl_abap_tabledescr=>create( ref_obj_struc ).
* Create internal table and assign to Field Symbol
CREATE DATA ref_obj_data TYPE HANDLE ref_obj_table.
ASSIGN ref_obj_data->* TO <fs_table>.
v_end_of_data = rs_c_false.
v_first_call = rs_c_true.
WHILE v_end_of_data = rs_c_false.
CALL FUNCTION 'RSDRI_INFOPROV_READ'
EXPORTING
i_infoprov = 'Z_TEST'
i_th_sfc = l_t_sfc
i_th_sfk = l_t_sfk
IMPORTING
e_t_data = <fs_table>
e_end_of_data = v_end_of_data
CHANGING
c_first_call = v_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 = 8
illegal_tablename = 9
OTHERS = 11.
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |