记录ABAP开发的日常——自定义VOFM定价例程
前言:项目上遇到个需求:与供应商签订的采购合同价为含税价,SAP系统标准功能采购价格为不含税价,为避免采购订单价格产生尾差,采购订单输入价格与采购合同价格保持一致输入价格为含税价,通过定价例程将含税价及税率计算出不含税价作为收货成本或服务确认成本。
大概的意思就是说:采购订单输入的价格为含税价,系统通过增强程序计算出不含税价作为交货成本。
而我们需要做的就是自定义一个例程来计算不含税加的值,ok,废话少说,上货。
增强步骤:
1.事务码:VOFM
VOFM-公式->定价值
自定义例程编号和描述以及应用范围
双击例程编号,会创建RV64A{编号}程序,我们就是在这里计算不含税价的
*根据税码自动在条件页签中生成税率
DATA: L_KNUMH TYPE KONP-KNUMH,
L_KBETR TYPE KONP-KBETR,
L_KBETR_I TYPE KONP-KBETR.
DATA : LV_NETWR TYPE KOMP-NETWR .
CLEAR: L_KNUMH,L_KBETR,LV_NETWR.
*"查询税码对应的税率
SELECT SINGLE KNUMH
INTO L_KNUMH
FROM A003
WHERE KAPPL = 'TX'
AND KSCHL = 'MWVS'
AND ALAND = 'CN'
AND MWSKZ = KOMP-MWSKZ.
CHECK NOT L_KNUMH IS INITIAL.
SELECT SINGLE KBETR
INTO L_KBETR
FROM KONP
WHERE KNUMH = L_KNUMH.
L_KBETR_I = 100000 + L_KBETR.
*写入税额
XKWERT = 0 - ( XKOMV-KAWRT * L_KBETR / L_KBETR_I ).
*写入税率
XKOMV-KBETR = 0 - L_KBETR.
*S/4系统将净价赋值NETWR
LV_NETWR = XKOMV-KAWRT + XKWERT .
KOMP-NETWR = LV_NETWR .
程序写好后,要返回例程界面激活
还剩下一步,非常重要,请求传输后,在 目标系统 使用SE38运行程序 RV80HGEN ,如果漏了这一步,上面是不会生效的。
该程序的作用是根据表TFRM,TFRMT在 RV61ANNN 等程序中增加 INCLUDE RV61A901 这样的代码,这样我们自定义的例程才会生效。
文章参考:
- SAP 采购订单上含税价实现净价
- [转载]SAP 采购订单进项税VOFM 例程增强
- [MM]采购条件的确定过程(MM condition)