4. 定价体系与条件技术

在 SAP S/4HANA 的销售与订单履约体系中,定价不是一个“填单价”的动作,而是一套由条件技术驱动的自动计算引擎。它的核心思想是:价格不是写死在物料或客户主数据上的固定值,而是由一组可配置的“条件”在特定业务场景下动态匹配、逐层计算得出。理解这套机制,是掌握订单价格为何是某个数值、以及如何调整它的前提。

条件技术由四个相互咬合的构件组成:条件表决定“用什么字段去匹配”,存取顺序决定“按什么优先级去查找”,条件类型决定“找到后如何计算”,定价过程决定“哪些条件类型参与、以什么顺序、如何汇总成最终价格”。四者缺一不可,配置时也必须按这个依赖关系自下而上搭建。

条件技术四构件与定价计算链 配置层(后台) 条件表 字段组合:客户+物料 决定“匹配键” 存取顺序 专用→通用逐级查找 决定“查找优先级” 条件类型 百分比/绝对值/等级 决定“计算方式” 定价过程 步骤+条件类型+小计 决定“汇总成净价” 运行时:订单价格逐级计算 PR00 基本价 100.00 / 件 K007 客户折扣 -5% K005 附加费 +2.00 / 件 小计1 净价 97.00 / 件 MWST 销项税 13% 小计6 含税 109.61 / 件 K007 运费 +8.00 / 单 小计2 运费 8.00 最终净价 97.00 + 8.00 存取顺序查找示例(条件类型 PR00) ① 客户 1001 + 物料 M-100 → 命中 100.00(专用,优先) ② 未命中则退到 客户组 + 物料组 → 命中 102.00 ③ 仍未命中则退到 物料组 → 命中 105.00(通用,兜底) 命中即停止,不再向下查找;顺序由存取顺序编号决定

条件表与存取顺序:先定义“拿什么去查”,再定义“按什么顺序查”

条件表(Condition Table)本质上是一张查找键的字段清单。例如为条件类型 PR00 建一张条件表,字段选“客户+物料”,意味着系统会拿订单里的售达方和物料号去这张表里找对应价格。字段越少,表越通用,但价格粒度越粗;字段越多,越能实现精细定价,但维护量也越大。常见组合有:物料、物料组、客户、客户组、销售组织、分销渠道等。

存取顺序(Access Sequence)则把多张条件表串成一个有序查找链。系统从编号最小的存取开始查,一旦命中就停止,不再继续。因此配置原则是“专用在前、通用在后”:先查“客户+物料”,再查“客户组+物料组”,最后查“物料组”兜底。这样既能保证大客户拿到专属价,又不会因为漏维护而找不到价格。若所有存取都未命中,系统会报“未找到条件记录”,此时要么补维护条件记录,要么在定价过程中设置替代策略。

条件类型:决定“找到值之后怎么算”

条件类型是定价的计算单元,它规定了计算方式、是否可手工修改、是否必须、以及正负号含义。常见计算方式有:

  • 百分比:如 K007 客户折扣 -5%,基于基本价计算,负号表示减项。
  • 绝对值:如 K005 附加费 +2.00 元/件,直接按数量累加。
  • 等级:按数量区间取不同单价,适合阶梯定价。
  • 税:如 MWST,按小计基数乘税率,通常放在定价过程后段。

条件类型还控制“条件记录”的维护界面。例如 PR00 通常设为必须且不可手工改,K007 允许销售员在订单中手工覆盖。这个开关直接影响订单价格的稳定性与灵活性之间的平衡。

定价过程:把条件类型编排成一条计算流水线

定价过程(Pricing Procedure)是最终被订单调用的“计算脚本”。它由若干步骤组成,每一步指定一个条件类型、一个“从步骤”和一个小计标识。步骤编号决定执行顺序,从步骤决定该条件基于哪一步的结果计算。例如:

步骤  条件类型   描述         从步骤   小计
10    PR00      基本价        -        -
20    K007      客户折扣      10       -
30    K005      附加费        10       -
40    K007      运费          -        2
50    MWST      销项税        10       6

小计标识用于把中间结果暂存,供后续条件或报表引用。例如小计1通常存净价,小计2存运费,小计6存含税总额。定价过程通过“定价过程确定”被分配给销售区域、客户定价过程或单据定价过程,最终在订单抬头或行项目上生效。

折扣、附加费、税、运费的计算逻辑与结果判读

以一笔示例订单为例:物料 M-100,数量 10 件,基本价 PR00 = 100.00 元/件,客户折扣 K007 = -5%,附加费 K005 = +2.00 元/件,运费 K007 = +8.00 元/单,销项税 MWST = 13%。计算过程如下:

  1. 基本价:100.00 × 10 = 1000.00 元
  2. 客户折扣:1000.00 × 5% = -50.00 元
  3. 附加费:2.00 × 10 = +20.00 元
  4. 小计1 净价:1000.00 - 50.00 + 20.00 = 970.00 元
  5. 运费:+8.00 元(按单,不随数量变化)
  6. 销项税:970.00 × 13% = 126.10 元
  7. 含税总额:970.00 + 8.00 + 126.10 = 1104.10 元

这里的关键判断点是:折扣和附加费都基于“从步骤 10”的基本价计算,而不是基于彼此叠加后的结果;税基于小计1 净价计算,不含运费;运费按单计算,不参与折扣。这些“从步骤”和“小计”的配置,直接决定了最终金额。若发现税额算错,首先检查 MWST 的从步骤是否指向了正确的小计;若折扣金额不对,检查 K007 的从步骤是否指向 PR00 而非其他条件。

定价分析时,优先使用 VK13 查看条件记录,用 VA03 订单行项目的“条件”页签逐行核对每一步的计算基数、比率和金额。条件页签会显示“条件类型、描述、金额、货币、单位、从步骤、小计”,是排查价格问题最直接的入口。

定价报告分析:从结果反查配置

当订单价格与预期不符时,可按以下顺序排查:第一,确认定价过程是否被正确确定,检查订单抬头的“定价过程”字段;第二,在条件页签中查看每个条件类型是否被找到,若某条件显示“未找到”,说明条件记录缺失或存取顺序未命中;第三,检查条件类型的“从步骤”和“小计”是否与设计一致;第四,检查条件记录的有效期、 scales 和排除标识。定价报告(如 V/LD 或 S_ALR_87012345)可以批量列出条件记录,用于核对维护完整性和价格分布。

掌握条件技术的关键,不在于记住每个事务码,而在于理解“条件表定义匹配键、存取顺序定义查找优先级、条件类型定义计算规则、定价过程定义编排与汇总”这条因果链。任何价格异常,都可以沿着这条链从结果反推到配置,定位到具体是哪一个构件出了问题。