定價技術一直是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