一、根据2结构和一个data element 构建一个动态内表
“定义的动态内表<dyn_table> ,<DYN_WA>对应内表一行的工作区
FIELD-SYMBOLS:<dyn_table> TYPE STANDARD TABLE,
<dyn_wa> TYPE ANY.
FORM create_dynamic_table .
DATA: lt_fcat TYPE slis_t_fieldcat_alv,
ls_fcat LIKE LINE OF lt_fcat,
lt_fieldcat TYPE lvc_t_fcat,
ls_fieldcat LIKE LINE OF lt_fieldcat,
dy_table type ref to data.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'RFPOS'
CHANGING
ct_fieldcat = lt_fcat[].
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'BSEG'
CHANGING
ct_fieldcat = lt_fcat[].
clear ls_fcat.
ls_fcat-col_pos = lines( lt_fcat[] ) + 1.
ls_fcat-no_out = 'X'.
ls_fcat-fieldname = 'LOKKT_TXT30'.
ls_fcat-ref_fieldname = 'TXT20'.
ls_fcat-ref_tabname = 'SKAT'.
ls_fcat-reptext_ddic = ls_fcat-seltext_s =
ls_fcat-seltext_m = ls_fcat-seltext_l = text-133.
APPEND ls_fcat TO lt_fcat.
LOOP AT lt_fcat INTO ls_fcat. "WHERE NOT reptext_ddic IS initial.
MOVE-CORRESPONDING ls_fcat TO ls_fieldcat.
ls_fieldcat-fieldname = ls_fcat-fieldname.
ls_fieldcat-ref_field = ls_fcat-ref_fieldname.
ls_fieldcat-ref_table = ls_fcat-ref_tabname.
APPEND ls_fieldcat TO lt_fieldcat.
ENDLOOP.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_fieldcat
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO <dyn_table>.
ENDFORM.
二 、 给动态内表赋值
“ g_items 和 bseg 已经有数据的工作区
DATA:WA_NEW_LINE TYPE REF TO DATA.
CREATE DATA WA_NEW_LINE LIKE LINE OF <DYN_TABLE>.
ASSIGN WA_NEW_LINE->* TO <DYN_WA>.
move-corresponding g_items TO <DYN_WA>.
move-corresponding bseg TO <DYN_WA>.
APPEND <DYN_WA> TO <DYN_TABLE>.