事情是这样的。
我要加载一个货币转换的文本。
那这么操作的原理呢,是因为在源系统ERP和报表系统BW里面,数据是以不同货币单位存储的。
这里涉及到document currency/company code currency/group currency
我们这里的group currency是欧元。company code currency就是本地货币。
而ERP系统里面都是用document和company code货币来存信息的,不会用group currency欧元来计算。
一般计算呢,我们是要用欧元或者美元来计算,那这就得有不同货币类型的相对应转换汇率信息了。
这种货币转换汇率一般是自动从ERP抽过来的,但是会有好多不同的汇率类型,有平均汇率,预算汇率乱七八糟的,我也不太懂。这些是从文本文件来的。
不同的转换率类型,需要提前在BW里标明。
汇率类型
货币换算转换率
这个翻译起来还很拗口,毕竟咱也不是财务出身,不大好理解这个。
简言之就是这个定义了转换率是1:1还是1:1000这种倍率。 有时候不同货币的汇率差的还是挺大的。
所有的转换都得标注转换率。1:1的都要标注。
上载文本文件可以用这个tcode: RSIMPCUR
那么报表里面如何使用这个货币转换呢?
是用在currency translation types(货币换算类型)里面的。跟上面那个汇率类型不一样,这个是不同汇率类型的换算类型。是上面类型的换算方法。
看一下:RSCUR
这些都是从源货币转换成欧元。
下面这个例子是用的变量
这个就是用的汇率类型表。
来看下报表里面有汇率类型的变量:
这个变量是手动输入的。
也就是在汇率类型特性下,建了这个变量。
也就是说通过输入值确定是什么汇率类型。然后再依据currency type(local /group)来算汇率。
这个下面的是F4输入帮助写出来的。
总体看下来还是挺绕的。
因为我不是特别懂这个,所以我暂时也讲不明白。
我依稀记得之前写过这个F4的输入帮助。
这整个一套汇率换算啥的,对我来说超纲。。。
我本来对钱就不敏感,现在更晕了。。。
下次再详细写概念吧。
回到开头那个上载出错的问题。
汇率文件已经发过来了。最后要保存到这里。
那我加载出错的是个啥呢?
是个处理链。加载用的是个程序,然后报了这个错。
左边是正确的执行,最后G代表成功。右边表示有错。
ST22看到是这个,这个是个啥啊。
我完全看不懂。
还是回到处理链来看,处理链执行的是个程序。
调用了一个program.
这个程序进去呢,就是加载文件的程序:
然后还有个变量,按道理没问题的啊。难道这个变量有问题?进去看call的function发现就是找这个变量下的文件啊。
再来上载一下。然后直接执行这个程序,到TCURR里查看是否完成加载。唉,糟了个糕,刚才忘记看TCURR的行数了。
现在不知道了。
这个里面潜在一个问题:日期格式不对
可能是原始文件格式不对。
这个以后有空再来看:
虽然数据是加载上去了,但是处理了的错还在:
CONVT_NO_NUMBER
这是啥错啊?
难道是这个日期格式的错?来具体看看:
ST22:
难道是说这个最后的字段格式不对?
我来试下debug.都跑完了也没提示错啊。
这我就不懂了。
那到底是啥啊?
2021.1.5 补充
不管其他的了,今天我又弄出错了。
要加载汇率到TCURR,我们有个程序:
这个用来检查TVARVC里面的变量和执行处理链的。
TVARVC里面的变量呢,就是去找这个放到application server上面的文件。
找到了后执行处理链:
处理链调用了个程序
这个程序呢,就是这样的:RSIMPCURFILE
看起来就是去找这个文件,然后执行更新。
我单独去跑这个处理链的时候总是出错。文本已经被我用
RSXSA_FILE_UPLOAD_DOWNLOAD
这个程序加载到al11了。
我不知道为什么一直处理链报错。
现在没空查原因。
现在就来看,先直接执行程序 RSIMPCURFILE
就直接从al11的目录来更新汇率。
执行后,程序出错了。
先不管什么原因,重新从本地load,不从al11.
执行结束如下:
表示在TCURV表没有汇率类型。这里确实没有。
我们手动来先加一下这三个类型看看。
在SPRO->general setting->currencies->exchange rate type
加完了要传到customizing request里。。。那D上怎么搞的?Q上没有project,不能传啊,搞不来,死到这里
接下来去别的系统测试,执行无误。把转换出口显示出来。
不然日期就是这样的:
日期能看出来没毛病。