[ ABAP老白 ](javascript:void\(0\);)
对于初写ALV的ABAPer,it_fieldcat参数经常有一些隐藏的小坑,需要多加注意。
多谢QQ群(15881589)的各位大顾,这篇文章是根据群里大顾发言整理。
目录:
详细介绍:
01、SAP运行时是区分大小写的,也就是说,'a'和'A'在SAP运行时是不同的字符,有同学在FIELDCAT里面使用了小写或者大小写混合的字段名,SAP就不会认识,导致出错。其实,不仅仅是FIELDCAT,程序任何地方最好都要注意大小写。
02、导出到Excel少一位,具体见:http://blog.chinaunix.net/uid-8527621-id-2029555.html,简单说就是加上参考表和参考字段就好了。
03、FIELDCAT添加了新的字段,ALV却不显示!看看是不是有默认的Layout变式吧。
04、显示的字段,物料的前导零没去掉、单位是内部单位、WBS元素成了数字。。。这一切的原因都是来自于CONVERTION转换,没有做内外部转换,加上参考表和参考字段吧。要么这样:fldct-
edit_mask = '==MATN1'.
05、在可编辑的ALV里面,数值型字段修改的时候,会把数据缩小100(1000)倍,只要根据情况设置一下小数位就可以了:fldcat-
decimals_out = 3.06、这个不仅仅是FIELDCAT的事儿,有时候LAYOUT设置不对也会导致DUMP,比如设置is_layout-coltab_fieldname =
'CELLC'.但是内表根本就没有CELLC这个字段,就不行了。
08、比如物料号,18位,但是筛选弹出来的窗口只能输入10位。这个可以通过添加参考表参考字段解决,也可以使用fldct \- edit_mask =
'==MATN1' . ,还有设置fldct \- intlen = 18 .
10、ALV的字段参考了数据字段的内容,但是在修改了数据元素或者域后,ALV字段并没有立即变成修改后的样子,然后第二天莫名其妙好了。这个实际上是SAP上下文的锅,只需要运行一下程序BALVBUFDEL,重置下ALV缓冲区就可以了。
11、SAP开发有句行话:有数值必有单位,有金额必有货币。ALV显示也是这样,如果不给指定单位或者货币字段,显示的可能就是不正确的。数值字段:fldct
\- qfieldname = 'MEINS' . 金额字段:fldct \- cfieldname = 'WAERS' .
总结:
如果方便,最好是写上参考表和参考字段,实在不愿写用一个偷懒的办法:
根据实际情况修改一下既可以。