Sunteți pe pagina 1din 3

FUNCTION Z_GET_INFOPROV_INFO.

*"---------------------------------------------------------------------*"*"Local Interface: *" IMPORTING *" VALUE(INFOPROVDER) TYPE RSINFOPROV *" VALUE(OBJVERS) TYPE RSOBJVERS *" EXPORTING *" VALUE(SYSTEM_ID) TYPE CHAR08 *" CHANGING *" VALUE(S_SYS_DTA) TYPE RSD_S_DTA *" VALUE(T_SYS_PRO) TYPE RSD_T_DTA_PRO *" VALUE(T_SYS_PART) TYPE RSD_T_CUBE_PART *" VALUE(T_SYS_MULTI) TYPE RSD_T_MULTI_IOBJ *" VALUE(T_SYS_INDX_IOBJ) TYPE RSD_T_ODSO_INDX_IOBJ *" VALUE(T_SYS_ATR) TYPE RSDO_T_ATR *" VALUE(T_SYS_ATR_NAV) TYPE RSDO_T_ATR_NAV *" VALUE(T_SYS_INDX) TYPE RSD_T_ODSO_INDX *" VALUE(T_SYS_VAL_IOBJ) TYPE RSD_T_IC_VAL_IOBJ *"----------------------------------------------------------------------

data: iset_obj data: t_sys_dta r_dta r_iobj

type type type type

rsdiobjnm. rsd_t_dta, ref to cl_rsd_dta, ref to cl_rsd_iobj.

field-symbols: <fs_sys_pro> type rsd_s_dta_pro. system_id = sy-sysid. if s_sys_dta-infoprov is initial. * get all infoproviders call method cl_rsd_dta=>get_all exporting i_objvers = objvers i_tlogo = '%' i_io_type = '%' i_dta_view = 'I' i_incl_aggr = ' ' i_incl_trex = ' ' importing e_t_dta = t_sys_dta. read table t_sys_dta into s_sys_dta with key infoprov = infoprovder. endif. cl_rsd_dta=>factory( exporting i_infoprov = receiving r_r_dta = exceptions not_found others

s_sys_dta-infoprov r_dta = 1 = 2 ).

if sy-subrc = 0. r_dta->dta_get_info( exporting i_with_atr_nav = rs_c_true importing e_t_dta_pro = t_sys_pro exceptions others = 2 ). if sy-subrc <> 0. "raise no data exit. endif. endif. if s_sys_dta-tlogo = rs_c_tlogo-infoset. loop at t_sys_pro assigning <fs_sys_pro>. if <fs_sys_pro>-iobjnm cs rsd_c_iset_delimiter. call function 'RSD_IOBJNM_GET_FROM_INFOSET' exporting i_iset_iobjnm = <fs_sys_pro>-iobjnm importing e_iobjnm = iset_obj exceptions name_error = 1 no_field = 2. concatenate <fs_sys_pro>-iobjnm ' . <fs_sys_pro>-iobjnm = iset_obj. endif. endloop. endif. if s_sys_dta-tlogo = rs_c_tlogo-multiprovider. call function 'RSD_CUBE_PART_GET' exporting i_infocube = s_sys_dta-infoprov i_objvers = objvers i_bypass_buffer = ' ' i_with_atr_nav = 'X' importing e_t_cube_part = t_sys_part e_t_multi_iobj = t_sys_multi exceptions infocube_not_found = 1 infocube_not_multi = 2 part_cubes_not_found = 3 illegal_input = 4 others = 5. endif. if s_sys_dta-tlogo = rs_c_tlogo-infocube and not s_sys_dta-ncumtim is initial. call function 'RSD_CUBE_VAL_IOBJ_GET' exporting i_infocube = s_sys_dta-infoprov (' iset_obj ')' into iset_obj

i_objvers importing e_t_ic_val_iobj endif.

= objvers = t_sys_val_iobj.

if s_sys_dta-tlogo = rs_c_tlogo-ods_object. loop at t_sys_pro assigning <fs_sys_pro>. if <fs_sys_pro>-dimension is initial. <fs_sys_pro>-dimension = 'DATA'. endif. endloop. call method cl_rsd_odso=>get_indx_static exporting i_odsobject = s_sys_dta-infoprov i_objvers = objvers importing e_t_indx_iobj = t_sys_indx_iobj e_t_odso_indx = t_sys_indx. endif. if s_sys_dta-tlogo = rs_c_tlogo-infoobject. loop at t_sys_pro assigning <fs_sys_pro>. if <fs_sys_pro>-dimension = 'DATA'. <fs_sys_pro>-dimension = 'ATTR'. endif. if <fs_sys_pro>-dimension = 'KEY' and <fs_sys_pro>-infoprov <> <fs_sys_pro>-iobjnm. <fs_sys_pro>-dimension = 'COMPOUND'. endif. endloop. r_iobj = cl_rsd_iobj=>factory( s_sys_dta-infoprov ). call method r_iobj->get_info importing e_t_atr = t_sys_atr e_t_atr_nav = t_sys_atr_nav. endif. ENDFUNCTION.

S-ar putea să vă placă și