RTTI - Run Time Type Identification
interface lif_get_name_inn_kpp.
methods:
prepare_uni
importing
reference(i_ref_tab) type table,
* ...
endinterface. "lif_get_name_inn_kpp
*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
class lcl_get_name_inn_kpp definition create public.
public section.
interfaces: lif_get_name_inn_kpp.
* ...
private section.
data: t_vkont_2dat type tt_vkont_2dat.
* ...
endclass. "lcl_get_name_inn_kpp DEFINITION
*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
class lcl_get_name_inn_kpp implementation.
method lif_get_name_inn_kpp~prepare_uni.
data: lo_table_type_s type ref to cl_abap_tabledescr,
lo_struct_type_s type ref to cl_abap_structdescr,
lt_comp_tab_s type cl_abap_structdescr=>included_view,
lo_table_type_t type ref to cl_abap_tabledescr,
lo_struct_type_t type ref to cl_abap_structdescr,
lt_comp_tab_t type cl_abap_structdescr=>included_view,
ls_data type ref to data,
l_index type i.
field-symbols: <comp> like line of lt_comp_tab_s,
<line_s> type any,
<field_s> type any,
<line_t> type any,
<field_t> type any.
data: ls_vkont_2dat type ty_vkont_2dat.
field-symbols: <lfs_dfkk> type t_dfkk_,
<lfs_vkont_2dat> type ty_vkont_2dat.
lo_table_type_s ?= cl_abap_typedescr=>describe_by_data( i_ref_tab ).
lo_struct_type_s ?= lo_table_type_s->get_table_line_type( ).
lt_comp_tab_s = lo_struct_type_s->get_included_view( ).
lo_table_type_t ?= cl_abap_typedescr=>describe_by_data( me->t_vkont_2dat ).
lo_struct_type_t ?= lo_table_type_t->get_table_line_type( ).
lt_comp_tab_t = lo_struct_type_t->get_included_view( ).
create data ls_data type handle lo_struct_type_t.
assign ls_data->* to <line_t>.
loop at i_ref_tab assigning <line_s>.
clear <line_t>.
loop at lt_comp_tab_t assigning <comp>.
assign component <comp>-name of structure <line_t> to <field_t>.
assign component <comp>-name of structure <line_s> to <field_s>.
<field_t> = <field_s>.
endloop.
insert <line_t> into table me->t_vkont_2dat.
endloop.
endmethod.
* ...
endclass. "lcl_get_name_inn_kpp IMPLEMENTATION