2 如何实现采购输入的价格为含税价? (SAP系统默认为不含税价格 & VOFM-含税价格历程创建)重要:切换系统时使用事务码SE38进程序RV80HGEN激活下例程

文章讲述了在SAP系统中,如何针对客户特殊需求,通过编写并激活ABAP代码的新计算例程,处理含税价、净价及不同税率的转换,以适应采购定价计算。涉及税率调整、进项税计算和MM模块的配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

业务背景:客户采购部门和供应商签订的价格合同都是含税价体现,如果是13%的进项税,净价100CNY, 税率13%,那么价格合同就会显示113CNY,为含税价格。SAP系统默认要求输入100CNY为净价(不含税价格)。这种情况下,客户要求在SAP系统中也直接输入含税价格113CNY。为了满足客户的特殊要求,我们就需要更改SAP系统原来的默认逻辑,需要使用新的计算公式(例程)来解决。

含税价计算公式:含税价113CNY=不含税价格(净价)100CNY*(1+进项税率13%)

不含税(净价)计算公式:不含税价格(净价)100CNY=含税价113CNY/(1+进项税率13%)

价外进项税计算公式:价外进项税13CNY=不含税价格(净价)100CNY*进项税率13%

解决方案:在采购定价计算方案商引入新的含税价格计算例程,例程=公式=formula,需要开发人员将ABAP代码写入到例程中(已激活),然后在采购定价计算方案中进行绑定。

进项税税率取决于企业的具体情况和所购买的原材料的类别。一般情况下,进项税的税率有3%、6%和17%三种。此外,对于购进农产品的纳税人,原适用10%扣除率的,扣除率调整为9%。纳税人购进用于生产或者委托加工13%税率货物的农产品,按照10%的扣除率计算进项税额。

需要注意的是,增值税一般纳税人发生增值税应税销售行为或者进口货物,原适用16%税率的,税率调整为13%;原适用10%税率的,税率调整为9%。此外,适用13%税率的境外旅客购物离境退税物品,退税率为11%;适用9%税率的境外旅客购物离境退税物品,退税率为8%。

城市维护建设税的税率根据地区的不同分为三档:纳税人所在地在市区的,税率为7%;所在地在县城,镇的,税率为5%;其他地区税率为1%。土地增值税是对有偿转让或处置不动产取得的收入减去"扣除项目"后的"增值收入"按30%-60%的超率累进税率征收的税项。

含税价例程代码如下

'''
FORM FRM_KONDI_WERT_902.

CASE KOMP-MWSKZ.
  WHEN 'J1'. "1%税率
    XKOMV-KBETR = 1*1000.
    XKWERT = XKOMV-KAWRT * 1 / 101.
  WHEN 'J2'. "13%税率
    XKOMV-KBETR = 13*1000.
    XKWERT = XKOMV-KAWRT * 13 / 130.
  WHEN 'J3'." 3%税率
    XKOMV-KBETR = 3*1000.
    XKWERT = XKOMV-KAWRT * 3 / 103.
  WHEN 'J4'." 17%税率
    XKOMV-KBETR = 17*1000.
    XKWERT = XKOMV-KAWRT * 17 / 170.
  WHEN 'J5'." 5%税率
    XKOMV-KBETR = 5*1000.
    XKWERT = XKOMV-KAWRT * 5 / 105.
  WHEN 'J6'." 6%税率
    XKOMV-KBETR = 6*1000.
    XKWERT = XKOMV-KAWRT * 6 / 106.
  WHEN 'J7'." 7%税率
    XKOMV-KBETR = 7*1000.
    XKWERT = XKOMV-KAWRT * 7 / 107.
  WHEN 'J9'." 9%税率
    XKOMV-KBETR = 9*1000.
    XKWERT = XKOMV-KAWRT * 9 / 109.
  WHEN 'J0'." 0%税率
    XKWERT = 0.
  ENDCASE.

ENDFORM.
'''

例程代码解释:

#1 902例程是用来计算价外税额的,也就是根据采购信息记录或手工输入的含税价格进行计算

#2 902例程会根据不同的税率进行价外含税金额的计算

#3 使用事务码SE11可以查结构KOMP-定价通讯项目,字段MWSKZ-销售/购买税代码

#4 使用事务码SE11可以查结构KOMV-定价通讯-条件记录,字段KBETR-条件金额或百分比

#5 XKWERT 表示价外税额(不含税净价*税率)

#6 XKOMV-KAWRT定价基数,表示含税价格

#7 XKWERT 表示价外税额 = XKOMV-KAWRT定价基数(含税价格) / (1+税率) * 税率

事务码VOFM创建例程:

4处,输入例程编码、例程描述、激活状态显示、应用程序输入M-采购或V-销售

5处,点击“源码”按钮,进入SE38代码编辑界面

6处,程序名称

7处,例程代码显示,如果输入的含税价格有超过3位小数的情况,可以将含税价格扩大1000倍再输入。

'''
FORM FRM_KONDI_WERT_902.

CASE KOMP-MWSKZ.
  WHEN 'J1'. "1%税率
    XKOMV-KBETR = 1*1000.
    XKWERT = XKOMV-KAWRT * 1000 / 101000.
  WHEN 'J2'. "13%税率
    XKOMV-KBETR = 13*1000.
    XKWERT = XKOMV-KAWRT * 130000 / 1130000.
  WHEN 'J3'." 3%税率
    XKOMV-KBETR = 3*1000.
    XKWERT = XKOMV-KAWRT * 30000 / 1030000.
  WHEN 'J4'." 17%税率
    XKOMV-KBETR = 17*1000.
    XKWERT = XKOMV-KAWRT * 170000 / 1170000.
  WHEN 'J5'." 5%税率
    XKOMV-KBETR = 5*1000.
    XKWERT = XKOMV-KAWRT * 50000 / 1050000.
  WHEN 'J6'." 6%税率
    XKOMV-KBETR = 6*1000.
    XKWERT = XKOMV-KAWRT * 60000 / 1060000.
  WHEN 'J7'." 7%税率
    XKOMV-KBETR = 7*1000.
    XKWERT = XKOMV-KAWRT * 70000 / 1070000.
  WHEN 'J9'." 9%税率
    XKOMV-KBETR = 9*1000.
    XKWERT = XKOMV-KAWRT * 90000 / 1090000.
  WHEN 'J0'." 0%税率
    XKWERT = 0.
  ENDCASE.

ENDFORM.
'''

8处,程序激活状态

返回到VOFM例程界面如下:

9处,显示例程还没有被激活,选中需要激活的例程

10处,点击“编辑”按钮,显示下拉列表

11处,选择“激活”按钮,对选中行例程进行激活,弹出TR界面,输入TR编号或新建TR

12处,显示例程已经被激活,勾选表示已激活状态

报错原因分析:902例程SE38程序已经激活,902例程VOFM也已经激活,但是902对应的SE3程序RV64A902,没有在INCLUDE 到RV64ANNN程序中。

解决方案:使用事务码SE38进入程序RV64ANNN

还可以使用SE38程序进行自动更新:RV80HGEN即可修复BUG,而不需要在目标系统中通过VOFM激活例程。该程序的作用是根据表TFRM,TFRMT在RV64ANNN等程序中增加INCLUDE RV64A902这样的代码,如此才能正常运行。

采购定价计算方案-绑定902例程:

这个步骤属于MM模块配置范畴,需要使用SPRO进入。

SPRO路径:SPRO->物料管理->采购->条件->定义价格确认流程->设置计算方案 - 采购

报错:采购定价计算方案中,输入例程902后,显示报错,无法找到对应的例程

选择例程902然后保存。

注意点:条件表创建的编号9xx=存取顺序维护的条件表编号9xx=自定义进项税条件类型绑定的存区顺序9xx=采购价格计算方案增强历程编码9xx 否则找不到对应的历程

完毕!

2024年3月18日 写于杭州

### SAP SD模块中含税价含税价的配置方法 在SAP系统的SD(Sales and Distribution)模块中,处理含税价含税价是一个常见的业务需求。为了满足这一需求,通常需要通过定价程序(Pricing Procedure)以及相关的条件类型(Condition Type)、条件记录(Condition Record)等设置来实现。 #### 1. 定义定价程序 在SD模块中,定价程序用于定义如何计算销售订单中的金额信息。具体操作如下: - 事务`VK11`,创建一个新的定价程序或修改现有的定价程序- 添加必要的条件类型以支持含税价含税价的计算。常用的条件类型包括: - **NETPR (Net Price)**:表示净价(含税)。 - **KONDA (Discounts/Allowances)**:作为折扣项使用,可用于调整税率[^1]。 - **MWST/TAX (VAT/Sales Tax)**:表示增值税或其他税费。 #### 2. 设置条件类型的优先级 在定价程序中,需确保条件类型的顺序合理,以便正确计算最终价格。例如,在计算含税价,应先基于净价加上税费,再考虑其他可能的折扣或附加费用。 - 使用事务`VD04`查看现有条件类型的优先级,并根据需要行调整。 - 如果需要自定义新的条件类型,则可以通过事务`OB08`完成新增或修改。 #### 3. 创建或更新条件记录 条件记录存储了具体的定价数据,因此需要为每种产品和服务维护相应的条件记录。 - 使用事务`VK12`入条件技术视图,检查并维护条件记录。 - 对于含税价的情况,可以在条件记录中预先设定好税率值,并将其映射至对应的条件类型[^2]。 #### 4. 实现含税价含税价转换逻辑 当客户希望直接输入含税价而非净价,可通过以下方式实现自动转换: - 在定价过中引入一个额外的条件类型(如`ZTAX`),该类型专门负责将含税价分解成净价部分和税额部分。 - 编写ABAP增强代或者利用标准功能扩展点(Enhancement Point),在后台执行数学运算以得出正确的结果。例如,假设适用税率为17%,则公式可设计为: ```abap DATA(lv_net_price) = lv_gross_price / ( 1 + ( tax_rate * 0.01 ) ). ``` #### 5. 测试完整的流 完成以上配置之后,务必行全面测试验证整个流是否正常运作。建议从以下几个方面入手: - 输入同的商品及其对应的价格参数,观察系统能否准确返回预期的结果; - 尝试更改某些基础设置(比如税率百分比),再次确认其影响范围是否符合预期。 --- ### 示例代片段 以下是简化版的ABAP函数样例,展示如何动态计算由含税价推导出的含税价: ```abap FUNCTION zcalculate_net_from_gross. *"---------------------------------------------------------------------- *"*"Local Interface: *" IMPORTING *" VALUE(GROSS_PRICE) TYPE P DECIMALS 2 DEFAULT '0' *" VALUE(TAX_RATE) TYPE I DEFAULT '0' *" EXPORTING *" REFERENCE(NET_PRICE) TYPE P DECIMALS 2 *"---------------------------------------------------------------------- IF TAX_RATE EQ 0 OR GROSS_PRICE LE 0. NET_PRICE = 0. ELSE. DATA(divisor) = 1 + ( TAX_RATE * 0.01 ). NET_PRICE = GROSS_PRICE / divisor. ENDIF. ENDFUNCTION. ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值