壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4618|回复: 8

[SD资料区] SAP定价逻辑

[复制链接]
发表于 2012/6/3 08:53:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
定价逻辑
                                                                                                                                
R/3系统是如何确定销售订单中物料的价格的呢?首先,让我们来看以下这张截图:

图中,“净价值”为85.47CNY,这是不包含税收在内的物料的净价值。而“总金额”为100.00CNY,这是包含税收、折扣、返利等价格因素在内所计算出来的总价值。那么,系统如何根据维护的物料金额(图中为100.00CNY)计算出净价和总价的呢?这就是关于定价的后台配置问题了。
现在,我们开始来看后台是怎么配置定价过程的。为了便于理解,我们采用反向思维来看这些定价过程。
首先,我们要知道,价格的确定都是有一个定价过程的。我们去后台看一下这些定价过程。路径如下图所示:

双击“定义定价程序确定”,进入以下界面:

在这里需要先说明一下关于后台配置界面的一些含义。上图中,灰色字段表示决定因素,白色字段表示确定的结果。以上图第一行为例:1000-11-11-A-1 (灰色字段) 共同决定了ZVAB02和PR01白色字段。这就是定价过程的确定框架。下面我们来看各字段表示什么。
“组织”表示销售组织;
“DChl”表示分销渠道;
“Dv”表示生产线;
“DoPr”表示单据定价过程;
“CuPP”表示客户定价过程;
“PriPr”表示定价过程;
“类型”表示条件类型。
我们还以第一行为例,这个定价过程就是说,一张销售订单如果属于销售区域1000-11―11,且其单据的定价过程为A、客户定价过程为1,则这张订单的物料价格的计算应采用ZVAB02的定价过程,订单行项目的条件类型为PR01。单据的定价过程和客户定价过程我们在后面会说到,这里先看ZVAB02这个定价过程是怎样来确定价格的。路径如下图所示:

双击“维护定价过程”,进入以下界面:

按以上方法进入ZVAB02定价过程:

我们来看上图中所列字段的意义:
“步骤”:标识了各计算步骤的编号。
“计数”:系统用它来显示定价过程中一个阶段内的存取编号。例如,你可以把所有运输附加费分配给步骤100;然而,可能有三个条件类型,每一个代表一个不同的运输附加费。因此,你可以给步骤100分配一个运输条件类型,计数1;另一个给步骤100,计数2;另一个给步骤100,计数3。
“Ctyp”:是条件类型,这是定价过程的基础。系统中没有一种条件类型可以用来表示“小计”或者“总计”的,在上图中,你可以在没有条件类型的条目中输入描述,比如“总计”。
“从”和“到”:用户两种情况(1)为小计定义范围。如果你要累积从步骤10到50的所有条件类型,应该分别在“从”、“到”中输入10和50。(2)定义计算的基础。如果折扣是定义成百分比形式的,你必须标识那一步应该用作计算的基础。如果你想要在步骤100开始计算,那么在“从”字段中输入100。
“人工”:标识条件类型是否允许自动处理还是仅仅允许手工处理。若打上“人工”标识则意味着该条件类型只允许手工在订单添加,即使之前用VK11维护了该条件类型,系统也不会自动带出维护了的价格。
“必需”:表明当系统使用这个定价过程完成定价时,条件是否是必需的。即要求该条件类型必须有值。
“小计”:给步骤分配给一个小计关键字。如果相同的字段用来存储不同的条件金额,系统将对单项数额求总和。这些条件金额或小计可用来作为进一步计算的开始点。
“计算类”:系统将会在搜索条件类型的值时使用这个列代表的公式替代标准条件技术。在计算比较复杂的税率时一般会用到它。
“条件基”:是分配给条件类型的一个公式,它确定可以作为标准值替代值的条件基的公式。
“帐码”:即科目代码,是分配给条件类型的一个记帐码,由该帐码来确定条件记录应计入哪个科目(包括借方科目和贷方科目,但有时只即入借方科目,视具体的条件类型而定)。
我们可以这样简单的理解:各种条件类型就是定价过程的计算元素,这些元素通过规定的运算法则(比如“从”、“到”、“小计”、“计算类”等),计算得出各种价格(比如“总计”、“边际利润”等),但有些价格是从主数据直接带过来的(比如“含税价格”是从价格主数据(VK11)带过来的或者手工维护的,“成本结转”是从物料主数据中的标准价格带过来的),而销售订单中显示出来的价格(比如“净价值”、“总金额”等)都是从这些计算出来的价格取数的。
此处需要说明的是,长城公司用的基本都是PR01(含税价格)的条件类型,如果有特殊业务需要在销售订单中以物料净价来维护物料金额(即非含税价),则要配置有PR00条件类型的定价过程。
现在,我们继续来看刚才提到的客户定价过程。路径如下图所示:

双击“定义客户定价过程”,进入以下界面:

我们可以看到,所谓客户定价过程并非像定价过程那么复杂,它只是一个标识而已,客户主数据中维护了这样的客户定价过程标识,就可以与销售区域、单据定价过程共同来确定定价过程了。
接着,我们继续看单据定价过程。路径如下图所示:

双击“定义单据定价过程”,进入以下界面:

可以看到,所谓的单据定价过程其实也只是一个标识而已,它们会被分配到各种订单类型中,作用也是与销售区域、客户定价过程共同确定定价过程。为订单类型指定单据定价过程的配置路径如下图所示:

双击“为订单类型指定单据定价过程”,进入以下界面:

从上图可以看到各种订单类型都分配到了哪种单据定价过程。比如ZOR(GW:标准订单)就分配到了A这个单据定价过程。
   前面我们说过,有些条件类型是从主数据里面取数的,有些是手工维护的等等。那么对于每个条件类型,系统又是按照什么原则(或者说优先级)去取哪些数据呢?这就涉及到条件类型的定义和存取顺序的问题了。我们先看条件类型的定义,路径如下图所示:

双击“维护条件类型”,进入以下界面:

从上图可以看到有很多定价类型。我们双击最常用的PR01进入看一下:

这里我们略去其他数据不讲,只看存取顺序。从上图可以看到,PR01分配到了PR02这个存取顺序。而这个存取顺序中又有哪些内容呢?我们继续看,路径如下图所示:

双击“维护调取顺序”,进入以下界面:

由上图进入PR02这个存取顺序:

从上图可以看出,该存取顺序存放了四张表,即是说,分配到该存取顺序的条件类型将可以从这四张表中取数。而这四张表的取数优先级则是通过它们的存取编号(10、20、30、40)来决定的。我们知道,在创建价格主数据的时候会弹出以下选择框:

这些“关键字组合”其实就是存取顺序中的表。如果某个物料只维护了这些表中的其中一个表,则PR01这个条件类型无疑会从这张表中取数而不存在优先级问题了。但如果某个物料同时维护了几个表,则PR01会通过存取顺序定义的各张表的优先级来取数。而存取顺序中的“排斥的”字段应该打上标识,该标识符表明:如果系统成功地搜索到了某个表中的数据(其实就是条件记录),那么它将不再进一步搜索其他表的数据。若该字段没有打上勾,则系统会搜索到所有有效的条件记录并把他们一起作为定价的元素,这显然是不可取的。(但作为条件排斥组的条件类型则例外,详见后续“关于定价的其他补充”)
上面说到的存取顺序中的表,就是所谓的条件表。我们来看条件表又是如何定义的,路进如下图所示:

双击“显示条件表”,进入以下界面:

我们选择305这张表,看一下这张表存放哪些字段:

从上图可以看到,305这张表存放了四个字段,即是说,这张表存放了由这四个字段共同确定的价格数据。
表中的每一条数据就是一条条件记录,这些条件记录就是通过VK11创建的。
关于R/3系统的定价逻辑就简单介绍到这里。
关于定价的其他补充
一、定价有时还与项目类别有关。
比如在某一项目类别中,若“定价码”字段不是维护成“X”,而是维护成空或“A”,(如下图1)在创建订单输入价格时会出现如下图2的提示信息:“对条件PR01,需求未满足”。

(图1)

(图2)
二、定价限制。
为避免用户不小心对某条件类型录入不正确的数据(比如对折扣记录录入100%的折扣),有必要对某些条件类型进行定价限制。路径如下图:

进入以下界面。注意:条件类型的计算类控制着限制的计算类型。因而,如果条件的计算类是百分数,那么限制也将会是基于百分数进行。一般来说,折扣最好还是基于百分比好些;这样折扣更容易管理。例如,在管理基于值的条件类型时,不管销售中客户采购多少,限制都不变。然而,显然更好的方式是设置一个百分之五的折扣限定,这样不管客户采购如何变化,折扣比例都能保持不变。这更合理一些。
而如果你的运费存在最大额外费用,譬如不管采购数量多少,运费都有上限;那么最好还是使用固定值作为条件类型的计算基准,从而也是上下限计算的基准。如果用户在销售订单中创建了一个越过限定范围的条件,那么他会收到一个错误信息,


三、条件排斥组
我们先来看ZVAB02这个定价过程:

可以看到,该定价过程中有两个条件类型是用来提供含税价格的,分别是PR01和ZPR1。那么当在创建销售订单的时候同时维护了这两个价格的话,系统会取哪个价格呢?这就是由条件排斥组决定的。条件排斥组仅仅是条件类型的组合,用于在定价中相互比较。
下面就简单说明一下关于条件排斥组的配置。
首先是定义条件排斥组。路径如下:

从下图可以看到,我们已经定义了以下几个条件排斥组:

    接着给排斥组分配条件类型,路径如下:

可以看到,条件类型PR01、ZPR1分别分配给了条件排斥组GW03、GW04:

在完成了条件类型到条件排斥组的分配后,接着分配条件排斥组到定价过程,路径如下:



从下图可以看到,我们把条件排斥组GW04放在了第1组,而把GW03放在了第2组:
这就意味着,当同时出现这两个条件类型的值时,系统优先取到GW04这个条件排斥组里的条件类型ZPR1(对这个条件排斥组我们只维护了一个条件类型,其实一个条件排斥组可以分配多个条件类型,即多个条件类型同属于一个条件排斥组,如下图)

所以就有了以下销售订单的取数了:

双击上图PR01进入以下界面,可以看到该条件类型处于“未激活状态”:

而条件类型ZPR1则没有该条目,所以它是处于激活状态:

注意
1、 你想要系统比较的条件类型必须是定价过程中已经存在的,并且已经为它们创建了有效的条件记录。
2、 放入条件排斥组的条件类型的存取顺序中必须把“排斥”的勾去掉。这是为了让系统自动对比该条件类型下所有条件表,从而选出最佳的条件记录。比如,有这样一个折扣条件类型,它的存取顺序有两个条件表,第一个条件表维护了10%的折扣,第二个条件表维护了15%的折扣,则系统会选择第二个条件表的条件记录,即用15%的折扣。所以,若没有把存取顺序中的“排斥”去掉,则系统再搜索到了第一个条件表的条件记录后,则不会继续搜索第二个条件表了,最终就会用到10%的折扣(而这个折扣并不是最佳的)。
3、 如果某个条件类型不属于任何一个条件排斥组,并且在它的存取顺序中条件表存在条件记录,那么在销售单据中系统将会计算该条件类型的条件记录;若该条件类型的存取顺序还没有设置排斥标识符(即把“排斥”的勾去掉),则系统会计算该条件类型下所有有效的条件记录!
四、补充条件
如果你希望在创建订单确定某一特定的物料价格时,为该物料作一个折扣,而该订单类型的定价过程又没有包括该折扣条件类型,那么,你可以通过补充条件来实现,使得当SAP确定定价过程中的条件记录时,自动包括你定义的折扣条件类型。具体配置过程如下:
(1)、创建你想要定义为补充条件的条件类型(如PR00等);
(2)、创建一个定价过程,该过程包括所有即将成为补充条件的条件类型,如下:

(3)再次进入作为补充条件的条件类型定义,输入该定价过程:

(4)用VK11创建PR00的条件记录时,当输完物料、价格等信息后,选择“转到”-“定价补充”:

进入以下界面,就可以选择需要的条件类型了:

经过以上步骤,当这个条件记录被确定时,刚才所选的补充条件(RA00)将会自动被包含在销售订单的定价过程中了。

定价逻辑.doc

2.87 MB, 下载次数: 75, 下载积分: 努力值 -5 点

点评

不错哦 很好的资料  发表于 2013/9/5 16:47
发表于 2012/6/3 12:56:12 | 显示全部楼层
好帖!赞一个!
发表于 2012/6/25 11:06:41 | 显示全部楼层
不错,学习了,LOOK LOOK!
发表于 2012/7/14 13:22:31 | 显示全部楼层
楼主写的很详细啊
发表于 2012/9/9 20:45:00 | 显示全部楼层
要好好学习 不然对不起我的努力值了
发表于 2012/11/13 09:31:27 | 显示全部楼层
非常感谢!!!
发表于 2013/1/12 14:48:49 | 显示全部楼层
好像写得很详细啊,下下来看看
 楼主| 发表于 2013/1/12 16:16:30 | 显示全部楼层
SAP SD定价技术分析  
  

定价技术一直是SAP引以为豪的一个设计。设计也很复杂。
基础的IMG设定有(定价表/访问顺序/定价类型/定价过程)等;
SAP的定价逻辑如下:

1) 定价程序
FunctionPool: SAPLV61A
Function Name: Pricing

2) 变量说明
XKOMV 记录系统定价结果(Item Level)
TKOMV 记录系统定价结果(Doc. Level)
KOMT1 定价过程
KOMT2 访问顺序
KOMK 定价关键字(表头)
KOMP 定价关键字(行)

3) 程序处理逻辑
A) 整理 KOMK / KOMP 的值 (SAP提供接口做增强,SO/DN/BILLING)
SO:
Program: MV45AFZZ
User Exit: userexit_pricing_prepare_tkomk / userexit_pricing_prepare_tkomp
DN:
BADI: LE_SHP_PRICING
Method: CHANGE_INPUT_HEADER_AND_ITEMS
BILLING:
Program: RV60AFZZ
User Exit: USEREXIT_PRICING_PREPARE_TKOMK / USEREXIT_PRICING_PREPARE_TKOMP

B) 抓取定价IMG的相关设定
Program: LV61AA12
FORM: KONDITIONSVORSTEP
* --> KOMK header communication structure *
* <-- KOMT1 table of pricing procedure *
* <-- KOMT2 table of condition access sequences *

C) 根据定价设定,整理定价过程结果内表
Program: LV61AA67
FORM: XKOMV_AUFBAUEN_AUS_KOMT1

* Build XKOMV from KOMT1 derived from T683S *

* --> KOMK header communication structure *
* --> KOMP item communication structure *
* --> KOMT1 pricing procedure *
* --> KOMT2 accesses *
* <-- XKOMV internal table of conditions *


定价过程中的"需求"将在这里被处理. 如果检查通过的话,改定价类型将会被记录在XKOMV里面.
价格主档的数据也会在这里被处理,

D) 根据TKOMV整理XKOMV定价过程结果内表
Program: LV61AA58
FORM: XKOMV_AUFBAUEN_AUS_TKOMV

* Build XKOMV from TKOMV *

* --> KOMT1 pricing procedure *
* --> TKOMV complete table of conditions *
* <-- XKOMV internal table of conditions *


E) 定价过程内表的计算(处理Formula,subtotal,base value ...)
Program: LV61AA55
FORM: XKOMV_BEWERTEN

* Calculate on internal table of conditions *

* --> PREISFINDUNGSART pricing type *
* --> KOMK header communication structure *
* <-> KOMP item communication structure *
* <-> XKOMV internal table of conditions *
* <-> GKOMV table of group conditions pricing type F only *
* --> GKOMZ table of group cond indeces pricing type F only *


小计/计算类型/基础类型 在这里被处理. 可参考 SAP NOTES: 900089,有详细描述处理逻辑.

F) 根据表T684的记录,执行定价排斥
Program: LV61AA56
FORM: XKOMV_AUSSCHLUSS
可参考 SAP NOTES: 836243

G) 将XKOMV的结果整理到TKOMV
Program: LV61AA42
FORM: XKOMV_UEBERTRAGEN_NACH_TKOMV

* Transfer XKOMV to TKOMV *

* --> XKOMV table document conditions *
* <-- TKOMV table all document conditions *


4) 有关定价的一些SAP NOTES.
1165078 Authorization check for conditions or subtotals
1007110 How is the KWERT determined in a subtotal?
836243 How condition exclusion works in R/3
791944 How is the KBETR determined in a subtotal?
485740 Conditions with fixed amount in copy activities
201830 Calculation of the net price of an item
154529 Pricing in the delivery
130417 Pricing preparation in billing document (user exit)
92090 Exclusion indicator KZNEP
67958 Mode of operation of the condition exclusion
41490 Condition exclusion (KZNEP)
24832 Pricing rules / TVCPF
18173 Minimum order value
900089 Pricing: Processing steps FORM XKOMV_BEWERTEN
363212 'Pricing analysis' mode of operation.

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 01:36 , Processed in 0.020389 second(s), 21 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表