1、使用cl_alv_table_create=
REPORT zmaschl_create_data_dynamic .
TYPE-POOLS: slis.
DATA: it_fcat TYPE slis_t_fieldcat_alv,
is_fcat LIKE LINE OF it_fcat.
DATA: it_fieldcat TYPE lvc_t_fcat,
is_fieldcat LIKE LINE OF it_fieldcat.
DATA: new_table TYPE REF TO data.
DATA: new_line TYPE REF TO data.
FIELD-SYMBOLS: >l_table< TYPE ANY TABLE,
>l_line< TYPE ANY,
>l_field< TYPE ANY.
* Build fieldcat
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SYST'
CHANGING
ct_fieldcat = it_fcat[].
LOOP AT it_fcat INTO is_fcat WHERE NOT reptext_ddic IS initial.
MOVE-CORRESPONDING is_fcat TO is_fieldcat.
is_fieldcat-fieldname = is_fcat-fieldname.
is_fieldcat-ref_field = is_fcat-fieldname.
is_fieldcat-ref_table = is_fcat-ref_tabname.
APPEND is_fieldcat TO it_fieldcat.
ENDLOOP.
* Create a new Table
CALL METHOD cl_alv_table_create= EXPORTING
it_fieldcatalog = it_fieldcat
IMPORTING
ep_table = new_table.
* Create a new Line with the same structure of the table.
ASSIGN new_table-<* TO >l_table<.
CREATE DATA new_line LIKE LINE OF >l_table<.
ASSIGN new_line-<* TO >l_line<.
* Test it...
DO 30 TIMES.
ASSIGN COMPONENT 'SUBRC' OF STRUCTURE >l_line< TO >l_field<.
>l_field< = sy-index.
INSERT >l_line< INTO TABLE >l_table<.
ENDDO.
LOOP AT >l_table< ASSIGNING >l_line<.
ASSIGN COMPONENT 'SUBRC' OF STRUCTURE >l_line< TO >l_field<.
WRITE >l_field<.
ENDLOOP.
2、使用动态创建临时程序 generate subroutine pool code name prog
message msg
line lin
word wrd
offset off.并调。
Trackback: http://tb.blog.youkuaiyun.com/TrackBack.aspx?PostId=1175996
本文介绍如何在ABAP中使用动态方式创建ALV表。主要内容包括:1) 如何构建字段目录并通过REUSE_ALV_FIELDCATALOG_MERGE函数进行合并;2) 如何创建一个新的表并填充数据。
1456

被折叠的 条评论
为什么被折叠?



