注:本人身為SAP咨詢顧問,故以下以SAP開發語言ABAP作為例子,其他語言雷同。
在SAP領域,做開發的人很多,會ABAP的也不少,但真心懂ABAP,懂開發的人卻不多。很多人從事開發行業,隻是單純為了開發而開發,為了寫代碼而寫代碼。隻要能夠實作功能,哪怕裡面埋了很多雷挖了很多坑也無關緊要,甚至BUG百出。SAP系統最注重的是代碼的品質以及運作高效率和簡潔,否則一旦程式有問題,影響的并不是程式本身,而會影響到實際企業生産,甚至一定程度上影響到決策層的判斷。跟SAP其他子產品一樣,ABAP沒個大幾年的累積經驗是無法成為大神級别的,除非是天生天賦異禀。是以會點ABAP文法和開發并沒有什麼了不起,跟其他諸如.net、Java和PHP等語言一樣,教育訓練一段時間就能夠上手了,但真的要做到把控需求,功能可擴充延展性就難了。也印證了一句話:會ABAP的不稀奇,懂ABAP才難求;會業務子產品的不稀奇,即會業務又懂開發才萬金難求!
以下列舉幾項,簡要說說會開發和懂開發的差別:
一、更新錯誤問題
會開發的人:循環一百次,每次暫停一秒後再Insert表,直到成功為止,如果100次了還失敗,那就忽略!是以一旦出現這樣的情況,程式就會卡死;
懂開發的人:Try一下,捕獲消息号和文本抛出,然後RollBack。但如果是無關緊要的表(如日志表),直接就忽略掉;
如下圖神奇的代碼:

二、多重邏輯判斷問題
會開發的人:IF能寫多少就寫多少,哪怕功能裡面都是重複的邏輯;
懂開發的人:采用ABAP的動态文法,将重複的功能整合在一起,差別就在動态文法判斷上;
如下圖代碼:
三、SAP增強的寫法
需要說明的是SAP增強是對系統标準功能和邏輯的一種延伸和更改,需要非常的慎重,同時最好有參數表來做開關控制,輸出的消息也得有長文本做描述;
會開發的人:找到一個增強就興奮不已,然後直接寫代碼,不考慮任何擴充和開關控制,也是直接Message出來消息,很難追蹤;
懂開發的人:不僅做了參數控制,同時還會做事務代碼或程式名的判斷,至于Message則在SE91裡面做消息号建立引用,友善維護和追蹤!
如下圖神奇的代碼:(代碼裡還有很明顯的錯誤,如果是修改采購訂單,則會一直報錯誤,提示費用申請單已經存在)
四、前後邏輯不一緻的問題
會開發的人:想到哪裡就寫到哪裡,不用判斷上下文的邏輯銜接;
懂開發的人:邏輯嚴謹性很強,做到前後資料和邏輯一緻;
以上程式運作的結果就變成了(金額和單價擴大一萬倍):
五、SAP接口模式之争
會開發的人:認為Webservice是萬能統一的,是以不管第三方系統是什麼平台和語言,一律用Webservice來做接口,更要命的是所有接口都共用一個出口位址。并且認為RFC不安全不穩定;
針對接口的開發,不管是輸入還是輸出,一律用行類型來做多筆記錄的傳輸。無視SAP系統警告說會降低接口的性能;
懂開發的人:除非第三方平台是上古時代開發的或者語言非常老舊,否則盡量能用RFC就用RFC,并且善用Table頁簽和“例外”的功能;
如下圖神奇的代碼:
又比如輸出結構:
針對這種處理方式,SAP系統會毫不留情得給出這樣的警告:
六、統一資料源問題
會開發的人:針對使用者的需求,來一個寫一個功能,哪怕報表邏輯都是類似的,于是寫得多了難免會發現同樣的數值往往在不同的地方不一緻;
懂開發的人:針對使用者的需求,凡是功能類似的都做成一個可重複使用的接口或函數,所有需要用到的地方都調用它取值,統一資料源;
這裡沒圖!
七、注釋問題
相信每個開發人員都會遇到看前人的代碼,然後又沒有任何注釋的那種絕望感!
會開發的人:根本不知道啥叫注釋,也重來不會注釋;
懂開發的人:在非常重要的地方會加入業務需求的說明,以及每一行重要代碼的設定說明;
如下圖神奇的代碼(誰能知道這個是什麼鬼?)
八、導入模闆是啥樣的?
這個或許可以說是使用者體驗問題,但在IT眼裡看來,這分明就是懂不懂開發的問題!
會開發的人:做好批導程式,就扔在那愛誰誰,一段時間之後連自己都不知道導入模闆應該是啥樣的,是TXT文本導入還是Excel導入,隻能繼續看程式;
懂開發的人:在批導的畫面做一個按鈕可以下載下傳模闆;
如下圖(相信所有人看到下圖都會一臉懵逼):
以上大概列舉了我在做項目過程中所遇到的主要的問題,還有很多很多開發相關的事故,都是那些隻會寫代碼而不懂系統邏輯的新手寫的。比如基本的資料存在性校驗、比如資料讀取錯誤、基本的除數不能為0的判斷、針對 FOR ALL ENTRIES IN 不做存在性檢查、使用 BINARY SEARCH不做排序等,從來不懂什麼叫測試。遇到這樣的事故,有時候會哭笑不得,要給IT增加不少的負擔。也隻能感歎一句,會開發簡單,懂開發難,懂業務又懂開發,簡直萬金難求!
-----------------------------------------------------------------------------------------------------------------------------
SAP ALL進行時...!
注:本文系原創,如要轉載請務必保持原文一緻并注明作者(SAP夢心)及出處(部落格位址:http://www.cnblogs.com/saper/),違者将會被追究相關責任,謝謝!