074、ALV字段目录与布局设置记得有次上线前,业务盯着报表说“数量列怎么不见了”,我打开程序debug,数据内表里明明有值,ALV输出愣是不显示那列。折腾了半天,最后发现是fieldcat里fieldname写成了小写。ALV对字段名大小写敏感,但SAP的字段名本身是大写存储的,你写个fieldname = 'matnr',它找不到对应的内表字段,干脆不渲染这一列。自那以后,我给自己定了个规矩:凡是手工填fieldcat,一律复制粘贴表字段名,不手打。这毛病看着低级,真能浪费你半天时间。说回正题。ALV这东西,核心无非两件事:告诉它显示哪些字段、怎么显示,以及表格长什么样。前者就是字段目录(Field Catalog),后者就是布局设置(Layout)。这哥俩一个管“内容”,一个管“长相”,配合不好,显示出来的表格就跟你熬夜写的代码一样别扭。字段目录本质上是个内表,行类型是LVC_S_FCAT,行数等于你要显示的列数。列的顺序就是ALV输出的顺序,想调整列位置,直接调整内表行的顺序就行,不用像报表里那样折腾输出列表。构建这个内表,最笨也最可靠的办法是手工一行行填。DATA: lt_fieldcat TYPE lvc_t_fcat. DATA: ls_fieldcat LIKE LINE OF lt_fieldcat. CLEAR ls_fieldcat. ls_fieldcat-fieldname = 'MATNR'. " 注意!必须和内表字段名完全一致,大小写也一致 ls_fieldcat-ref_table = 'MA