16.3.2. 定價過程
16.3.2.1. 條件技術七要素
1. 條件字段(Condition Field):條件表(A表)的關鍵字段,如客戶、物料
2. 條件字段目錄(Field Catalog):條件字段的集合,也即AXXX條件表的關鍵字段,決定在不同層次上的定價
3. 條件表(Condition Table):即AXXX表,包含一個或多個條件字段為關鍵字段,關鍵字段對應一個字段目錄
4. 存取順序(Access Sequence):存取順序中包含一個或者多個條件表,多個條件表時需指定讀取這些表的順序
5. 條件類型(Condition Type):條件類型即條件分類,如計算價格的PR00、計算折扣的K007、計算稅額的MWSI
6. 定價過程(Procedure):由多個條件類型組成,每個一條件類型就是一個定位步驟
7. 定價過程確定(Procedure Determination):根據銷售范圍(銷售組織+分銷渠道+產品組)、客戶、訂單類型來確定
當創建銷售訂單時,系統首先確定定價過程,再根據定價過程確定需要的條件類型,然后訂單中條件類型(如銷售折扣K007)就根據存取順序在條件表中讀取相應價格主數據
16.3.2.2. 條件表V/03、V/04、V/05
自定義的條件表編號從600到999。定價條件表中允許的條件字段都來自於定價表KOMK、KOMP
16.3.2.3. 存取順序 V/07
以PR00為例,該條件類型可根據三個定價的關鍵字組合(即對應三個條件A表)進行維護,系統則通過存取順序確定三個條件表的優先級順序,該優先級順序稱存取順序(Access Sequence)。
圖中存取順序為PR02,系統按編號10、20、30、40依次讀取條件表A305、A306、A304,系統最先讀取305,即根據銷售組織+分銷渠道+客戶+物料確定銷售單價,圖中字段“排斥的”鈎選后表示如果在A305表中讀取到了數據,則不再繼續讀取后面的A表
定價參數物料:通常來說定價參考物料等於銷售訂單中輸入的物料,但也可在物料主數據的銷售視圖維護定價物料,定價物料的目的在於減少價格維護的工作量
16.3.2.4. 條件類型 V/06
條件類型重要屬性:
l 條件類型(Condition Class):定義條件類型屬於單價、折扣、還是稅收類型
l 計算類型(Calculation Type):定義單價、折扣、稅收是如何計算的
l 條件類別(Condition Category):對於特殊類型的條件類型,系統預定義了條件類別,如對於條件類型 VPRS,其條件類型為G,因此系統自動根據物料主數據中維護的標准價格(移動平均價格)確定該條件類型的條件類型金額
16.3.2.5. 定價過程V/08與確定OVKK
1、 From ~ To步驟范圍
作用:確定條件類型基礎(Condition Base Value)
適用情況:僅針對計算類型為百分比的條件類型
邏輯說明:系統中提供三種百分比的計算類型,A(Percentage)、H(Percentage Include)、I(Percentage/travel expenses)。以計算類型A為例,其條件類型金額等於條件類型基礎乘以百分數,而條件類型基礎默認等於該條件類型的步驟范圍內的條件類型的值的合計,當不輸入步驟范圍時,則條件類型基礎等於該條件類型前所有步驟的條件類型金額之和
本例中,折扣的條件類型K007的計算類型設置為百分比,按圖中配置,K007條件類型基礎等於條件類型K007前所有條件類型的金額之手,即條件類型PR00的條件類型金額,具體為1600元,所以條件類型K007的金額等於條件類型基礎(1600)*前台VK11維護的折扣率(10%)=160元。
若設置條件類型K007的步驟范圍為“From 11 To 11”與不輸入步驟配置時條件類型基礎值是相同的
2、 Manual手工的
作用:確定條件類型是否在銷售訂單定價界面中自動出現
適用情況:無存取的條件類型
邏輯說明:圖中一共長個條件類型,條件類型EDI1代表期望的價格,被標准為了“手工”,該條件類型沒有分配存取順序,所以此種條件類型不讀取主數據(因為沒有條件A表),而是在銷售訂單中手工輸入
3、 Required必須的
作用:如果單據中條件類型沒有值,系統數據檢查時會提示
適用情況:任何條件類型
邏輯說明:定價類類型(Condition Class)為B(Price 單價)或者A(Discount Or Surcharge 折扣或附加費)的條件類型,必須維護相應的價格主數據,具維護值不能等於0;對於定價類型為D(Taxes 稅收)的定價類型,只要維護相應的主數據即可,可以是零(表示無稅收)
4、 Statistics統計的
對於一張銷售訂單來說,金額信息中最主要的是計算訂單的不含稅金額(Net Value 即凈價值,下圖中的Net字段)和稅額(Tax Value,下圖中的Tax字段),后續開票時,不含稅金額將過賬到賬務收入科目,稅額將過賬到稅金科目,二者合計代表着現金(應收賬款)
系統將定價過程中的各個中滿足下面三個條件的值納入到訂單的凈價值(Net Value,下圖中的Net字段)計算:
1、 條件1:該步驟勾選上統計,如鈎選統計,則代表該金額不納入凈價值
2、 條件2:該步驟存在條件類型。如下圖(VA03)中的最后一個步驟“Test Only”不存在條件類型,因此盡管未被勾選統計,但系統也不將該步驟的值納入凈價值中。不存在條件類型的步驟,系統一律認為是統計性
條件3:該步驟的條件類型的定價類型(Condition Class)不是“稅類型D”(Taxes:稅收)。如上圖中的MWSI,雖然未勾選統計,但系統也不將它納入凈價值統計
小計即將步驟(條件類型)的值或者價格賦值到小計中,不同的小計有不同的用途,有些小計可以用來做后續的計算,有些小計的值將會保存到數據庫中。上上圖中條件類型PR00的小計被設置為5,表示小計對應字段為KOMP-KZWI5,KOMP-KZWI5的金額等於條件類型PR00金額,當銷售訂單保存后,VBAP-KZWI5的值等於KOMP-KZWI5
下面列舉了定價過程中預置的22個小計,並對這些小計做了簡單分類,划分為四類型:
第一類:不可以隨意使用,系統已經賦予其特定含義。該類小計的值最終都會保存到VBAP相同名稱的字段里
第二類:系統預留的,可根據公司需要賦予特定含義。這6個小計的值最終都會保存在銷售訂單行項目表字段VBAP-KZWI1 ~ VBAP-KZWI6中。如可設置小計1用來記錄領導審批的折扣金額,小計2用來記錄客戶期望價格
第三、四類:系統未賦予特定含義。這兩類小計字段值不會保存到數據表中,僅作為中間變量使用,是為了定價過程中進行一步計算使用。其中第三類小計是將步驟的條件類型金額賦值到小計中,第四類是將條件類型價格賦值到小計中
6、 Requirement需求
條件類型生效的前提條件,可以寫自定義的程序來定義條件類型生效的前提條件,系統也提供了很多程序可供選擇。查看程序代碼:
7、 Condition Value Formula條件金額公式
通過該字段主要用來改變當前條件金額的值(字段XKWERT),也可同時改變當前條件類型的其他字段的值,如條件類型價格。
條件類型NTPW(含稅金額)等於折扣前含稅金額減去折扣金額,因此系統將條件類型(PR00)含稅價金額復制到小計字段5(KOMP-KZWI5),將條件類型折扣(K007)的金額復制到小計字段(KOMP-KZWI6)中,同時該條件類型NTPW條件金額公式的例程設置為81,下面是例程81源碼:
在程序81中定義了條件類型NTPW金額(XKWERT)等於小計5(komp-kzwi5) + 小計6(komp-kzwi6),同時在程序還根據條件類型NTPW金額計算得到該條件類型價格(XKOMV-KWERT)
8、 Condition Base formula條件基礎公式
與條件金額公式類似,主要是通過例程來改變條件類型基礎值
9、 Acckey和Accruals賬戶碼和應計項
通過定價過程的賬號碼(Account Key)和應計碼(Accrual Key)實現與銷售開票時的會計科目的確定無縫集成,實現收入、折扣、成本、稅額進入各自的會計科目
銷售開票的會計科目確定一般由6個條件字段確定,銷售組織、分銷渠道、產品組、客戶的科目分配組、物料的科目分配組、賬戶碼(應計項),其中客戶科目分配組由客戶確定,物料的科目分配組由物料確定,而賬戶碼(應計項)則由定價過程中的定價類型確定
另外,凡是納入銷售訂單凈值計算的條件類型都必須有對應的賬戶碼
16.3.2.6. VK11:價格主數據維護
通過VK11維護條件后,數據存放在對應的條件AXXX表中
16.3.2.7. 定價計算:KONV
系統根據定價過程,並結合價格主數據(AXXX表中的數據)計算得到條件類型金額,並將條件類型單價(KBETR)、條件類型基礎(KAWRT)、條件類型金額(KWERT,計算結果)一並存放到KONV表中
下表為最終KONV計算結果:
注:為了閱讀方便,本表做了適當加式,如對於百分比的條件類型MWSI,表中實際存儲的為170,而非17%
KONV-KBETR:從價格主數據(AXXX表)表中讀取得到
KONV-KAWRT:部分條件類型(如折扣、稅)是根據定價過程定義在創建訂單時動態計算得到
KONV-KWERT:以KBETR、KAWRT為基礎,並通過相應的計算公式計算得到,該字段即為最終計算出的定價結果
創建銷售訂單時,條件屏幕的字段在內表XKOMV中,最終內容將保存在數據庫表KONV中,VBAK與KONV通過KNUMV(條件記錄號)進行關聯(注,只有VBAK里才有KNUMV,VBAP里沒有,因為一張單就只對應一個定價過程,所以整張單只需一個KNUMV,與Item無關)
16.3.2.7.1. 條件類型的計算公式
條件類型金額的計算公式三要素:
1. 條件類型價格[Rate(condition amount or percentage)]:如單價(800元/個)、折扣(10%)、稅率(17%),來自VK11所維護的價格主數據
2. 條件類型基礎(Condition Base Value):如數量(2個)、折扣前金額(即銷售金額 1600元),部分條件類型(如折扣、稅)是根據定價過程定義動態計算得到,一般為前面幾步條件類型統計結果
3. 條件類型金額(Condition Value):以條件類型價格和條件類型基礎為基礎計算出來的金額,如含稅金額1600元、折扣160元
條件類型金額是以條件類型單價、條件類型基礎為基礎,通過某個公式計算得來
根據條件類型的計算類型,條件類型金額有不同的計算方式,最常用的三種計算方式:
1. 條件類型中的計算類型KONV-KRECH為C(數量):條件類型金額 = 條件類型價格(單價)* 條件類型基礎(數量),如銷售金額PR00的金額等於單價800元/個 * 數量2個 = 金額1600元
2. 條件類型中的計算類型KONV-KRECH為A(百分比):條件類型金額 = 條件類型價格(百分比)* 條件類型基礎(金額),如折扣K007的金額等於10% * 1600 = 160元
3. 條件類型中的計算類型KONV-KRECH為H(包括在內的百分比):條件類型金額 =條件類型基礎(金額)/(1+百分比)*百分比,如稅收MWSI的金額等於1440/(1+17%)*17% = 209.23元
16.3.2.8. 定價過程示例
其中NTPW(含稅金額)的條件類型價格 = 1440 / 2 = 720 ,NTPS(不含稅凈價)的條件類型價格 = 1230.77 / 2 = 615.385
另一個自己設計的定義過程:
|
條件價格或百分比 |
條件基值 |
條件金額 |
PR00 含稅銷售額 |
65元/個 |
2個 |
65*2 = 130元 |
K007 折口 |
0.1 |
130元 |
130*(0.1) = 13元 |
NTPW 折口后含稅銷售額 |
58.5元/個 |
2個 |
130-13 = 117元 |
MWSI 銷項稅 |
17% |
117元 |
117/(1+17%)*17% =17元 |
NTPS 銷售凈額 |
50元/個 |
2個 |
117–17 = 100元 |
16.3.2.9. 銷售訂單中的定價示例
銷售單價:800元 折扣:10% 稅率:17%
最終銷售含稅金額:1440元 不含稅金額:1230.77 稅額:209.23
注:上圖中的條件類型NTPW、NTPS描述錯誤,應該分別為含稅金額和不含稅金額,弄反了
銷售訂單的凈值(實為NTPS條件類型的KONV-KWERT的值)和稅額(實為MWSI條件類型的KONV-KWERT的值)還存儲在了銷售訂單行項目表VBAP-NETWR與VBAP-MWSBP中(還有一個VBAP-NETPR凈價(實為NTPS條件類型的KONV-KBETR的值?),也直接存儲在了VBAP表中);
與之對應的采購訂單的凈價EKPO-NETPR、凈值EKPO-NETWR也是直接存儲在了Item表EKPO中了:
另外還有兩個重要的字段:VBAP-KWMENG:銷售數量、EKPO-MENGE:采購數量。(這兩個字段實際上可對應到某個條件類型如PR00/NTPW/NTPS 的KONV-KAWRT的基礎值?)
創建訂單時,系統根據 銷售組織+分銷渠道+產品組+客戶的定價過程+單據的定價過程 來確定一個定價過程,其中客戶的定價過程在客戶主數據(KNA1,XD03)中定義:
單據的定價過程(不同的單據類型有不同的定價過程)通過事務代碼OVKJ分配給銷售訂單:
16.3.2.10.定價通信表KOMK、KOMP
系統通過兩個表KOMK、KOMP為銷售單與前台價格主數據、后台定價配置之間建立橋梁。創建訂單時,系統首先根據銷售訂單中的信息為這兩個表賦值,然后根據這兩個表中的值確定銷售單據中的定價,即這兩個表起通信(Communication)作用
創建銷售單時,會將VBAK中的部分信息賦值給KOMK表,VBAP同賦值給KOMP表
這兩個表僅僅起通信作用,是銷售訂單維護時產生的兩個內表,當銷售訂單保存后,表中的信息也會消失
定價表KOMK、KOMP的字段與VBAK、VBAP中的字段,大多相同,但並不是所有字段命完全相同,系統也並非根據字段名進行賦值,在系統內部有一套默認賦值規則
對於定價表KOMK、KOMP賦值是定價的基礎,系統只是將部分信息賦值了,某些字段如物料主數據中銷售視圖下的物料組1字段MVKE-MVGR1就沒有自動賦值過去,現在某個折扣需要根據物料組1確定,標准功能無法實現,原因是該字段的值系統沒有將其復制到定價表KOMP中。此時首先檢查該字段是否在表KOMK、KOMP中存在,SE11時發現KOMP中有同名字段MVGR1,此時只需要利用SAP系統預留的用戶出口程序MV45AFZZ,在USEREXIT_PRICING_PREPARE_TKOMP FORM中加入以下代碼即可:TKOMP-MVGR1 = VBAP-MVGR1.在創建訂單時系統會自動將TKOMP-MVGR1原封不動的復制到表KOMP-MVGR1中。如果有相應字段,可通過SE11修改KOMK、KOMP表,修改時查找CI_ 開頭的 .INCLUDE 結構可其他以Z打頭的INCLUDE或APPEND結構