动态显示ALV分为以下几步:
一、创建动态的fieldcat:和普通创建fieldcat的方法相同,不过通过循环去创建实现动态的列;
二、根据上一步骤创建的fieldcat创建动态的内表,使用cl_alv_table_create=>create_dynamic_table;
三、指针为动态表赋值;
四、显示ALV。
本人将以上步骤精简,做了一个小程序(画面参数p_col是将要显示的alv列数)总结,如下:
* test:动态alv
REPORT ztest_02.
* definition for data get
TYPES:BEGIN OF typ_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
END OF typ_vbap.
DATA:
gt_vbap TYPE TABLE OF typ_vbap,
st_vbap TYPE typ_vbap.
* definition for dynamic table
DATA:
t_dyntab TYPE REF TO data,
s_dyntab TYPE REF TO data.
FIELD-SYMBOLS:
<dyntab> TYPE STANDARD TABLE,
<fs_val>