采购订单PB00含税价价税分离实现方式之一

很多企业,尤其是国内企业,供应商的物料价格一般都是通过含税价来实现的,也就是说,跟供应商谈定的价格是含税价。
但是SAP的标准功能在采购订单上面输入的条件类型PB00是不含税价格。这就需要顾问把税额从用户输入的含税价格PB00中分离出来。

那么如何实现呢?
从SD的角度来说,想做含税价,SAP有标准的定价过程可以参考,比如RVAB01。
但是采购订单却没有标准的过程可以参考。不过实现起来倒是也不那么麻烦。
变通一下,比如你输入的采购价格是PB00或者PBXX,是一个含税价。那么只要再做另外一个条件类型,把税算出来,作为一个折扣项减去,最后得到的就是净价了。
按照这个思路我们来做。首先做一个条件类型
ZTAX,折扣型的,负数,就这么几个选项,不参考创建也无所谓。

然后再把这个折扣的条件类型放到定价过程里面,演示方便就使用标准的RM0000,放到哪无所谓,就放最后吧。

有几个地方要注意:
1. From - to这里面要得到的是含税的总价。博主这次做的简单点,就直接参考step 1 -即PB00或PBXX
2. Subtotal一定要写9,9才会计算到net value里面去
3. 新建一个calculation formula,比如905.因为这个条件类型需要我们通过税码自己计算出来,而不是通过存取顺序维护条件记录的方式计算出来。
下面就是公式的内容了。

*&---------------------------------------------------------------------*
*&      Form  FRM_KONDI_WERT_905
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM frm_kondi_wert_905.

  DATA: l_kbetr LIKE konp-kbetr.    "Tax Rate
  DATA: l_krech LIKE t685a-krech.   "Inclusive or Exclusive
  DATA: l_knumh LIKE a003-knumh.    "Condition Record Number
  DATA: l_kschl LIKE a003-kschl.    "Condition Type
  DATA: l_kappl(2) TYPE c VALUE 'TX'. "Application

** Get condition type and condition record
  SELECT SINGLE knumh kschl
           FROM a003
           INTO (l_knumh,l_kschl)
          WHERE kappl = l_kappl
            AND aland = komk-aland
            AND mwskz = komp-mwskz.
  IF sy-subrc = 0.
** Get condition record value
    SELECT SINGLE kbetr
             INTO l_kbetr
             FROM konp
            WHERE knumh = l_knumh.
    IF sy-subrc = 0.
      SELECT SINGLE krech
               INTO l_krech
               FROM t685a
              WHERE kschl = l_kschl.
** Set Condition Value
      IF sy-subrc = 0.
        IF l_krech = 'A'. "Tax Excluded
          xkwert = -1 * xkomv-kawrt * l_kbetr / ( 100000 + l_kbetr ).
        ELSEIF l_krech = 'I'. "Tax Included
          xkwert = -1 * xkomv-kawrt * l_kbetr  / 100000.
        ENDIF.
      ENDIF.
      l_kschl = xkomv-kschl.
** Set Condition Amount
      LOOP AT xkomv WHERE kschl = l_kschl.
        xkomv-kbetr = l_kbetr * -1.
      ENDLOOP.
    ELSE.
** Set Condition Value
      xkwert = 0.
      l_kschl = xkomv-kschl.
** Set Condition Amount
      LOOP AT xkomv WHERE kschl = l_kschl.
        xkomv-kbetr = 0.
      ENDLOOP.
    ENDIF.
  ENDIF.
ENDFORM.                    "FRM_KONDI_WERT_905

然后就OK了,做个采购订单,变换税率,你的ZTAX就会自动根据税码里面配置的金额发生变化。
这个公式里面涉及到了一个’A’和’I’的问题。A是价外税,I是价内税。举例来说:同样100块的含税价,17%的税率,如果按A的方式,那么税就是100/1.17*0.17 = 14.53,净价就是85.47.而如果是I的方式,税就是100*0.17 = 17,净价就是83
一般I这种方式在未加工农产品采购的时候会使用,多半是13%的税率,叫扣除率。

V1税码:价外税15%

输入含税价115,得到净价100。

W1税码(博主自己随便创建的):价内税 13%


  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值