溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

某SAP項(xiàng)目進(jìn)銷(xiāo)存報(bào)表優(yōu)化小記

發(fā)布時(shí)間:2020-08-04 18:49:47 來(lái)源:ITPUB博客 閱讀:180 作者:dicksonjyl560101 欄目:大數(shù)據(jù)

            注:此文是筆者原創(chuàng),首發(fā)于AZSAP第一課堂: https://mp.weixin.qq.com/s/9yuDJohp1iNRR-hHTyT9WQ


            上半年,筆者剛剛加入某運(yùn)維項(xiàng)目,就接到了該項(xiàng)目客戶中國(guó)總部SAP運(yùn)維部門(mén)負(fù)責(zé)人的工作分配,說(shuō)是讓我?guī)兔?yōu)化一只進(jìn)銷(xiāo)存報(bào)表,很可能是需要重新設(shè)計(jì)重新開(kāi)發(fā)。

 

該項(xiàng)目是一個(gè)民營(yíng)企業(yè)項(xiàng)目,幾年前就已經(jīng)上線了,目前處于運(yùn)維階段。民營(yíng)企業(yè)的SAP項(xiàng)目有一個(gè)特點(diǎn),你懂的,就是各種增強(qiáng)開(kāi)發(fā)很多很多,以至于SAP系統(tǒng)主要被當(dāng)作一個(gè)數(shù)據(jù)庫(kù)來(lái)使用!很多標(biāo)準(zhǔn)的功能沒(méi)有被使用,一些標(biāo)準(zhǔn)的function module也被封裝了外殼然后在一些自定義的功能里被使用。像我這種沒(méi)有參與前期實(shí)施的過(guò)程在項(xiàng)目運(yùn)維幾年后中途加入的外部顧問(wèn),進(jìn)入這個(gè)項(xiàng)目立馬就被安排這種對(duì)于歷史遺留問(wèn)題的優(yōu)化任務(wù),真有點(diǎn)掉入大坑兩眼一抹黑的感覺(jué)。

 

怎么辦?我來(lái)這里就是要幫助客戶解決問(wèn)題,為客戶創(chuàng)造價(jià)值的,不是來(lái)喝茶聊天的。所以,雖然很難搞,也要迎難而上。

 

既然要優(yōu)化報(bào)表,就得要了解現(xiàn)行報(bào)表的過(guò)去與現(xiàn)狀。

 

筆者首先與客戶的內(nèi)部顧問(wèn)了解了一下這個(gè)報(bào)表的一些情況。經(jīng)過(guò)與內(nèi)部顧問(wèn)的溝通,得知該報(bào)表有2個(gè)硬傷,第一個(gè)硬傷是性能超級(jí)慢,基本不堪使用。我測(cè)試過(guò)了,發(fā)現(xiàn)查詢?nèi)掌诜秶词故亲蛱斓浇裉?天,報(bào)表依舊會(huì)跑死,報(bào)ABAP Runtime Error。這確實(shí)不堪使用,讓業(yè)務(wù)部門(mén)多難受??!第二個(gè)硬傷是期末庫(kù)存金額與財(cái)務(wù)科目余額表里的庫(kù)存金額對(duì)不上。

 

然后就是要找到導(dǎo)致報(bào)表兩大硬傷的原因。

 

據(jù)悉,性能慢是因?yàn)閳?bào)表功能過(guò)于復(fù)雜以及超大的數(shù)據(jù)量。從報(bào)表第一版程序到現(xiàn)在,報(bào)表程序被改了無(wú)數(shù)次,增加了很多邏輯,功能越來(lái)越復(fù)雜。既要能按批次來(lái)查詢進(jìn)銷(xiāo)存,還要能按照存儲(chǔ)地點(diǎn)來(lái)查詢;既要查詢庫(kù)存數(shù)量,還要計(jì)算金額,面積;而其面積的計(jì)算,又涉及到物料主數(shù)據(jù)和批次主數(shù)據(jù)里的分類(lèi)視圖數(shù)據(jù);加上客戶系統(tǒng)里的工廠代碼超過(guò)40個(gè),日積月累,貨物移動(dòng)方面的數(shù)據(jù)量巨大。筆者找了開(kāi)發(fā)同事幫忙分析代碼,發(fā)現(xiàn)其性能瓶頸之一在查詢批次進(jìn)銷(xiāo)存數(shù)據(jù)的時(shí)候,耗時(shí)太多。

 

為了找到起初期末庫(kù)存余額與科目余額表不一致的根本原因,我也找開(kāi)同事幫忙一起分析代碼。經(jīng)查,該報(bào)表是采取倒推方式計(jì)算期初庫(kù)存,其大致邏輯是首先拿到系統(tǒng)當(dāng)前實(shí)時(shí)庫(kù)存,然后計(jì)算當(dāng)前日期與期末日期以及期初日期之間的貨物移動(dòng)數(shù)據(jù),然后計(jì)算出期初期末庫(kù)存數(shù)量與金額。同時(shí)我們發(fā)現(xiàn),現(xiàn)行報(bào)表程序計(jì)算庫(kù)存余額的時(shí)候,僅僅考慮到了貨物移動(dòng)帶來(lái)的庫(kù)存價(jià)值的變化,卻未能考慮到非貨物移動(dòng)比如修改物料成本價(jià),比如發(fā)票校驗(yàn)導(dǎo)致的庫(kù)存價(jià)值的變化,這是導(dǎo)致庫(kù)存余額跟科目表余額差異的原因。

 

找到了現(xiàn)行報(bào)表不堪使用的根本原因之后,筆者開(kāi)始了報(bào)表優(yōu)化的設(shè)計(jì)。


首先,我把報(bào)表功能進(jìn)行裁剪,把查詢粒度加大,不再支持按批次按存儲(chǔ)地點(diǎn)級(jí)別的進(jìn)銷(xiāo)存查詢,只在工廠級(jí)別出進(jìn)銷(xiāo)存報(bào)表。這樣避免在大數(shù)據(jù)量以及邏輯復(fù)雜的情況下因查詢粒度過(guò)細(xì)再次出現(xiàn)性能問(wèn)題。當(dāng)然這些建議需要得到業(yè)務(wù)團(tuán)隊(duì)的認(rèn)可??蛻魳I(yè)務(wù)團(tuán)隊(duì)因這個(gè)報(bào)表而受苦久矣,所以對(duì)于我提出的這個(gè)優(yōu)化建議,對(duì)方欣然同意。

 

其次,我決定采用順推方式得到期末余額,先根據(jù)MBEWH/MSEG/MKPF/BSIM表里抓取到期初余額,然后抓取查詢?nèi)掌诜秶鷥?nèi)貨物移動(dòng)以及其它事務(wù)代碼導(dǎo)致的庫(kù)存變化數(shù)據(jù),計(jì)算出期末余額。如果采用倒推方式,可能會(huì)出現(xiàn)性能問(wèn)題,比如業(yè)務(wù)如果想查詢2015-01-01 到2015-01-31 這個(gè)期間的進(jìn)銷(xiāo)存,倒推的方式需要得到當(dāng)前(現(xiàn)在是2018年7月)庫(kù)存,然后計(jì)算當(dāng)前日期到2015-01-31 這段時(shí)間段范圍內(nèi)(三年多的時(shí)間范圍)貨物移動(dòng)金額以及非貨物移動(dòng)庫(kù)存金額差異,然后計(jì)算出期末余額,再計(jì)算期初余額,無(wú)疑這么做在數(shù)據(jù)量大的系統(tǒng)里還是會(huì)出現(xiàn)性能慢的問(wèn)題。而采用順推方式,則先計(jì)算出2015-01-01的期初余額,這個(gè)可以從一些表里直接抓取數(shù)據(jù),然后查詢一個(gè)很小時(shí)間段范圍內(nèi)的貨物移動(dòng)數(shù)據(jù)以及非貨物移動(dòng)庫(kù)存金額差異數(shù)據(jù)就可以得到期初庫(kù)存,然后查詢到2015-01-01 到2015-01-31 這一個(gè)月時(shí)間段里的庫(kù)存變化數(shù)據(jù),得到2015-01-31這天的庫(kù)存余額。這樣報(bào)表程序需要查詢的數(shù)據(jù)量明顯減少,當(dāng)然性能上要好一些。

 

最后,在計(jì)算期初期末余額的時(shí)候,要去BSIM表里抓取到非貨物移動(dòng)導(dǎo)致的庫(kù)存價(jià)值變化的數(shù)據(jù)。筆者總結(jié)了,需要去BSIM表里抓取憑證類(lèi)型為ML/PR/RE等的財(cái)務(wù)憑證里的金額,按借方和貸方匯總,計(jì)入指定查詢?nèi)掌诜秶鷥?nèi)非貨物移動(dòng)的庫(kù)存差異金額欄位,這個(gè)欄位參與計(jì)算期末余額。同時(shí)筆者上網(wǎng)查詢資料得知,一些項(xiàng)目的進(jìn)銷(xiāo)存報(bào)表里,常常因?yàn)闆](méi)有考慮到這BSIM表里這三種類(lèi)型的財(cái)務(wù)憑證里的金額,導(dǎo)致進(jìn)銷(xiāo)存報(bào)表余額與科目余額表數(shù)據(jù)不一致,看來(lái)這是SAP項(xiàng)目實(shí)踐中常見(jiàn)問(wèn)題之一。

 

       在這幾個(gè)大的思路的指引下,開(kāi)發(fā)出來(lái)的新的進(jìn)銷(xiāo)存報(bào)表,性能快到讓業(yè)務(wù)人員喜出望外,與財(cái)務(wù)科目余額表的數(shù)據(jù)一致也讓財(cái)務(wù)業(yè)務(wù)人員不再為進(jìn)銷(xiāo)存報(bào)表而痛心疾首了。

          

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI