简介一份SAP SD模块定价配置步骤的PDF笔记系统梳理了从字段目录到条件记录的完整后台配置链路面向SAP顾问、财务关键用户与备考人员。文档按步骤拆解先配置字段目录与条件表再定义条件类型和存取顺序随后向条件类型分配存取顺序、创建确定过程并分配到销售组织/分销渠道/产品组/程序最后创建条件记录。每个步骤都点出关键点例如用V/03、V/05维护条件表VK13创建条件类型、VK11创建条件记录并涵盖价格主数据优先级、计算顺序、手动更改优先级、统计信息、打印小计、中间表需求及计算类型等配置要点也给出了复杂情景下添加字段、定义必要条件、修改标准定价逻辑的扩展思路。资源仅含1个PDF文件压缩包大小约867KB内容结构紧凑适合按图索骥地在系统中实操配置也适合SAP考试复习。已有717人浏览学习可作为SAP SD定价配置入门与进阶的参考工具。1. SAP SD定价配置到底在配什么一张价格不对的订单才是起点上月同事处理的案例客户订单按物料主数据里的“旧价格”成交财务月底对账发现少收8万——不是没人改价而是新价格根本没进条件记录系统读到的仍是旧的。SAP SD定价配置就是把这件让人抓狂的事变成一个可解释的流程销售订单行项目上的价格、折扣、附加费、运费和税不是凭空显示的字段而是系统按照“条件表—存取顺序—条件类型—定价过程”这条链逐层查出来、再按步骤算出来的结果。这套配置适合SD顾问快速定位价格问题适合FICO顾问理解借贷凭证的金额哪里来也适合企业内部IT在业务反馈“价格不对”时先自查。你不需要一次把全部配完但至少要能看懂订单行项目上每一行价格是怎么进来的、卡在哪一环。2. 定价配置的四个底层对象看不懂条件技术就没法修订单价格很多刚接触SAP的人会问物料主数据里不是有“销售价格”字段吗改那里不就行了实际并不行。物料主数据那个价只是参考信息真正的销售订单取价走的是条件技术——一套把“数据”和“规则”分开的机制。数据归数据比如“A客户买物料M单价100元”规则归规则比如“先按客户加物料查查不到再按物料查”。订单上一行价格之所以能算出来是因为规则和数据在某个点碰上了。下面四个对象就是这套机制的全部。2.1 条件技术是什么价格不是字段是算出来的结果条件技术你可以理解成一套“查表—取值—计算”的框架。同一个物料卖给两个客户一个100一个110这不是物料主数据里能维护出花样的而是系统在条件记录里分别存了两笔数据再由规则决定读哪一笔。条件记录存在KONP、KONH这些表里而凭证上最终算出来的定价结果统一写进KONV表。订单行项目上那个价格字段本质上是KONV里某一条条件类型的结果。改订单时你可以直接手改金额但手改出来的价格在系统里会带一个“手动更改”标记后续复制到交货单、开票时它照样按这个手动值走。很多财务对账对不上就是因为在订单上手动改过价而体系里没有留下这条改动背后的规则痕迹。值得先记住的是KONV存“结果”KONP存“规则数据”。排查“价格为什么是这个数”查KONV排查“为什么取不到价”查条件记录和存取顺序。2.2 条件表与存取顺序决定系统按什么键去查价条件表本质上是“键组合”。比如“客户物料”是一张表“物料”是另一张表“销售组织渠道客户物料”又是更精确的一张表。条件表里字段的排列顺序决定了业务人员在VK11维护条件记录时按什么维度去录。字段越多匹配越精细字段越少覆盖范围越宽。存取顺序是把多张条件表排成优先级的清单。系统从最精确的表开始读读不到就降级读下一张更宽的表直到读出值或全部读完。存取顺序里还有一个容易被忽略的“中止读取”标志如果勾上代表这张表一旦读到记录后续更宽的表就不再尝试。举一个典型场景你维护了“客户物料”的价也维护了全局“物料”的价系统优先读前者读到了就停。如果没勾中止两条记录会按照存取顺序全部读出来后面的条件类型可能叠加最后出现你根本不想见到的价格。同时要理解VK11里能查到记录不代表订单里能用。你得确认这个条件类型挂的存取顺序里真的包含了VK11维护数据所用的那张条件表。检查顺序应该是条件类型 → 存取顺序 → 条件表 → 条件记录。2.3 条件类型价格、折扣、运费在系统里的“壳”条件类型可以理解成一个模板壳子它定义了这类价格或折扣的行为方式。PR00是标准价格KA00是客户折扣K004是物料折扣还有很多运费、附加费的条件类型。实际配置里你通常不会用标准对象直接上场而是复制一个出来改成Z前缀的自定义条件类型。条件类型上最关键的几个字段存取顺序计算类型固定金额、按百分比、按数量等手动输入是否允许条件类折扣还是价格影响科目确定比例基准比如“每10件50元”的10正负号限制。这些字段决定了业务人员维护条件记录时的行为边界。“比例基准”是新手最容易翻车的地方。维护“每10件50元”时条件类型里比例基准不设成10系统会理解成每1件50元数量一多价格直接翻十倍。改这种问题其实很简单但要在两张订单之后才发现业务对你的信任就已经扣分了。2.4 定价过程把上面的对象串成一条流水线定价过程是一张步骤清单每一行代表一次“取条件—计算—累计”的动作。SAP标准销售订单用的是RVAA01里面有从价格、折扣、附加费到税的一大串步骤。每个步骤都有关键列步骤编号、计数器、条件类型、存取顺序、需求、计算类型、基础类型、小计、科目代码等。系统跑定价时从上往下逐行执行。每一行先去取数取到就按计算类型算算完把结果放进某个“小计”字段下一行再拿这个小计去算折扣或加价。所以步骤顺序就等于计算顺序折扣行如果在运费行前面运费就不参与折扣价外税和价内税的处理也是靠顺序实现的。定价过程本身不会自动对每张订单生效。它必须被分配给“销售凭证类型项目类别销售区域”的组合比如标准订单OR加项目类别TAN在某一个销售组织、渠道、产品组下使用。这一步漏掉配置做得再完整也是白做。对象配置入口作用主要数据表条件表SPRO→销售与分销→基本功能→定价→定价控制→维护条件表定义按哪些字段组合去取数KONP/KONH存取顺序同上路径→定义存取顺序定义多张条件表的读表优先级配置表条件类型同上路径→定义条件类型定义价格/折扣/运费的行为规则KONV结果定价过程同上路径→定义定价过程定义计算的步骤流水线配置表3. 从零配一个最简定价过程复制RVAA01而不是从空行开始下面用一个最小需求来走完整配置物料基础价、客户折扣5%、固定运费50元。这段流程做完你会得到一套自己的定价过程ZP001并且在VK11里把数据维护好能直接下订单看到结果。3.1 先拆需求别急着打开SPRO配置前先把需求拆成一张清单要几个条件类型分别是价格、折扣还是附加费折扣是百分比还是固定金额运费是按单收还是按重量收价格含税还是不含税这些答案直接决定计算类型和比例基准的填法。我见过不少顾问打开V/08就开始复制标准定价过程复制完一长串步骤也不知道删哪些最后订单上多出来一堆没用的条件行。正确做法是先画一条最简计算链基础价 → 客户折扣 → 运费。就三行。多余的税、附加费、成本行等业务明确需要再加不要一上来就背着整个标准过程跑。同时判断哪些标准对象可以复用。PR00是现成的价格条件类型但为了演示完整配置我们复制成ZPRO折扣复制KA00为ZKA0运费复制一个标准运费条件类型为ZFR1。复制标准对象而不是新建空对象是SAP配置里最稳妥的做法——行为模板已经对了改参数比造轮子快得多。3.2 创建条件类型复制标准类型改“计算类型”与“手动输入”进入SPRO路径销售与分销 → 基本功能 → 定价 → 定价控制 → 定义条件类型也可以直接敲事务代码V/06。选中PR00点复制输入新条件类型ZPRO系统会提示是否同时复制存取顺序这一步建议选“是”。之后把ZKA0从KA00复制过来ZFR1从一个标准运费条件类型复制过来。复制完成后逐个检查字段。ZPRO的计算类型保持固定金额ZKA0改成百分比ZFR1按单固定金额。手动输入字段按业务定价格通常允许销售在极端情况下改折扣最好设成不允许手改否则月底对账时每一行折扣都要解释半天。三个条件类型的条件类也要看一眼价格类和折扣类在过账时会影响科目确定。条件类型参考复制计算类型手动输入用途ZPROPR00固定金额允许物料基础价ZKA0KA00百分比不允许客户折扣ZFR1标准运费类型固定金额允许固定运费3.3 配置存取顺序把“客户物料”这种键组合匹配好存取顺序的配置路径和条件类型在同一层菜单下。如果复制条件类型时没有一并复制存取顺序现在要单独去维护每个条件类型都只能指定一个存取顺序这个顺序决定了系统查价的路径。以ZPRO为例选中条件类型ZPRO把存取顺序ZPRO_A设定为它的查价路径。ZPRO_A里挂一张“客户物料”的条件表。进入存取顺序明细后能看到一堆可用的查询字段售达方、送达方、物料、物料组、销售组织等。这里必须把组合键的字段顺序维护好比如“售达方”和“物料”两个字段都放在条件表里系统会先按售达方匹配再按物料匹配。“中止读取”标志要特别留意。对价格类条件来说读到一条就应该停下来所以这个标志必须勾上。如果不勾同一张订单可能同时读出多条价格记录并叠加最后的金额会是一个谁都没报过的数。ZKA0和ZFR1的存取顺序同理各自挂上需要的条件表即可。注意区分ZKA0按“客户”维度取折扣条件表里只要放客户字段就好没必要加物料。3.4 创建定价过程ZP001步骤顺序等于计算顺序使用事务代码V/08输入RVAA01复制为目标ZP001。复制出来后把不需要的步骤全部删掉只保留三个核心步骤。V/08主界面上方是定价过程列表下方是每一步的参数区。不要只看着“条件类型”列要把整行参数都检查一遍。步骤计数器条件类型存取顺序需求计算类型基础类型小计说明101ZPROZPRO_A空空基础价格小计1先取基础价202ZKA0ZKA0_A空空小计1小计2折扣按已计金额算303ZFR1ZFR1_A空空小计2小计3运费最后加“步骤”和“计数器”必须是递增的。步骤号每隔10跳一格是为了以后插入新步骤不用重排计数器严格递增则是为了让系统能正确识别每一行的先后和引用关系。如果两个步骤计数器相同后面做替代、做累计时会出现引用混乱。计算类型留空表示沿用条件类型本身的设置基础类型决定百分比折扣以哪个累计值作为基数这是折扣顺序的命门。小计列同样不能忽略。百分比折扣行必须指定“基础类型”指向它之前某一个小计否则系统算折扣时可能把不该包含的附加费一起折进去。第4章会用一个具体现象再讲一次这个坑。3.5 分配定价过程并维护条件记录定价过程建好不等于订单会用。回到V/08或SPRO里的“定义并分配定价过程”按销售凭证类型OR、项目类别TAN以及对应的销售组织、渠道、产品组把ZP001分配进去。把标准分配里的RVAA01替换成ZP001或者新增一组区域分配。这一步没做订单创建时系统找不到定价过程价格就是空的。接下来用VK11维护条件记录。先输入条件类型ZPRO回车后进入维护界面销售组织、渠道填上客户可以留空代表所有客户物料选指定物料金额填100有效期起止日期必须覆盖今天。ZKA0维护客户级5%ZFR1维护金额50。保存时SAP会提示条件记录已保存。到这里配置链路就闭环了定价过程被订单类型引用条件类型带着存取顺序去条件表里找到了刚维护的数据。下一步就是建一张订单验证。4. 用一张测试订单验证定价结果定价分析与KONV表双核对配置完成、条件记录维护完毕别急着交给业务。先自己下一张订单把从订单界面到定价分析再到数据库表的三层结果全部核对一遍。4.1 VA01创建订单先看行项目价格列表使用事务代码VA01订单类型OR输入销售组织、渠道、产品组。售达方填测试客户物料填刚维护过条件记录的物料数量10回车进入行项目总览。正常情况下行项目下面的条件页签会列出ZPRO、ZKA0、ZFR1三行金额分别是1000、负50、正50。如果条件页签里看不到这三行点工具栏上的“条件”按钮展开明细系统会按定价过程把每一步的计算结果显示出来。此时不要急着用手改金额把它改成“正确值”——手改会带上手动变更标记掩盖配置层的问题应该先去定价分析看状态。记住订单保存前的最后一眼要落在金额上基础价1000折扣后950加运费1000。每个数都能用计算器算回来这张订单才叫验证通过。4.2 打开定价分析那些状态字母才是排错入口选中行项目通过菜单“附加 → 定价分析”打开分析界面或者直接点条件/定价分析图标。这个界面上部是定价过程当前执行的步骤下部是每一步实际读到的内容。对SD顾问来说这就是排查价格问题的第一现场。状态列里最常出现的字母就几个A代表条件记录有效并被系统读取正常E代表按存取顺序没有找到任何记录这是取不到价的头号嫌疑D代表条件记录存在但需求例程不满足比如限定了只在特定日期生效如果看到X代表该条件被条件排除规则排除了。字母没有罗列完但排错思路是一致的。排查顺序固定为先看是哪个步骤出问题再看这个步骤挂的存取顺序然后看存取顺序下的条件表是否覆盖了VK11维护的数据最后看条件记录有效期和销售区域。这一条链走完八成价格问题都能定位到具体环节。4.3 用KONV表做数据核对订单上的每一行价格都存这里界面核对完了再去表里确认一次。KONV是凭证定价条件表记录了每张订单、每个行项目、每条条件类型的最终值。注意它的定位是“结果表”和存条件记录的KONP是两回事。用SE16N查表KONV条件输入VBELN为订单号KPOSN为行项目号回车后能看到该行项目下所有条件类型的明细字段KSCHL条件类型、KAWRT条件基数、KWERT条件金额。如果手工写过ABAP也可以直接写一段快速排查报表下面这个报表适用于ECC和S/4 HANA跑一遍就能把整单价格导出来PARAMETERS: p_vbeln TYPE konv-vbeln. START-OF-SELECTION. SELECT vbeln, kposn, kschl, kawrt, kwert FROM konv INTO TABLE DATA(lt_konv) WHERE vbeln p_vbeln. IF lt_konv IS INITIAL. WRITE: / 未查询到定价数据请检查订单号. RETURN. ENDIF. LOOP AT lt_konv INTO DATA(ls_konv). WRITE: / ls_konv-kposn, ls_konv-kschl, 基数, ls_konv-kawrt, 金额, ls_konv-kwert. ENDLOOP.这段代码先按订单号取出KONV的全部定价行再逐行打印项目号、条件类型、条件基数和条件金额。参数说明p_vbeln是单值参数输入完整订单号KAWRT是计算基数百分比折扣行的KAWRT会显示它是按哪个累计金额算的KWERT是最终条件金额百分比折扣行的KWERT是折扣结果。这样你能直接看清“折扣到底算在了哪个基数上”比在界面上猜靠谱得多。在KONV上只做读取绝对不要在生产环境直接UPDATE或删除行。掉单重跑、冲销重做都有正规事务代码直接改表属于给自己挖坑。5. 定价配置里最常踩的五个坑现象、原因、解决配置界面其实不大真正吃时间的是这些反反复复出现的怪问题。以下五条是配置场景里翻车概率最高的按“现象→原因→解决”一条条说清楚。5.1 VK11明明维护了条件记录订单里却飘红“E”现象VK11能查到条件记录VA01下订单行项目里却没有价格定价分析里对应步骤状态是E。业务人员第一反应是“系统坏了”其实链路上一环悄悄断了。原因最常见的三个——条件类型挂的存取顺序里根本不包含VK11维护数据用的那张条件表条件表的字段顺序和VK11维护时的输入维度对不上比如VK11按“客户物料”维护表里却是“物料客户”再就是有效期没有覆盖下单日期尤其跨月配置时只维护到上个月底。销售区域不匹配也会这样但优先级要靠后排查。解决打开定价分析定位到E所在步骤顺着条件类型查到存取顺序再展开存取顺序看条件表清单把VK11里的维护组合和条件表字段排序列出来一一对照。然后检查条件记录的开始和结束日期。把这三处对完E基本都会变成A。5.2 折扣把运费也折了小计顺序的锅现象客户折扣10%运费100元业务期望是“折扣只针对货款”结果最终运费实收90明显被折进去了。原因定价过程里运费步骤排在折扣步骤之前而折扣行的“基础类型”引用的是累计小计这个小计已经包含了运费。系统不知道你心里的“货款”口径它只按你配置的小计去取基数。解决把运费步骤移到折扣步骤之后让折扣永远只作用在它前面的累计值上。如果业务要求运费参与打折那保持原顺序但要在规则文档里写明如果不参与就把折扣行的基础类型精确指向“价格小计”而不是“全部累计小计”。改完记得重新下一张订单验证不要只在配置界面里看。5.3 改完定价过程订单价格纹丝不动现象SPRO里改完定价过程并保存回VA03打开旧订单价格还是老样子新下的订单也没变化。配置就像没保存一样。原因应用服务器对定价配置存在ABAP缓存改了配置后当前会话不会立刻感知另一个可能是你改的是ZP001但订单类型实际分配的仍是RVAA01改了个寂寞。解决退出所有SAP GUI会话重新登录后再测试。如果重登后还是旧值让BASIS清一次相关缓冲特别是传输到质量或生产环境之后清缓存几乎是标配动作。同时去销售凭证类型和项目类别那里确认分配记录避免配错对象。5.4 订单复制到交货单后价格丢了现象VA01建的订单价格正常VL01N创建交货单时行项目价格空了或者交货单价格与订单对不上。财务和仓库开始互相扯皮。原因订单复制到交货单时价格不是简单照抄而是受复制控制里的“定价类型”字段控制。该字段决定目标单据是按原价复制还是重新执行一次定价。同时交货单有自己的定价过程如果这个定价过程的存取顺序在交货单场景下取不到条件记录比如交货单按“物料”取价但物料主数据没维护销售价价格就会丢。解决在SPRO里找到物流执行 → 装运 → 复制控制 → 为交货单定义复制控制 → 销售订单到交货单检查定价类型设置。常见做法是设成“G”即复制价格并重新确定价格。同时确认交货单定价过程的取数范围与条件记录覆盖一致不一致就补条件记录或调整存取顺序。5.5 条件类型被手工一改月底对账说不清现象订单行项目里的价格被销售手工改成120折扣区域留白月底财务问“这个客户到底享受了什么折扣”没人答得上来。原因条件类型配置里“手动输入”是允许状态任何有订单创建权限的人都能直接改价格字段。这本身不是错误但没有留痕和限制价格就失去了可追溯性。解决在条件类型里把“手动输入”改为不允许或者限制在特定用户组范围内折扣、附加费类的条件类型强烈建议全部关掉手改。如果业务确需改价就走单独的定价审批流程而不是在订单上直接改字段。改完之后历史订单不会受影响但新订单的手改入口就被堵住了。6. 进阶用VOFM例程把定价规则做成“你自己的业务逻辑”配置界面能做的事情到第五步基本到头了但业务需求会越来越怪“订单金额不够1000元折扣不允许生效”“某类客户下单超过50件自动加收运费”“退货订单跳过加价”。这些在标准配置里没有开关就要用到定价过程步骤里的“需求”列。需求列填的是例程编号例程在事务代码VOFM里维护保存后系统会生成一段ABAP代码。下面是一段最简单的需求例程作用是ZKA0这条折扣条件只有当它的计算基数达到1000元时才生效否则直接跳过PROCEDURE ZREQ01. ENHANCEMENTS. DATA: lv_base TYPE konv-kawrt. CLEAR lv_base. MOVE XKOMV-KAWRT TO lv_base. IF lv_base 1000. REJECT. ENDIF. ENHANCEMENTS. ENDPROCEDURE.XKOMV是系统传给例程的外部条件行结构KAWRT是条件计算基数。REJECT代表当前条件不满足、例程判定不通过系统会跳过这一步继续跑后面的步骤。把这段例程在VOFM里激活编号ZREQ01再回到V/08把ZKA0所在步骤的“需求”列填上ZREQ01保存后下订单验证金额1000以下的订单折扣不生效1000以上的正常折扣。例程是全局对象凡是引用ZREQ01的定价过程都会受影响所以命名空间必须用Z开头改动前先看哪些定价过程引用了它。激活例程前先传到测试环境验证别在生产环境直接激活——我自己就翻过车改完需求逻辑忘了它被三个定价过程引用结果退货单的加价逻辑也一起变了退会话重登后连查了四张单才意识到影响范围。配置验证的两个习惯我现在一直保留每改一个配置对象就下一张订单并把定价分析截图存进配置说明文档每个传输请求里包含哪些条件类型、哪些定价过程、哪些VOFM例程写清楚后再放行。改完定价配置先退出GUI重登再建单验证是我付出过一次生产事故学费后养成的习惯。这些动作不复杂但能在关键时刻帮你省掉一整个上午的排查时间。希望帮到你。本文还有配套的精品资源点击获取
