SAP的多币种功能风传是其一大卖点。SAP屠夫写过若干关于汇率的文章,可惜不是做财务的,看不太懂,下文仅列出我所遇到的关于MM和SD模块的汇率问题。
1、我能想到的几种Currency: local currency, company code currency, account currency, price currency, document currency, posting currency, group currency, parallel currency等等。不甚了了。
2、汇率就是不同币种的转换关系。业务模块涉及到币种及汇率的地方有:定价时的定价货币、单据中的单据货币、财务记账用的记账货币、公司设置的本位币等。他们的关系如下:
- 定价时:定价货币到单据货币的转换;
- 过账时:单据货币到本位币的转换;
- 收付时:付款货币到本位币的转换;
3、极端的情况下,可能会有这样的业务情景:销售或采购业务以美元定价,订单以欧元签订,财务记账用本位币英镑,付款用人民币。那每两步都要用到外币汇率转换。
4、不同币种之间的转换有多种类型,比如买入汇率、卖出汇率、中间汇率等, SAP 将之定义成汇率类型。汇率类型用 OB07 维护。 SAP 中MM和SD模块涉及到的汇率类型主要有:
- 欧元区内用的汇率类型 EURO ;
- 欧元区内与欧元区外用的汇率类型 EURX ;
- 其他常规公司使用的平均类型 M ;
5、M类型是财务记账用的类型。除非在OBBS中设置了替代类型,前文描述的各种货币之间的转换都按M读取汇率值。汇率值存在表TCURR中,用OB08维护。
6、SAP 在 SD 的设计中,允许用户在客户主数据中维护汇率类型,路径是 Sales Area Data à Sales à Exch. Rate Type ,字段是 KNVV-KURST 。针对次客户的订单及后续开票都将按照人工维护的汇率类型去读取汇率。如果改字段没有被维护,系统将使用汇率类型 M ,标准程序 LV69AF18 中有硬编码。
7、销售订单抬头会计视图有个 Exch.rate-acct. 字段( VBKD-KURRF ),如果被维护,它将被参考到发票( VBRK-KURRF ),作为发票记账时的汇率类型。注意,发票中的汇率类型不能修改,仅从订单参考,如果没有被维护,同样也要使用汇率类型 M 。销售订单中另一个汇率( VBKD-KURSK )用来执行从定价货币到单据货币的汇率转换,在手工修改订单的单据货币时,此汇率将参考客户的汇率类型、定价日期从 TCURR 中读取汇率作为默认值,手工修改的将优先于此默认值。
8、存货增减 GR 、 GI 记账都使用本位币,不存在币种间汇率转换问题,其记账值,采用的是成本价(移动平均或标准价)。
9、发票中有两处涉及到汇率的字段,一是第 6 点说的抬头汇率 VBRK-KURRF ,它只用于财务记账,即根据此汇率将发票总额转换到本位币,再以这个数字记财务凭证。另一个是行项目汇率 VBRP-KURSK ,这是用于定价条件的汇率转换,即定价货币到发票货币(可人工设置的单据货币)的转换。 VBRP-KURSK 的来源受单据到发票的拷贝关系控制,具体字段是 TVCPFLP-PFKUR 。 TVCPFLP-PFKUR 字段可选项有:
- A - Copy from sales order
- B - Price exchange rate = Accouting rate
- C - Exchange rate determination according to billing date
- D - Exchange rate determination according to pricing date
- E - Exchange rate determination according to current date
- F - Exchange rate determination according to date of services rendered
例如,如果选择 B ,行项目的汇率将直接拷贝自抬头的汇率( VBRK-KURRF )。
10、定价中的汇率转换是定价货币到单据货币的转换,转换汇率存储在 KOMV-KKURS 中,它总是根据定价日期作为限制条件来读取汇率的。
11、汇率表 TCURR 是跨 Client 级的,与公司代码无关。读取参数有汇率类型、本币、外币、日期、换算因子(是一比一还是一百比一)。程序 LSCUNUXX 中含有若干计算汇率的函数,编程时可借来一用:
- INCLUDE LSCUNU01. "CALCULATE_EXCHANGE_RATE
- INCLUDE LSCUNU02. "CONVERT_TO_FOREIGN_CURRENCY
- INCLUDE LSCUNU03. "CONVERT_TO_LOCAL_CURRENCY
- INCLUDE LSCUNU04. "READ_EXCHANGE_RATE
- INCLUDE LSCUNU05. "READ_NOTATION
- INCLUDE LSCUNU06. "KURS_IN_MENGENNOTATION
- INCLUDE LSCUNU07. "KURS_IN_PREISNOTATION
12、可以在增强里人工干预定价的汇率转换,此增强是 RV61AFZB : USEREXIT_XKOMV_BEWERTEN_INIT 。这里可以截获更改定价货币时的汇率转换,经测试,销售订单、销售开票、采购订单、采购收票动作都将进入此增强。可用的变量有 [X]KMOV 、 [X]KOMP 、 [X]KOMK 。
13、 MM 模块中供应商没有类似 SD 的设计与设置。 PO 抬头 Delivery/Invoice 视图可维护 PO 货币及 PO 货币与本位币的转换汇率,同时可以将此汇率固定,正常情况下它将作为收票时的汇率。如果手工修改的汇率值与 OB08 的汇率值不一样,他们的差异将会在 GR 的会计凭证中体现( IDES 中默认记账科目是 Foreign currency revaluation losses 和 Income from price differences of own goods ),差额是新汇率减去默认汇率的值乘以数量再乘以默认汇率(直接汇率时用乘,间接汇率用除)。 手工汇率从多于默认汇率和手工汇率少默认汇率记账还不一样。
14、采购收票时可以在抬头 Details 视图人工指定汇率,前提是 PO 中没有 Fix 汇率。要想在MIRO处手工指定汇率,必须 先输入汇率再输入 PO 号码,否则汇率是灰色的。
15 、收付款清帐时,可在创建FI凭证时在 Currency/Rate 字段人工输入从而干预外币汇率。前提是公司代码的设置没有指定默认汇率。