SAP - SD模組開發速查手冊
SAP - SD模組開發速查手冊
1. 相關表
VBAK:銷售訂單擡頭 VBAP:銷售訂單專案 VBUK:擡頭狀態 VBUP:行專案狀態 |
VBKD:銷售憑證:業務資料 VBPA:銷售憑證:合作伙伴 VBEP:銷售憑證:計劃行資料 |
LIKP:交貨單擡頭 LIPS:交貨單明細 VBFA:銷售憑證流(單據流) KNA1:客戶主資料 |
VBRK:發票擡頭 VBRP:發票行專案
|
A***:價格條件都存在名稱為 A+3個數字的表中,如A012 KONV:按條件儲存訂單中的定價、稅額等 KONP:按條件儲存定價資料(儲存VK11中的定價) |
|
2. 定價過程
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)就根據存取順序在條件表中讀取相應價格主資料
自定義的條件表編號從600到999。定價條件表中允許的條件欄位都來自於定價表KOMK、KOMP
以PR00為例,該條件型別可根據三個定價的關鍵字組合(即對應三個條件A表)進行維護,系統則通過存取順序確定三個條件表的優先順序順序,該優先順序順序稱存取順序(Access Sequence)。
圖中存取順序為PR02,系統按編號10、20、30、40依次讀取條件表A305、A306、A304,系統最先讀取305,即根據銷售組織+分銷渠道+客戶+物料確定銷售單價,圖中欄位“排斥的”鉤選後表示如果在A305表中讀取到了資料,則不再繼續讀取後面的A表
定價參考物料:通常來說定價參考物料等於銷售訂單中輸入的物料,但也可在物料主資料的銷售檢視維護定價物料,定價物料的目的在於減少價格維護的工作量
條件型別重要屬性:
l條件型別(Condition Class):定義條件型別屬於單價、折扣、還是稅收型別
l計算型別(Calculation Type):定義單價、折扣、稅收是如何計算的
l條件類別(Condition Category):對於特殊型別的條件型別,系統預定義了條件類別,如對於條件型別 VPRS,其條件型別為G,因此係統自動根據物料主資料中維護的標準價格(移動平均價格)確定該條件型別的條件型別金額
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,雖然未勾選統計,但系統也不將它納入淨價值統計
5、 subtotal小計
小計即將步驟(條件型別)的值或者價格賦值到小計中,不同的小計有不同的用途,有些小計可以用來做後續的計算,有些小計的值將會儲存到資料庫中。上上圖中條件型別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個條件欄位確定,銷售組織、分銷渠道、產品組、客戶的科目分配組、物料的科目分配組、賬戶碼(應計項),其中客戶科目分配組由客戶確定,物料的科目分配組由物料確定,而賬戶碼(應計項)則由定價過程中的定價型別確定
另外,凡是納入銷售訂單淨值計算的條件型別都必須有對應的賬戶碼
通過VK11維護條件後,資料存放在對應的條件AXXX表中
系統根據定價過程,並結合價格主資料(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無關)
條件型別金額的計算公式三要素:
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元
其中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元 |
銷售單價: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分配給銷售訂單:
系統通過兩個表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結構
3.銷售相關的憑證型別、型別
銷售相關的憑證類別(SD document category),表示憑證的分門別類,常用的有銷售訂單、交貨訂單、發票,在VBAK、LIKP、VBRK擡頭表裡都有一個VBTYP欄位,用來區別表裡的憑證具體屬性哪一類憑證。
VBAK-VBTYP的取值可以是:A、B、C、D、E、G、H、I、K、L、W 等,C是最常用,表示銷售訂單憑證;
LIKP-VBTYP的取值可以是:7、J、T 等,J是最常用,表示交貨單憑證;
VBRK-VBTYP的取值可以是:3、5、M、N、O、P、U 等,M是最常用,表示發票憑證;
每種憑證又可分為N種類型,如VBAK、LIKP、VBRK這些表裡都有相對應的型別欄位,它們分別是:AUART、LFART、FKART。如銷售訂單的型別,常用的有標準訂單型別OR:
發票擡頭表裡還有一個發票的小分類FKTYP,用來表示某種具體的發票類別,在是發票這一大分類中再細分
查看了一下采購訂單,也有類別與型別兩個欄位,但類別不是銷售裡的憑證類別VBTYP,採購與銷售是不相同的,所以採購相關憑證型別使用BSTYP來表示了: