ABAP-动态列
DATA: wa_layo TYPE lvc_s_layo.
DATA: wa_fcat TYPE lvc_s_fcat,
it_fcat TYPE lvc_t_fcat.
DATA it_scol TYPE lvc_t_scol .
DATA: g_grid TYPE REF TO cl_gui_alv_grid.
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
<dyn_wa>,
<dyn_field>.
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data.
DATA: colname(10),
index(2).
PARAMETERS: col TYPE i."列数
CLEAR: it_fcat.
DO col TIMES." 根据条件动态生成列
index = index + 1.
CONCATENATE 'COL' index INTO colname.
PERFORM frm_add_fcat USING:
colname 'C' '描述1' '100'.
ENDDO.
" 根据it_fact生成动态表
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = it_fcat
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO <dyn_table>.
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
" 给表字段赋值
CLEAR: index.
DO col TIMES.
index = index + 1.
CONCATENATE 'COL' index INTO colname.
ASSIGN COMPONENT colname OF STRUCTURE <dyn_wa> TO <dyn_field>.
<dyn_field> = '列数据1'.
ENDDO.
APPEND <dyn_wa> TO <dyn_table>.
" 相当于给内表放入两条数据
CLEAR: index.
DO col TIMES.
index = index + 1.
CONCATENATE 'COL' index INTO colname.
ASSIGN COMPONENT colname OF STRUCTURE <dyn_wa> TO <dyn_field>.
<dyn_field> = '列数据2'.
ENDDO.
APPEND <dyn_wa> TO <dyn_table>.
CALL METHOD cl_demo_output=>write( <dyn_table> ).
CALL METHOD cl_demo_output=>display( ).
*&---------------------------------------------------------------------*
*& Form frm_add_fcat
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->VALUE1 text
* -->VALUE2 text
* -->VALUE3 text
* -->VALUE4 text
*----------------------------------------------------------------------*
FORM frm_add_fcat USING value1 value2 value3 value4.
wa_fcat-fieldname = value1.
wa_fcat-inttype = value2.
wa_fcat-reptext = value3.
wa_fcat-intlen = value4.
APPEND wa_fcat TO it_fcat.
CLEAR: wa_fcat.
ENDFORM. "frm_add_fcat
- 点赞
- 收藏
- 关注作者
评论(0)