注:本人身爲SAP諮詢顧問,故如下以SAP開發語言ABAP做爲例子,其餘語言雷同。 安全
在SAP領域,作開發的人不少,會ABAP的也很多,但真心懂ABAP,懂開發的人卻很少。不少人從事開發行業,只是單純爲了開發而開發,爲了寫代碼而寫代碼。只要可以實現功能,哪怕裏面埋了不少雷挖了不少坑也可有可無,甚至BUG百出。SAP系統最注重的是代碼的質量以及運行高效率和簡潔,不然一旦程序有問題,影響的並非程序自己,而會影響到實際企業生產,甚至必定程度上影響到決策層的判斷。跟SAP其餘模塊同樣,ABAP沒個大幾年的累積經驗是沒法成爲大神級別的,除非是天生天賦異稟。所以會點ABAP語法和開發並無什麼了不得,跟其餘諸如.net、Java和PHP等語言同樣,培訓一段時間就可以上手了,但真的要作到把控需求,功能可擴展延展性就難了。也印證了一句話:會ABAP的不稀奇,懂ABAP才難求;會業務模塊的不稀奇,即會業務又懂開發才萬金難求!函數
如下列舉幾項,簡要說說會開發和懂開發的區別:性能
1、更新錯誤問題測試
會開發的人:循環一百次,每次暫停一秒後再Insert表,直到成功爲止,若是100次了還失敗,那就忽略!因此一旦出現這樣的狀況,程序就會卡死;spa
懂開發的人:Try一下,捕獲消息號和文本拋出,而後RollBack。但若是是可有可無的表(如日誌表),直接就忽略掉;.net
以下圖神奇的代碼:3d
2、多重邏輯判斷問題日誌
會開發的人:IF能寫多少就寫多少,哪怕功能裏面都是重複的邏輯;blog
懂開發的人:採用ABAP的動態語法,將重複的功能整合在一塊兒,區別就在動態語法判斷上;排序
以下圖代碼:
3、SAP加強的寫法
須要說明的是SAP加強是對系統標準功能和邏輯的一種延伸和更改,須要很是的慎重,同時最好有參數表來作開關控制,輸出的消息也得有長文本作描述;
會開發的人:找到一個加強就興奮不已,而後直接寫代碼,不考慮任何擴展和開關控制,也是直接Message出來消息,很難追蹤;
懂開發的人:不只作了參數控制,同時還會作事務代碼或程序名的判斷,至於Message則在SE91裏面作消息號新建引用,方便維護和追蹤!
以下圖神奇的代碼:(代碼裏還有很明顯的錯誤,若是是修改採購訂單,則會一直報錯誤,提示費用申請單已經存在)
4、先後邏輯不一致的問題
會開發的人:想到哪裏就寫到哪裏,不用判斷上下文的邏輯銜接;
懂開發的人:邏輯嚴謹性很強,作到先後數據和邏輯一致;
以下圖神奇的代碼:
以上程序運行的結果就變成了(金額和單價擴大一萬倍):
5、SAP接口模式之爭
會開發的人:認爲Webservice是萬能統一的,因此無論第三方系統是什麼平臺和語言,一概用Webservice來作接口,更要命的是全部接口都共用一個出口地址。而且認爲RFC不安全不穩定;
針對接口的開發,不論是輸入仍是輸出,一概用行類型來作多筆記錄的傳輸。無視SAP系統警告說會下降接口的性能;
懂開發的人:除非第三方平臺是上古時代開發的或者語言很是老舊,不然儘可能能用RFC就用RFC,而且善用Table頁籤和「例外」的功能;
以下圖神奇的代碼:
又好比輸出結構:
針對這種處理方式,SAP系統會絕不留情得給出這樣的警告:
6、統一數據源問題
會開發的人:針對用戶的需求,來一個寫一個功能,哪怕報表邏輯都是相似的,因而寫得多了不免會發現一樣的數值每每在不一樣的地方不一致;
懂開發的人:針對用戶的需求,凡是功能相似的都作成一個可重複使用的接口或函數,全部須要用到的地方都調用它取值,統一數據源;
這裏沒圖!
7、註釋問題
相信每一個開發人員都會遇到看前人的代碼,而後又沒有任何註釋的那種絕望感!
會開發的人:根本不知道啥叫註釋,也重來不會註釋;
懂開發的人:在很是重要的地方會加入業務需求的說明,以及每一行重要代碼的設置說明;
以下圖神奇的代碼(誰能知道這個是什麼鬼?)
8、導入模板是啥樣的?
這個或許能夠說是用戶體驗問題,但在IT眼裏看來,這分明就是懂不懂開發的問題!
會開發的人:作好批導程序,就扔在那愛誰誰,一段時間以後連本身都不知道導入模板應該是啥樣的,是TXT文本導入仍是Excel導入,只能繼續看程序;
懂開發的人:在批導的畫面作一個按鈕能夠下載模板;
以下圖(相信全部人看到下圖都會一臉懵逼):
以上大概列舉了我在作項目過程當中所遇到的主要的問題,還有不少不少開發相關的事故,都是那些只會寫代碼而不懂系統邏輯的新手寫的。好比基本的數據存在性校驗、好比數據讀取錯誤、基本的除數不能爲0的判斷、針對 FOR ALL ENTRIES IN 不作存在性檢查、使用 BINARY SEARCH不作排序等,歷來不懂什麼叫測試。遇到這樣的事故,有時候會啼笑皆非,要給IT增長很多的負擔。也只能感嘆一句,會開發簡單,懂開發難,懂業務又懂開發,簡直萬金難求!