ABAP 的坑5

作者:ABAP老白 约 4 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, Data Engineering, MM, 开发, 数据工程, 物料管理

[ ABAP老白 ](javascript:void\(0\);)

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

多谢QQ群(15881589)的各位大顾,这篇文章是根据群里大顾发言整理。

目录:

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' .

总结:

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

ABAP 的坑5 - 封面图
ABAP 的坑5 - 封面图

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

ABAP 的坑5 - 封面图
ABAP 的坑5 - 封面图
ABAP老白

关于作者:ABAP老白

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「ABAP的坑5.md」整理生成,仅用于内部技术分享与学习交流。