定价技术一直是SAP引以为豪的一个设计。设计也很复杂,闲下空来DEBUG了一下SAP的标准程式。
基础的IMG设定(定价表/访问顺序/定价类型/定价过程)就不说了,现在将一些SAP的定价逻辑分享给大家,希望能给做定价增强的ABAPer兄弟一些些帮助。
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里面.
价格主档的数据也会在这里被处理,见
Program: LV61AA29
FORM: konditionen_lesen