前言:项目上遇到个需求:与供应商签订的采购合同价为含税价,SAP系统标准功能采购价格为不含税价,为避免采购订单价格产生尾差,采购订单输入价格与采购合同价格保持一致输入价格为含税价,通过定价例程将含税价及税率计算出不含税价作为收货成本或服务确认成本。
大概的意思就是说:采购订单输入的价格为含税价,系统通过增强程序计算出不含税价作为交货成本。

自定义VOFM定价例程 - 图1
而我们需要做的就是自定义一个例程来计算不含税加的值,ok,废话少说,上货。

增强步骤:

1.事务码:VOFM

1.1VOFM-公式->定价值

自定义VOFM定价例程 - 图2

1.2自定义例程编号和描述以及应用范围

自定义VOFM定价例程 - 图3

1.3双击例程编号,会创建RV64A{编号}程序,我们就是在这里计算不含税价的

自定义VOFM定价例程 - 图4

  1. *根据税码自动在条件页签中生成税率
  2. DATA: L_KNUMH TYPE KONP-KNUMH,
  3. L_KBETR TYPE KONP-KBETR,
  4. L_KBETR_I TYPE KONP-KBETR.
  5. DATA : LV_NETWR TYPE KOMP-NETWR .
  6. CLEAR: L_KNUMH,L_KBETR,LV_NETWR.
  7. *"查询税码对应的税率
  8. SELECT SINGLE KNUMH
  9. INTO L_KNUMH
  10. FROM A003
  11. WHERE KAPPL = 'TX'
  12. AND KSCHL = 'MWVS'
  13. AND ALAND = 'CN'
  14. AND MWSKZ = KOMP-MWSKZ.
  15. CHECK NOT L_KNUMH IS INITIAL.
  16. SELECT SINGLE KBETR
  17. INTO L_KBETR
  18. FROM KONP
  19. WHERE KNUMH = L_KNUMH.
  20. L_KBETR_I = 100000 + L_KBETR.
  21. *写入税额
  22. XKWERT = 0 - ( XKOMV-KAWRT * L_KBETR / L_KBETR_I ).
  23. *写入税率
  24. XKOMV-KBETR = 0 - L_KBETR.
  25. *S/4系统将净价赋值NETWR
  26. LV_NETWR = XKOMV-KAWRT + XKWERT .
  27. KOMP-NETWR = LV_NETWR .

1.4程序写好后,要返回例程界面激活

自定义VOFM定价例程 - 图5

还剩下一步,非常重要,请求传输后,在 目标系统 使用SE38运行程序 RV80HGEN ,如果漏了这一步,上面是不会生效的。
该程序的作用是根据表TFRM,TFRMTRV61ANNN 等程序中增加 INCLUDE RV61A901 这样的代码,这样我们自定义的例程才会生效。

文章参考: