定价技术一直是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