填充 field catalog 是 使用 ALV 显示数据的一个必须内容。本篇说明如何填充 field catalog。接着上一篇的示例。
手工填充
这种方法在开发人员中应用的最广泛,手工为每一个需要输出的 ALV 填充 field catalog 。下面的示例说明了这种方法:
因为代码的重复,常见的方式是将填充 field catalog 的代码放在一个子例程或者宏定义中:
子例程的代码请自行参考上一篇博文。
自动填充
自动填充的方法在上一篇已经讲解过。因为自动填充的比较实用,我把它写在一个专门的函数中,函数名:Z_FALV_FIELD_CATALOG。
创建一个 Function Group: ZALVGROUP,在函数组的 include 程序 LZALVGROUPTOP 中引入 slis,以及定义获取结构的子例程:
新建一个名为 Z_FALV_FIELD_CATALOG 的函数,考虑到每个内表的数据结构都不一样,所以将 lt_output 参数的类型设置为 any table。
field_catalog 参数(表类型)
然后编写如下的代码:
有了 Z_FALV_FIELD_CATALOG 函数,输出数据到 ALV 就简单多了:
REUSE_ALV_FIELDCATALOG_MERGE
对于老式的内表类型,可以通过 REUSE_ALV_FIELDCATALOG_MERGE
函数来填充 field catalog。比如从 SPFLI 表获取数据填充 field catalog,函数的 i_structure_name
参数设置为 SPFLI:
如果根据内表的结构来填充 field catalog,通过 i_internal_tabname
参数。这种方法有诸多限制,代码中有说明: