日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧

發布時間:2023/12/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近Jerry在忙一個項目,技術棧換成了nodejs平臺,語言換成了JavaScript,因為趕項目進度,一直沒時間更新公眾號。感謝大家的支持,關注人數還是慢慢地增長到了3000。

今天我們來聊聊一個比較輕松的話題。

當今這個數字化時代,大家的生活都離不開互聯網?;ヂ摼W公司為了確保服務器不會因為軟硬件問題宕機而影響自己的業務,紛紛使出渾身解數,包括設計更健壯的架構,實現高質量的代碼,提供硬件條件更好的機房等。當然也有一些腦洞大開的公司,另辟蹊徑,采取讓佛祖對服務器進行開光的方式,來實現"服務器永不宕機"的美好愿望。

下面是Jerry從一則搜狐新聞上看到的一些有趣的圖片,轉貼于此,新聞原文網址:

http://www.sohu.com/a/116621959_430930

有請高僧給服務器貼上靈符:

看著這個符咒,Jerry想起了自己曾經通關過無數遍的仙劍奇俠傳98柔情版里各種各樣的靈符。

高僧正在認真地進行開光儀式:

這些難道是IT管理員,或者SAP稱呼的Basis們,虔誠地跪在服務器前向佛祖祈禱“永不宕機”嗎?

除了“永不宕機”外,“永無bug”也是程序員們另一個美好的愿望。

于是乎,有些程序員希望通過在代碼頭部加上這種注釋,來獲得一些心理上的慰藉。

而對于SAP ABAP程序員,一看到bug這個詞,最容易聯想到什么?不知道大家心中的答案是什么,Jerry的答案是:ST22。

ABAP程序在執行時,如果遇到了沒有捕捉的異常,程序會終止,同時ABAP運行時會產生一個類似Windows系統藍屏的core dump:

這種dump可以在事務碼ST22里查看。一般來說,一個有經驗的ABAP程序員,通過分析ST22里提供的程序崩潰時的上下文信息,系統變量的內容,調用棧等等,不難修復這種bug。

下圖是ST22里dump的一個例子,值得一提的是大家可能會忽略的BASIS Developer View, 里面包含了引起運行時錯誤的ABAP語句對應的C語言實現的具體文件位置,比如下圖的**//bas/753_STACK/src/krn/abap/runt/abassert.c**。

大家還記得我寫過的聊聊C語言和ABAP?這篇文章么?

這里我偷個懶,把那篇文章里介紹C語言和ABAP語言關系的文字引用過來:

為什么這篇文章要把C語言和ABAP放在一起講,而不是別的語言比如Java和ABAP呢?因為ABAP語言底層是基于C/C++實現的,包括其關鍵字(比如最簡單的關鍵字WRITE的C++實現有2千多行)和虛擬機(ABAP Runtime)。SAP內部的一群計算機科學家們發明了ABAP這門偉大的語言,由它實現的各種SAP應用幫助了全球超過180個國家和地區的客戶們更好地運行其業務。

通過Google我們能搜索到一些關于這些SAP計算機科學家們的介紹,比如這個鏈接:

http://sapexperts.wispubs.com/SAP-Professional-Journal/Articles/From-XML-to-ABAP-Data-Structures-and-Back-Bridging-the-Gap-with-XSLT?id=2CA6B036062F42C5B7A76A772A934911#.WmGiiaiWbdM

SAP內部的Netweaver開發服務器上是能夠瀏覽這些C語言代碼的。Jerry 2017年在德國工作時,業余時間比較多,相關的C代碼也閱讀了不少,比如ABAP里最簡單的WRITE關鍵字,其C語言實現有2000多行。可惜因為這些C語言實現對客戶和partner不可見,因此無法在這里給大家分享它們的邏輯。

再回到ST22。相信每一位ABAP程序員運行代碼看到ST22的dump后,心里都會很沮喪。這個時候,如果有佛祖能夠給引起bug的代碼開開光,那將是一件很鼓舞人心的事情。

相信無論使用何種編程語言的程序員,看到下圖紅色高亮的這兩行字,都會精神為之一振:

  • 佛祖保佑,永無bug

  • 這段代碼佛祖已經做過開光處理,絕無可能再產生bug

如何實現ST22里這個顯示效果?其實ST22和Windows系統藍屏顯示邏輯一樣,都是一段靜態模板文本加上運行時異常的實際動態內容合并而成。

模板文字存儲在ABAP Netweaver服務器的數據庫表里。我們只需要在ST22的框架代碼把模板文本從數據庫表讀出之后,將佛祖開光的文本動態添加到模板文本的頭部,就大功告成了。

實現步驟非常簡單,在ST22標準程序SAPMS380的subroutine?read_snapt內創建一個隱式增強。

從read_snapt的代碼能看出ST22的模板文本是存儲在數據庫表SNAPT里的。

把佛祖開光的文本注入到read_snapt輸出的頭部:

這段隱式增強的代碼我放在了我的Github上:

https://github.com/i042416/KnowlegeRepository/blob/master/ABAP/SmallApp/210_god.abap

最終效果就是每次出現了運行時程序執行錯誤后,程序員到ST22里查看dump時,總能看到“佛祖保佑,永無BUG”幾個字。

這個例子其實也再次體現了Jerry之前提到的,作為ABAP開發環境和運行環境和二而一的Netweaver,給開發者提供了強大的可擴展性。

最后也是最重要的

1. 本文提供的步驟涉及到了對ABAP框架代碼的隱式增強,請謹慎使用。禁止在測試服務器和生產服務器使用! 否則由此造成的一切負面后果,Jerry本人及SAP概不負責。

2. 如果真的想確保自己交付的代碼“永無BUG”,程序員還是得老老實實練好自己的內功,而不要把自己的命運交給佛祖。畢竟國內這么多程序員,這么多行代碼,要是每一位程序員每一行代碼都要由佛祖開光,佛祖得多累鴨,佛祖忙不過來鴨!

更多閱讀

  • 動手使用ABAP Channel開發一些小工具,提升日常工作效率

  • 聊聊C語言和ABAP

  • ABAP vs Java, 蛙泳 vs 自由泳

  • 300行ABAP代碼實現一個最簡單的區塊鏈原型

  • Jerry的ABAP原創技術文章合集

  • ABAP開發人員未來應該學些什么

  • Jerry的ABAP, Java和JavaScript亂燉

  • 我用ABAP做過的那些無聊的事情

  • 不喜歡SAP GUI?那試試用Eclipse進行ABAP開發吧

  • 那些年我用過的SAP IDE

  • 使用Visual Studio Code編寫和激活ABAP代碼

總結

以上是生活随笔為你收集整理的你的ABAP程序给佛祖开过光么?来试试Jerry这个小技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。