Ejemplos Varios ASSIGN COMPONENT
EJEMPLO 1
REPORT ZTEST.
* OBTIENE COMPONENTES DE ESTRUCTURA PA0001
data: l_index(2) type n,
l_string type string,
l_0033 type p0033.
field-symbols type any.
data: descr_struc_ref type ref to cl_abap_structdescr,
lt_components type abap_compdescr_tab,
ls_components like line of lt_components.
descr_struc_ref ?= cl_abap_typedescr=>describe_by_name('PA0001').
lt_components = descr_struc_ref->components.
loop at lt_components into ls_components.
write:/ ls_components-name.
endloop.
EJEMPLO 2
REPORT ZTEST.
* OBTIENE COMPONENTES DE ESTRUCTURA LOCAL GS_RECORD
types: begin of ty_rec,
campo1(20) type c,
campo2(34) type c,
end of ty_rec.
data gs_record type ty_rec.
data: l_index(2) type n,
l_string type string,
l_0033 type p0033.
field-symbols type any.
data: descr_struc_ref type ref to cl_abap_structdescr,
lt_components type abap_compdescr_tab,
ls_components like line of lt_components.
descr_struc_ref ?= cl_abap_typedescr=>describe_by_data( gs_record ).
lt_components = descr_struc_ref->components.
loop at lt_components into ls_components.
write:/ ls_components-name.
endloop.
EJEMPLO 3
si tenemos
data: begin of gs_form_data,
ZTABLE(25),
ZROW(10),
ZCOLUMN(25),
ZVALUE(50),
end of gs_form_data.
data gt_form_data like table of gs_form_data with header line.
TYPES: BEGIN OF ty_data_1,
pos(3) TYPE n,
org(30), "org id/name
total TYPE i,
total_w TYPE i, "total women
total_m TYPE i, "total men
total_mi TYPE i, "total minorities
total_b TYPE i, "total black
total_h TYPE i, "total hispanic
total_a TYPE i, "total asiam
total_i TYPE i, "total Am.Indian/Alaskian
END OF ty_data_1.
TYPES ty_t_data_1 TYPE TABLE OF ty_data_1.
DATA gs_data_1 TYPE ty_data_1.
DATA gt_data_1 TYPE ty_t_data_1.
* Queremos pasar el contenido de gt_data_1 a la tabla GT_FORM_DATA
DATA ld_tabix LIKE sy-tabix.
LOOP AT gt_data_1 INTO gs_data_1.
ld_tabix = sy-tabix.
PERFORM get_field_values USING gs_data_1
'GS_DATA_1'
ld_tabix.
ENDLOOP.
donde
FORM get_field_values USING gs_data_1 TYPE data
p_name TYPE string "Nombre de la tabla
p_tabix TYPE i.
DATA: l_index(2) TYPE n,
l_string TYPE string.
FIELD-SYMBOLS TYPE ANY.
DATA: descr_struc_ref TYPE REF TO cl_abap_structdescr,
lt_components TYPE abap_compdescr_tab,
ls_components LIKE LINE OF lt_components.
DATA lr_tabledescr TYPE REF TO cl_abap_tabledescr.
descr_struc_ref ?= cl_abap_typedescr=>describe_by_data( gs_data_1 ).
*lr_tabledescr ?= cl_abap_typedescr=>describe_by_data( ld_t ).
lt_components = descr_struc_ref->components.
LOOP AT lt_components INTO ls_components.
CONCATENATE p_name '-' ls_components-name INTO l_string.
ASSIGN (l_string) TO.
gt_form_data-ztable = p_name.
gt_form_data-zcolumn = ls_components-name.
gt_form_data-zrow = p_tabix.
gt_form_data-zvalue =.
APPEND gt_form_data.
* l_string = ls_components-name.
ENDLOOP.
ENDFORM.
* Ahora la funcion "inversa" de GT_FORM_DATA a GT_DATA_1
DEFINE mc_read_tables.
clear gt_&1.
clear gs_&1.
sort gt_form_data by ztable zrow.
loop at gt_form_data into wa where ztable = &2.
at new zrow.
if gs_&1 is not initial.
append gs_&1 to gt_&1.
clear gs_&1.
endif.
endat.
concatenate 'GS_' wa-ztable+3
'-'
wa-zcolumn
into l_string.
assign (l_string) to.
= wa-zvalue.
endloop.
if sy-subrc = 0.
append gs_&1 to gt_&1.
clear gs_&1.
endif.
END-OF-DEFINITION.
DATA l_string TYPE string.
FIELD-SYMBOLS.
mc_read_tables data_1 'GT_DATA_1'.
EJEMPLO 1
REPORT ZTEST.
* OBTIENE COMPONENTES DE ESTRUCTURA PA0001
data: l_index(2) type n,
l_string type string,
l_0033 type p0033.
field-symbols
data: descr_struc_ref type ref to cl_abap_structdescr,
lt_components type abap_compdescr_tab,
ls_components like line of lt_components.
descr_struc_ref ?= cl_abap_typedescr=>describe_by_name('PA0001').
lt_components = descr_struc_ref->components.
loop at lt_components into ls_components.
write:/ ls_components-name.
endloop.
EJEMPLO 2
REPORT ZTEST.
* OBTIENE COMPONENTES DE ESTRUCTURA LOCAL GS_RECORD
types: begin of ty_rec,
campo1(20) type c,
campo2(34) type c,
end of ty_rec.
data gs_record type ty_rec.
data: l_index(2) type n,
l_string type string,
l_0033 type p0033.
field-symbols
data: descr_struc_ref type ref to cl_abap_structdescr,
lt_components type abap_compdescr_tab,
ls_components like line of lt_components.
descr_struc_ref ?= cl_abap_typedescr=>describe_by_data( gs_record ).
lt_components = descr_struc_ref->components.
loop at lt_components into ls_components.
write:/ ls_components-name.
endloop.
EJEMPLO 3
si tenemos
data: begin of gs_form_data,
ZTABLE(25),
ZROW(10),
ZCOLUMN(25),
ZVALUE(50),
end of gs_form_data.
data gt_form_data like table of gs_form_data with header line.
TYPES: BEGIN OF ty_data_1,
pos(3) TYPE n,
org(30), "org id/name
total TYPE i,
total_w TYPE i, "total women
total_m TYPE i, "total men
total_mi TYPE i, "total minorities
total_b TYPE i, "total black
total_h TYPE i, "total hispanic
total_a TYPE i, "total asiam
total_i TYPE i, "total Am.Indian/Alaskian
END OF ty_data_1.
TYPES ty_t_data_1 TYPE TABLE OF ty_data_1.
DATA gs_data_1 TYPE ty_data_1.
DATA gt_data_1 TYPE ty_t_data_1.
* Queremos pasar el contenido de gt_data_1 a la tabla GT_FORM_DATA
DATA ld_tabix LIKE sy-tabix.
LOOP AT gt_data_1 INTO gs_data_1.
ld_tabix = sy-tabix.
PERFORM get_field_values USING gs_data_1
'GS_DATA_1'
ld_tabix.
ENDLOOP.
donde
FORM get_field_values USING gs_data_1 TYPE data
p_name TYPE string "Nombre de la tabla
p_tabix TYPE i.
DATA: l_index(2) TYPE n,
l_string TYPE string.
FIELD-SYMBOLS
DATA: descr_struc_ref TYPE REF TO cl_abap_structdescr,
lt_components TYPE abap_compdescr_tab,
ls_components LIKE LINE OF lt_components.
DATA lr_tabledescr TYPE REF TO cl_abap_tabledescr.
descr_struc_ref ?= cl_abap_typedescr=>describe_by_data( gs_data_1 ).
*lr_tabledescr ?= cl_abap_typedescr=>describe_by_data( ld_t ).
lt_components = descr_struc_ref->components.
LOOP AT lt_components INTO ls_components.
CONCATENATE p_name '-' ls_components-name INTO l_string.
ASSIGN (l_string) TO
gt_form_data-ztable = p_name.
gt_form_data-zcolumn = ls_components-name.
gt_form_data-zrow = p_tabix.
gt_form_data-zvalue =
APPEND gt_form_data.
* l_string = ls_components-name.
ENDLOOP.
ENDFORM.
* Ahora la funcion "inversa" de GT_FORM_DATA a GT_DATA_1
DEFINE mc_read_tables.
clear gt_&1.
clear gs_&1.
sort gt_form_data by ztable zrow.
loop at gt_form_data into wa where ztable = &2.
at new zrow.
if gs_&1 is not initial.
append gs_&1 to gt_&1.
clear gs_&1.
endif.
endat.
concatenate 'GS_' wa-ztable+3
'-'
wa-zcolumn
into l_string.
assign (l_string) to
endloop.
if sy-subrc = 0.
append gs_&1 to gt_&1.
clear gs_&1.
endif.
END-OF-DEFINITION.
DATA l_string TYPE string.
FIELD-SYMBOLS
mc_read_tables data_1 'GT_DATA_1'.