目日志配置指南:防止銷售訂單關(guān)鍵字段缺失)
做SD顧問(wèn)的朋友應(yīng)該都遇到過(guò)這種場(chǎng)景業(yè)務(wù)在VA01里新建了一張銷售訂單倉(cāng)促保存完就把單據(jù)編號(hào)甩給物流到了VL01N做交貨單的時(shí)候系統(tǒng)提示找不到裝運(yùn)點(diǎn)開(kāi)票前又發(fā)現(xiàn)付款條件沒(méi)維護(hù)。結(jié)果一張訂單來(lái)來(lái)回回補(bǔ)改交付周期硬生生被拖了兩三天。這種問(wèn)題在業(yè)務(wù)量大的時(shí)候尤其惱人——明明錄單時(shí)順手填一下就能解決的事偏偏要等到后道環(huán)節(jié)才暴露。SAP其實(shí)早就給了標(biāo)準(zhǔn)方案就是配置里這條路徑Sales and Distribution銷售和分銷→ Basic Functions基礎(chǔ)功能→ Log of Incomplete Items未完成項(xiàng)目日志→ Define Incomplete Log也就是定義未完成日志。簡(jiǎn)單說(shuō)它可以給銷售訂單、交貨單、開(kāi)票憑證這類業(yè)務(wù)單據(jù)做一套體檢關(guān)鍵字段沒(méi)填的時(shí)候單據(jù)一保存就提示你、標(biāo)記你而不是等問(wèn)題在下一個(gè)環(huán)節(jié)爆雷。這篇文章我從業(yè)務(wù)原理講到完整配置步驟再分享幾個(gè)親測(cè)有效的排錯(cuò)技巧適合正在做SD模塊配置的顧問(wèn)、實(shí)施人員以及被訂單數(shù)據(jù)質(zhì)量折騰夠嗆的流程負(fù)責(zé)人。1. 未完成項(xiàng)目日志到底在解決什么問(wèn)題1.1 一個(gè)常見(jiàn)業(yè)務(wù)場(chǎng)景漏填字段引發(fā)的返工鏈之前有個(gè)制造型企業(yè)的項(xiàng)目用戶天天抱怨訂單明明保存了為什么后面不讓交貨。我拉了一批問(wèn)題訂單做分析發(fā)現(xiàn)大多數(shù)是同一個(gè)原因銷售助理錄單時(shí)把裝運(yùn)條件這個(gè)字段留空了。訂單保存那會(huì)兒系統(tǒng)沒(méi)有任何反應(yīng)但后面物流計(jì)劃員做交貨單時(shí)系統(tǒng)就是要拿這個(gè)字段去決定裝運(yùn)點(diǎn)和運(yùn)輸路線。字段為空交貨單自然創(chuàng)建不成功只能回過(guò)頭來(lái)找銷售改單。這就是典型的錄單時(shí)少填一個(gè)字段、流程后被放大了好幾倍的返工鏈。類似的問(wèn)題還發(fā)生在售達(dá)方為空、采購(gòu)訂單號(hào)缺失、付款條件未維護(hù)這些場(chǎng)景上。與其靠事后溝通和人工提醒不如在數(shù)據(jù)入口就設(shè)一道關(guān)卡——這正是未完成項(xiàng)目日志Log of Incomplete Items的核心價(jià)值在單據(jù)保存或后續(xù)使用前系統(tǒng)按預(yù)設(shè)規(guī)則檢查關(guān)鍵字段發(fā)現(xiàn)缺失就立即標(biāo)記讓問(wèn)題在源頭暴露。1.2 功能定位相當(dāng)于給每張單據(jù)配了一張?bào)w檢表拿體檢來(lái)打比方會(huì)很好理解。未完成日志的配置就是給每類業(yè)務(wù)單據(jù)制定一份體檢表先確定查哪個(gè)單據(jù)銷售憑證還是交貨單再確定分哪幾個(gè)部分查抬頭數(shù)據(jù)、行項(xiàng)目數(shù)據(jù)最后確定每個(gè)部分具體查哪些字段客戶、物料、裝運(yùn)條件。具體到SAP配置里結(jié)構(gòu)從上到下分成四層對(duì)象類型Application業(yè)務(wù)單據(jù)的大類比如銷售憑證、交貨單、開(kāi)票憑證。檢查號(hào)Check Number一份完整的檢查規(guī)則編號(hào)通常以Z開(kāi)頭自定義。檢查組Group把同一層面的檢查字段歸到一組比如抬頭組、行項(xiàng)目組、裝運(yùn)組。檢查字段Field組里實(shí)際要檢查的字段例如售達(dá)方、物料號(hào)、付款條件。這個(gè)四層結(jié)構(gòu)在后面對(duì)應(yīng)的配置界面里也完全一致。理解了這個(gè)模型就明白為什么有些訂單保存后狀態(tài)欄會(huì)出現(xiàn)一個(gè)未完成的小標(biāo)記——因?yàn)轶w檢表上至少有一項(xiàng)沒(méi)達(dá)標(biāo)。1.3 配置入口與適用范圍配置菜單的標(biāo)準(zhǔn)路徑是IMGProject Reference→ Sales and Distribution銷售和分銷→ Basic Functions基礎(chǔ)功能→ Log of Incomplete Items未完成項(xiàng)目日志→ Define Incomplete Log定義未完成日志習(xí)慣用事務(wù)代碼的話常見(jiàn)入口是OVL1銷售憑證、OVL2交貨單、OVL3開(kāi)票憑證不同系統(tǒng)版本略有差異。我個(gè)人的習(xí)慣是記OVL1因?yàn)樗D(zhuǎn)最快如果記不住直接走SPRO導(dǎo)航最穩(wěn)妥。適用范圍上別只盯著銷售訂單。交貨單創(chuàng)建時(shí)缺裝運(yùn)點(diǎn)、開(kāi)票憑證缺付款方同樣可以通過(guò)未完成日志來(lái)卡控。尤其SAP S/4HANA項(xiàng)目里這套邏輯和ECC基本相同學(xué)會(huì)了直接平移使用。2. 配置前的概念熱身與方案選型2.1 三個(gè)必懂參數(shù)級(jí)別、狀態(tài)組、消息編號(hào)真正動(dòng)手配置之前建議先把三個(gè)參數(shù)搞明白否則在界面里會(huì)一直犯嘀咕。第一個(gè)是級(jí)別Level。它決定字段缺失時(shí)的嚴(yán)重程度。行業(yè)內(nèi)一般按兩類理解一類是錯(cuò)誤級(jí)字段為空時(shí)單據(jù)不允許保存或明確提示必須補(bǔ)齊另一類是警告級(jí)單據(jù)可以保存但會(huì)被標(biāo)記為未完成。不同版本界面上顯示的編號(hào)可能不太一樣關(guān)鍵是先分清這種缺失是否影響后續(xù)流程再?zèng)Q定選哪個(gè)級(jí)別。第二個(gè)是狀態(tài)組Status Group。它更像一個(gè)分類維度把不同的缺失原因歸到同一組里方便后續(xù)在報(bào)表里按組統(tǒng)計(jì)、按組篩選。比如001是基礎(chǔ)數(shù)據(jù)缺失002是訂單信息缺失003是發(fā)貨信息缺失。第三個(gè)是消息編號(hào)Message Number。每個(gè)檢查字段可以掛一個(gè)消息號(hào)消息號(hào)在系統(tǒng)消息表里對(duì)應(yīng)一段文本。用戶點(diǎn)開(kāi)未完成日志的時(shí)候看到的缺少客戶采購(gòu)單號(hào)這類提示就是通過(guò)消息號(hào)取出來(lái)的。中文項(xiàng)目里建議把消息文本統(tǒng)一維護(hù)成中文否則用戶看到的可能是英文甚至亂碼。2.2 檢查號(hào)命名與自定義方案建議不要直接在SAP標(biāo)準(zhǔn)的檢查號(hào)上改這是我的第一個(gè)建議。標(biāo)準(zhǔn)檢查號(hào)隨系統(tǒng)發(fā)布升級(jí)或傳輸時(shí)容易被覆蓋而且你改了標(biāo)準(zhǔn)內(nèi)容其他顧問(wèn)根本不知道。自定義檢查號(hào)請(qǐng)務(wù)必用Z開(kāi)頭比如ZSD01、ZDEL01一眼就能認(rèn)出是項(xiàng)目自定義也方便后續(xù)傳輸管理。另外要考慮一個(gè)對(duì)象類型下是否需要多套檢查方案。比如銷售憑證對(duì)象有的公司對(duì)標(biāo)準(zhǔn)訂單特別嚴(yán)格要求所有關(guān)鍵字段都必填對(duì)退貨單則寬松很多只查客戶和退貨原因。如果你也有類似需求可以配置多個(gè)檢查號(hào)在業(yè)務(wù)上形成不同單據(jù)類型走不同檢查規(guī)則的效果。標(biāo)準(zhǔn)單據(jù)類型和檢查號(hào)的映射規(guī)則可以在配置里進(jìn)一步關(guān)聯(lián)實(shí)操中先把檢查號(hào)建清楚后面映射就順了。2.3 哪些字段值得放進(jìn)檢查清單這是整個(gè)配置里最見(jiàn)功力的地方不是把所有字段都掛上去就完事。字段掛太多錄單員被各種彈窗搞得心煩意亂效率直線下降掛太少等于形同虛設(shè)。我一般建議先拉三張清單對(duì)應(yīng)三個(gè)單據(jù)環(huán)節(jié)銷售訂單VA01重點(diǎn)查售達(dá)方、送達(dá)方、客戶采購(gòu)單號(hào)、付款條件、裝運(yùn)條件、行項(xiàng)目物料、訂單數(shù)量、要求交貨日期。交貨單VL01N重點(diǎn)查裝運(yùn)點(diǎn)、裝運(yùn)條件、接收方、實(shí)際交貨數(shù)量、揀配庫(kù)存地點(diǎn)。開(kāi)票憑證VF01重點(diǎn)查付款方、開(kāi)票數(shù)量、計(jì)稅/免稅標(biāo)記、應(yīng)收科目。每個(gè)清單定好后再按缺了會(huì)卡流程還是缺了能補(bǔ)但影響效率來(lái)定級(jí)別。前者設(shè)錯(cuò)誤級(jí)比如售達(dá)方為空后面根本沒(méi)法走流程后者設(shè)警告級(jí)比如客戶采購(gòu)單號(hào)后面可以再找業(yè)務(wù)補(bǔ)。3. 從IMG到測(cè)試閉環(huán)完整配置步驟3.1 第1步進(jìn)入定義未完成日志界面打開(kāi)SPRO按路徑找到定義未完成日志或者直接用事務(wù)代碼OVL1。進(jìn)入后看到的界面左側(cè)是一棵對(duì)象類型樹(shù)樹(shù)根下有銷售憑證、交貨、開(kāi)票等節(jié)點(diǎn)。初次看到一個(gè)空蕩蕩的列表別慌——你要做的是新增一條檢查規(guī)則而不是在標(biāo)準(zhǔn)規(guī)則上瞎點(diǎn)。我的建議是先把標(biāo)準(zhǔn)規(guī)則看一遍再動(dòng)手。默認(rèn)情況下SAP已經(jīng)為這些對(duì)象類型預(yù)置了檢查規(guī)則里面掛了很多標(biāo)準(zhǔn)字段。讀懂標(biāo)準(zhǔn)規(guī)則比從零開(kāi)始要快得多也能避免漏掉關(guān)鍵的檢查項(xiàng)。3.2 第2步創(chuàng)建檢查號(hào)并定義檢查組選中銷售憑證對(duì)象類型點(diǎn)新條目輸入檢查號(hào)ZSD01填上描述比如銷售訂單完整檢查-自定義保存后就生成了一個(gè)空殼檢查號(hào)。這個(gè)空殼還沒(méi)有任何內(nèi)容需要雙擊進(jìn)入下一層界面去定義檢查組。組是按業(yè)務(wù)層面拆的我通常建四個(gè)組001 抬頭數(shù)據(jù)Header Data002 行項(xiàng)目數(shù)據(jù)Item Data003 裝運(yùn)數(shù)據(jù)Shipping Data004 開(kāi)票數(shù)據(jù)Billing Data每個(gè)組創(chuàng)建時(shí)注意勾選激活標(biāo)志。不激活的組相當(dāng)于沒(méi)配檢查不會(huì)執(zhí)行。很多顧問(wèn)在這里踩坑建了組但忘了激活后面怎么測(cè)都測(cè)不出來(lái)。3.3 第3步為組分配字段并設(shè)定屬性選中某個(gè)組雙擊進(jìn)入字段分配界面。點(diǎn)新條目后系統(tǒng)會(huì)彈出可檢查字段的候選項(xiàng)可以通過(guò)搜索幫出來(lái)找字段。拿001 抬頭數(shù)據(jù)舉例通常可以掛這幾個(gè)字段售達(dá)方客戶編號(hào)級(jí)別建議選錯(cuò)誤級(jí)因?yàn)檫@個(gè)字段缺失訂單基本屬于無(wú)效單。客戶采購(gòu)單號(hào)級(jí)別建議選警告級(jí)允許后續(xù)補(bǔ)充。付款條件級(jí)別建議選錯(cuò)誤級(jí)開(kāi)票時(shí)依賴很強(qiáng)。國(guó)際貿(mào)易條款/貿(mào)易條件視公司業(yè)務(wù)定出口業(yè)務(wù)建議警告級(jí)。給每個(gè)字段設(shè)定級(jí)別之后別忘了分配狀態(tài)組和消息編號(hào)。狀態(tài)組按你項(xiàng)目里的統(tǒng)一編碼填消息編號(hào)可以先用標(biāo)準(zhǔn)編號(hào)后面再統(tǒng)一維護(hù)中文文本。行項(xiàng)目組和裝運(yùn)組、開(kāi)票組也是同樣的操作。行項(xiàng)目組里物料號(hào)設(shè)錯(cuò)誤級(jí)交貨日期設(shè)警告級(jí)裝運(yùn)組里裝運(yùn)條件設(shè)錯(cuò)誤級(jí)開(kāi)票組里是否計(jì)稅和付款方設(shè)錯(cuò)誤級(jí)。全部維護(hù)完保存系統(tǒng)會(huì)提示納入一個(gè)傳輸請(qǐng)求。這個(gè)傳輸請(qǐng)求建議同項(xiàng)目其他配置一起走避免零散的請(qǐng)求號(hào)污染傳輸隊(duì)列。3.4 第4步端到端驗(yàn)證配置保存只是第一步必須做一輪完整的業(yè)務(wù)驗(yàn)證。我的驗(yàn)證方法很固定用VA01創(chuàng)建一張銷售訂單故意不填售達(dá)方保存看系統(tǒng)反應(yīng)。再建一張訂單故意不填客戶采購(gòu)單號(hào)保存后看是否提示警告、標(biāo)記未完成。保存訂單后通過(guò)菜單環(huán)境→未完成項(xiàng)目日志打開(kāi)日志確認(rèn)缺失的字段被正確列出。回到VA02把缺的字段補(bǔ)上再次保存確認(rèn)未完成狀態(tài)自動(dòng)消失。如果測(cè)試結(jié)果完全符合預(yù)設(shè)級(jí)別說(shuō)明配置成功。如果發(fā)現(xiàn)訂單都保存了狀態(tài)也沒(méi)標(biāo)記那多半不是檢查號(hào)的問(wèn)題而是后面第5章要講的消息開(kāi)關(guān)沒(méi)打開(kāi)。4. 關(guān)鍵參數(shù)與業(yè)務(wù)邏輯深入解讀4.1 錯(cuò)誤級(jí)與警告級(jí)取舍背后是流程策略很多團(tuán)隊(duì)在配置時(shí)都喜歡一律設(shè)錯(cuò)誤級(jí)覺(jué)得越嚴(yán)格越好。但上線之后往往被錄單員吐槽下個(gè)單跟闖關(guān)一樣。這里有一個(gè)關(guān)鍵認(rèn)知未完成日志管的是單據(jù)數(shù)據(jù)完整性標(biāo)記字段狀態(tài)組管的才是屏幕錄入必輸性兩者職責(zé)不同。我把級(jí)別選擇的策略總結(jié)成一句話卡流程的設(shè)錯(cuò)誤級(jí)能補(bǔ)單的設(shè)警告級(jí)。舉個(gè)例子售達(dá)方缺失意味著不知道客戶是誰(shuí)后續(xù)所有環(huán)節(jié)都沒(méi)法做這個(gè)必須錯(cuò)誤級(jí)客戶采購(gòu)單號(hào)缺失倉(cāng)庫(kù)不關(guān)心財(cái)務(wù)也不關(guān)心只是采購(gòu)對(duì)賬時(shí)可能需要這個(gè)設(shè)警告級(jí)足夠了。把級(jí)別當(dāng)成業(yè)務(wù)流程的風(fēng)險(xiǎn)等級(jí)來(lái)定義而不是IT人員的一刀切常見(jiàn)分歧基本都能化解。另外要注意錯(cuò)誤級(jí)和字段狀態(tài)組的疊加效應(yīng)。如果一個(gè)字段在銷售訂單類型的字段狀態(tài)組里已經(jīng)被設(shè)為必輸那即使未完成日志里設(shè)的是警告級(jí)用戶錄入時(shí)仍然會(huì)被屏幕攔截。這不是配置沖突而是兩層控制疊加了。跟業(yè)務(wù)溝通時(shí)要把這兩件事講清楚別讓用戶以為系統(tǒng)出了問(wèn)題。4.2 狀態(tài)組在報(bào)表和批量處理中的價(jià)值狀態(tài)組這個(gè)參數(shù)容易被忽略因?yàn)樗挥绊懹脩舨僮髦挥绊懞罄m(xù)的數(shù)據(jù)分析視角。但在項(xiàng)目上線后的持續(xù)運(yùn)維里狀態(tài)組特別有用。假設(shè)你設(shè)置了三個(gè)狀態(tài)組001基礎(chǔ)數(shù)據(jù)、002訂單信息、003發(fā)貨信息。那么運(yùn)行未完成報(bào)表時(shí)可以按組匯總一眼看出上周的未完成訂單里80%都是發(fā)貨信息缺失。這個(gè)數(shù)據(jù)可以直接指導(dǎo)業(yè)務(wù)流程改善——是物流計(jì)劃沒(méi)做還是裝運(yùn)條件本身沒(méi)定義好。更精準(zhǔn)地你還可以用狀態(tài)組做條件篩選把某一類未完成訂單單獨(dú)拉出來(lái)批量處理不用在一個(gè)大列表里翻來(lái)翻去找。配置狀態(tài)組的編碼規(guī)則建議項(xiàng)目組內(nèi)統(tǒng)一不要東一個(gè)編碼西一個(gè)編碼。我一般會(huì)在方案文檔里把001/002/003的含義寫(xiě)清楚讓負(fù)責(zé)報(bào)表開(kāi)發(fā)的同事后面有據(jù)可依。4.3 消息編號(hào)用戶看到的第一手反饋用戶對(duì)未完成日志的直觀感受全部來(lái)自消息文本。有些項(xiàng)目里消息文本是英文業(yè)務(wù)同事打開(kāi)日志一臉懵然后又把問(wèn)題丟回IT。為了避免這種情景配置完成后建議順手做一次消息文本核對(duì)。具體做法是在事務(wù)代碼SE91里找到對(duì)應(yīng)的消息類和消息號(hào)檢查消息文本是否準(zhǔn)確、有沒(méi)有亂碼。如果不滿意可以維護(hù)自定義消息文本寫(xiě)成大白話比如采購(gòu)訂單號(hào)未維護(hù)請(qǐng)補(bǔ)充用于后續(xù)采購(gòu)對(duì)賬。用戶看到這樣的提示不用問(wèn)就知道該干什么。這里分享一個(gè)細(xì)節(jié)消息文本盡量寫(xiě)動(dòng)詞對(duì)象原因不要只寫(xiě)字段缺失四個(gè)字。缺失誰(shuí)都看得出來(lái)但缺了有什么影響、該找誰(shuí)補(bǔ)才是用戶真正需要的信息。5. 常見(jiàn)問(wèn)題與排錯(cuò)實(shí)錄5.1 配置了檢查字段訂單卻不提示這是被問(wèn)得最多的一個(gè)問(wèn)題而且90%的情況不是檢查規(guī)則配錯(cuò)了而是消息開(kāi)關(guān)沒(méi)打開(kāi)。在銷售憑證類型定義VOV4維護(hù)里有一個(gè)控制不完整日志消息的參數(shù)與其消息顯示方式相關(guān)。如果這個(gè)參數(shù)的值設(shè)成了不顯示消息那么就算你檢查規(guī)則配得再嚴(yán)用戶保存訂單時(shí)也看不到任何彈窗狀態(tài)欄可能也沒(méi)有明顯的標(biāo)記。排查時(shí)按這個(gè)順序來(lái)確認(rèn)檢查號(hào)已激活、組已激活。確認(rèn)字段確實(shí)分配到了組下面、級(jí)別確實(shí)保存了。檢查銷售憑證類型里的不完整消息參數(shù)是否允許顯示。重新登錄系統(tǒng)再試排除緩存干擾。5.2 級(jí)別是警告級(jí)為什么保存還是被攔截前面提到過(guò)字段狀態(tài)組和未完成日志是兩套控制邏輯。如果屏幕上的字段狀態(tài)組把某個(gè)字段設(shè)成了必輸錄單時(shí)不填這個(gè)字段根本無(wú)法保存而警告級(jí)只是事后標(biāo)記兩者疊加就是明明配了警告級(jí)還是保存不了的原因。收到這種反饋先別急著懷疑未完成日志配置打開(kāi)字段狀態(tài)組的配置界面查一下這個(gè)字段的必輸屬性。常見(jiàn)的是付款條件這類字段既被業(yè)務(wù)要求設(shè)為必輸又被未完成日志設(shè)了警告級(jí)結(jié)果誰(shuí)也沒(méi)做錯(cuò)但用戶感覺(jué)很混亂。解決辦法是統(tǒng)一策略字段狀態(tài)組決定錄入時(shí)是否強(qiáng)制填寫(xiě)未完成日志決定保存后是否跟蹤提醒兩個(gè)地方不要重復(fù)設(shè)同一個(gè)字段的硬性卡控。5.3 未完成日志里出現(xiàn)了重復(fù)或過(guò)期數(shù)據(jù)配置調(diào)整是每天都有可能發(fā)生的事但有一個(gè)容易被忽略的后果對(duì)歷史單據(jù)未完成狀態(tài)不會(huì)自動(dòng)重新計(jì)算。比如你今天把內(nèi)部訂單號(hào)從警告級(jí)升級(jí)成了錯(cuò)誤級(jí)歷史訂單如果缺少這個(gè)字段并不會(huì)立刻全部彈出來(lái)只有單據(jù)下一次被修改保存時(shí)才可能觸發(fā)重新檢查。如果需要立刻刷新歷史訂單的未完成狀態(tài)可以用標(biāo)準(zhǔn)工具或報(bào)表重新采集、重新評(píng)估。處理前先把單據(jù)清單導(dǎo)出來(lái)看看確認(rèn)是真實(shí)缺數(shù)據(jù)還是配置調(diào)整引入的存量積壓。我見(jiàn)過(guò)一個(gè)項(xiàng)目上線半年后才集中補(bǔ)一次未完成狀態(tài)結(jié)果一堆歷史數(shù)據(jù)冒出來(lái)業(yè)務(wù)部門(mén)差點(diǎn)被嚇到。這種事最好提前跟業(yè)務(wù)負(fù)責(zé)人打招呼做一次集中清理方案。最后再分享幾個(gè)實(shí)戰(zhàn)體會(huì)最近一次給客戶做訂單質(zhì)量?jī)?yōu)化我把重點(diǎn)完全放在了未完成日志上而不是又去搞什么用戶出口。配置本身不到半天就完成了真正花時(shí)間的反而是跟業(yè)務(wù)團(tuán)隊(duì)一起確定檢查清單和級(jí)別的過(guò)程。中間有件事印象很深業(yè)務(wù)負(fù)責(zé)人一開(kāi)始把二十幾個(gè)字段全列進(jìn)了必查清單覺(jué)得多查總比漏查強(qiáng)等我把每個(gè)字段的缺失后果列在表上一條條過(guò)最后真正留下的只有七八個(gè)。道理很簡(jiǎn)單——檢查功能是給流程護(hù)航的不是給錄單增加負(fù)擔(dān)的。這個(gè)小功能建議所有做SD模塊的朋友都認(rèn)真看一遍標(biāo)準(zhǔn)配置里已有字段你會(huì)發(fā)現(xiàn)很多你的業(yè)務(wù)場(chǎng)景根本不需要寫(xiě)增強(qiáng)標(biāo)準(zhǔn)功能已經(jīng)想得很周到了。真正好的配置往往不是搞得多復(fù)雜而是把系統(tǒng)的標(biāo)準(zhǔn)功能用到位。