在SAP中针对一些货币会维护缩进小数位,常见的有日元(JPY)、中国台币(TWD)等,缩进小数点位置维护在表TCURX中;
已中国台币凭证为例,查看表数据发现,前台FB03凭证金额会比表中实际存储金额扩大100倍,如下图所示;
猜想SAP设计这样的机制可能是为了币值较小的地区用户减少数据存储量而做的。
但是这样就涉及到一个内外部转换问题,如果直接从表中取数则取到的数据为实际下单金额缩小100倍的金额值,SAP提供了如:BAPI_CURRENCY_CONV_TO_EXTERN_9、BAPI_CURRENCY_CONV_TO_INTERNAL等内外部金额值转换函数可以转换金额字段值,但是对于一些报表显示的需求,则不需要做实际数据的转换,只要对相关金额字段样式设置指定FIELDCAT-CFIELDNAME货币字段就可以了。
需要注意一个问题,ACDOCA-WSL(交易货币金额)和ACDOCA-HSL(本位币金额)要分别取出交易货币和本位币货币,然后进行指定。
如上处理后显示就正常了。
前台显示值1000
表中实际存储值为10
指定FIELDCAT-CFIELDNAME货币字段前显示金额值缩小一百倍为表中实际存储值
指定FIELDCAT-CFIELDNAME货币字段后显示正常。