"取结构体的字段个数
form describe_line
using u_structure type any
changing c_line type i.
data: l_line type i.
clear : l_line, c_line.
field-symbols: <fs_structure>.
do .
assign component sy-index of structure u_structure to <fs_structure>.
if sy-subrc <> 0.
exit.
endif.
l_line = l_line + 1.
enddo.
c_line = l_line.
unassign: <fs_structure>.
endform.
"将单列字符串内表的值赋给结构体
form fill_structure_from_table
using u_itab type str_tab "table of string
changing c_structure type any
c_tab_return type bapiret2_t.
data: l_tab type table of string,
l_str_ret type bapiret2,
exc type ref to cx_sy_conversion_error. "全局异常类
field-symbols: <fs_structure>.
field-symbols: <fs_tab> like line of l_tab.
l_tab = u_itab.
try.
loop at l_tab assigning <fs_tab>.
assign component sy-tabix of structure c_structure to <fs_structure>.
if sy-subrc <> 0.
exit.
endif.
<fs_structure> = <fs_tab> .
endloop.
unassign: <fs_structure>,
<fs_tab>.
catch cx_sy_conversion_error into exc.
l_str_ret-message = exc->get_longtext( ).
l_str_ret-type = 'E'.
append l_str_ret to c_tab_return.
endtry.
endform.