大家最初在 SE11 中创建表和结构的时候都会遇到一个问题,如果设定了某个字段为 QUAN 或者 CURR 类型,也就是数量或金额的时候,总会要求输入一个参考表和参考字段,它是做什么用的呢?
这要从数字的本质说起,大家都知道一句话“数字会说话”,但是,商业数字不是代数,一个没有没有单位的商业数字,是不会说话的,就算说,也是瞎话。比如大家都看过的贺岁片《非诚勿扰》,葛优和范伟对那个伟大的划时代发明“分歧终端机”刚达成了200万的协议,马上就冒出来美元和英镑的分歧——数字是会被误读的。
SAP 可不会让这样的事情发生,对于数量和金额,SAP 要求必须指定单位,这个单位就是由参考表和参考字段来指定的。这样,在运行时,ABAP 运行时环境就可以准确获得这个数字的单位,从而确保谁看到这个数字都不会夸大或缩小。
知道了为什么,接下来就是解释怎么做。
对于数据库表来说:
1、参考表是当前表的情况最好解释,某条记录中的数量的单位就是它的参考字段所包含的值,比如 MARA 等主数据表里就是这样;
2、如果参考表是另外一个表,则原则上当前表中应该有一个字段将参考表做为外键表来使用,这样,某条记录中的数量的单位就是该记录的外键字段的值在参考表中对应的参考字段的值,比如 T031 这个表就是这样;
3、最不可理解的是字段的参考表也不是外键表,我完全不明白它的数值怎么跟单位对应起来,也许是程序控制?这需要 SAP 解释了。这样的例子也有很多,比如 STPO。
对于结构来说:
情况与上面类似,但是更多都是第三种无法解释的定义。