【转】ABAP的坑5

来源:互联网 发布:网络文明礼仪 编辑:程序博客网 时间:2024/06/07 08:24

对于初写ALV的ABAPer,it_fieldcat参数经常有一些隐藏的小坑,需要多加注意。

目录:

01、字段名大小写的问题

02、导出到Excel或者文本最后一位丢失

03、默认变式导致改了FLDCAT看不到效果

04、CONVERTION转换

05、编辑数值(数量、金额)字段总是给变成小数

06、汇总的时候DUMP

07、导出的时候DUMP

08、筛选的时候,长度不对

09、可编辑字段不指定输出长度,编辑的时候默认只能输入10位

10、 改变了数据元素或者domain之后,ALV字段没反应 

11、金额和数值显示小数位的问题


详细介绍:

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这个字段,就不行了。


07、同06.


08、比如物料号,18位,但是筛选弹出来的窗口只能输入10位。这个可以通过添加参考表参考字段解决,也可以使用fldct-edit_mask '==MATN1'. ,还有设置fldct-intlen 18. 


09、同08


10、ALV的字段参考了数据字段的内容,但是在修改了数据元素或者域后,ALV字段并没有立即变成修改后的样子,然后第二天莫名其妙好了。这个实际上是SAP上下文的锅,只需要运行一下程序BALVBUFDEL,重置下ALV缓冲区就可以了。


11、SAP开发有句行话:有数值必有单位,有金额必有货币。ALV显示也是这样,如果不给指定单位或者货币字段,显示的可能就是不正确的。数值字段:fldct-qfieldname 'MEINS'. 金额字段:fldct-cfieldname 'WAERS'. 


总结:

如果方便,最好是写上参考表和参考字段,实在不愿写用一个偷懒的办法:


根据实际情况修改一下既可以。


原创粉丝点击