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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

动手使用ABAP Channel开发一些小工具,提升日常工作效率

發布時間:2025/7/25 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动手使用ABAP Channel开发一些小工具,提升日常工作效率 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天的故事要從ABAP小游戲說起。

中國的ABAP從業者們手頭或多或少都搜集了一些ABAP小游戲,比如下面這些。

消滅星星:

掃雷:

來自我的朋友劉夢,公眾號"SAP干貨鋪"里的俄羅斯方塊:

用ABAP畫圖:

以及用今天要談到的ABAP Channel技術開發的乒乓球游戲,還能支持雙打,囧。

我心里一直有個念頭,以嚴謹刻板著稱的德國開發人員,看到這些流行于中國ABAP生態圈的小游戲,會有什么反應?

去年我在SAP德國總部做標準開發,經常參加一些會議。一次會議上,我和其他幾位CRM德國同事在會議室里一直等待一位S/4HANA同事的到來。大家也許會問,德國人素來以守時著稱,為什么工作會議還會遲到?

那是因為SAP德國總部面積非常大,一共有20多棟樓。下圖是SAP德國總部在Walldorf修建的第一棟大樓,拍攝于深秋季節。我們習慣稱為Building 1,當時我就在里面工作。

大樓側面看起來是這樣的,拍攝于初夏:

這20多棟大樓分散在園區各個角落:

當時參加會議的S/4HANA同事在Building 3工作,剛開完上一個會,以Jerry的步行速度,走到Building 1的會議室需要5分鐘時間。

在等待同事的時候,Jerry就把自己的電腦連接上了投影儀,然后給其他在場的幾位德國同事一個一個秀這些小游戲。當我的同事Carsten,SAP CRM的首席架構師,看到ABAP編寫的掃雷游戲時,不禁哈哈大笑,說道這是他在windows 98系統下玩的最多的一個游戲。

終于S/4HANA的同事到達了會議室,此時投影儀上正進行著用ABAP Channel編寫的乒乓球游戲。這位德國同事盯著看了一會兒,幽默地說了一句:"Am I in the wrong room?"

下面是正文。

    • *

ABAP Channel是Netweaver 740發布的一項新的基于事件驅動的前后臺通信技術,底層的實現基于WebSocket和TCPSocket。

做過SAP CRM呼叫中心(Interaction Center)的CRM顧問們,一定對這個產品的輪詢機制有深刻的印象。因為當時技術的局限,每當ABAP后臺有事件發生時,沒有辦法通知到前臺WebClient UI界面。前臺為了能夠顯示最新的數據,只得以一個固定的時間間隔,周期性地主動向ABAP后臺發起輪詢(poll)。

用Chrome開發者工具觀測,能容易地觀察到這個輪詢行為:下圖顯示CRM呼叫中心每隔1秒鐘向后臺發起一個HTTP請求進行輪詢。

2014年,Netweaver 740發布了底層基于Web Socket協議的ABAP Channel技術,因此CRM 呼叫中心也順勢采用了該技術替換了之前笨拙而低效的輪詢解決方案。

詳細信息參考CRM呼叫中心產品經理Henning的博客:

Replace polling in CRM Interaction Center by ABAP Push Channel

很多SAP成都研究院做過CRM開發的同事都和Henning打過交道,這是一位在CRM領域業務知識極其精深,同時非常和藹的德國人。

在SAP社區網站上已經有很多SAP從業者發表了各種關于ABAP Channel的博客,包括SAP自身也開發了很多例子,這些例子程序跟隨Netweaver一起發布。

Jerry不再重復這些例子,感興趣的朋友請參考這篇文章:

ABAP Channels Examples

今天我要分享的是Jerry如何使用ABAP Channel提升日常工作分析問題效率的一個具體例子。

ABAP從業者做項目時經常需要使用各種跟蹤和性能監控工具,最典型的有ST05和SAT。Jerry確實認為這些工具對ABAP開發者非常有用,Jerry在SAP社區上唯一的一篇閱讀量超過十萬的博客就是這篇講ST05和SAT另類用途的文章:

Six kinds of debugging tips to find the source code where the message is raised

(2016年9月SAP社區改版了,遷移到了SAP云平臺。遷移后所有博客的閱讀量都清零了,因此現在這篇博客看到的閱讀量只有四萬多,而不是十萬)

然而Jerry認為目前在Netweaver里所有的這些工具都有一個局限:開發人員必須要手工打開工具的跟蹤模式,在該模式下運行應用。運行結束之后,或手動關掉跟蹤模式,或者由工具自動關閉。也就是說,這些工具都無法在應用處于運行狀態時,實時地提供開發者需要的信息。

我去年在德國參加了原CRM One Order框架遷移到S/4HANA的重構和原型開發工作。具體細節可以看我這篇公眾號文章:Hello World, S/4HANA for Customer Management 1.0。

原型開發完成后就得做測試了。我得在新的S4CRM UI上進行一系列和以前老CRM一樣的操作,然后觀察傳入API的輸入參數和API返回的輸出參數是否正確。

起初我采用的方式是在API里設置斷點,然后在ABAP調試器里檢查。很快我發現這樣效率很低:CRM開發顧問都知道,像CRM_ORDER_MAINTAIN/READ這種API, 輸入輸出參數個數特別多,在ABAP 調試器里得選中一個雙擊進去看,看完了得點回退再雙擊看另一個。如果要把API所有的參數全部檢查完,總共要點一百多次鼠標。

Jerry最受不了的就是這種重復的體力活。有沒有辦法可以讓Netweaver也能像SAP云平臺的CloudFoundry編程環境那樣,一個

cf logs <app name>命令之后,正在運行的應用,其運行時產生的日志就嘩嘩嘩地打印在瀏覽器上呢?有!使用ABAP Channel。

于是我動手開發了一個工具??聪逻@個工具怎么用:一個BSP應用,在瀏覽器里訪問:

然后直接切換到One Order應用,像往常一樣進行操作。比如新建一個服務訂單,維護下面幾個字段:

再切換回我做的工具,One Order API的輸入和輸出參數內容已經實時地顯示在瀏覽器里了,再不用去調試器里進行繁瑣的點擊操作了。

因為是通過瀏覽器顯示,所以我還可以直接用CTRL+F根據關鍵字搜索,而這在SAPGUI里是沒法做到的。后來我也把這個工具推薦給了Carsten。

下面是這個工具的詳細開發步驟。

1. 事務碼SAPC, 創建一個新的APC(ABAP Push Channel)應用ZORDER_LOG_APC,連接類型要選擇成WebSocket。

點擊按鈕“Generate Class and Service” 自動生成處理類和ICF節點。

2. 事務碼SAMC, 創建一個新的AMC(ABAP Message Channel)應用,取名為ZORDERLOG。

將第一步APC應用自動生成的ABAP類的名稱維護到Authorization Program下面。這一步的目的是指定在ABAP Channel場景中,通過WebSocket進行數據收發的ABAP處理類名稱。將Channel ID/order_log抄下來。

3. 從上圖中得知我指定了ABAP類CL_CRM_ORDER_LOGGER用來將應用程序調用One Order API產生的日志發送到Web Socket上去,因此這一步需要對這個類進行編程了。完整代碼在我的github上,這里僅闡述要點。

在靜態構造函數里,將第二步創建的AMC ID和channel ID傳入生產者的構造器里。確實,ABAP Channel的場景就是一個典型的生產者/消費者模式,ABAP后臺生產的消息,通過Web Socket發送給瀏覽器由后者消費。

消息的發送通過下面這個SEND方法完成。

4. 重定義第一步APC應用自動生成的處理類的ON_START方法:

在這個方法里將第一步創建的APC應用和第二步創建的AMC應用做綁定。

5. 給API CRM_ORDER_MAINTAIN創建一個增強,把我的CL_CRM_ORDER_LOGGER注入進去。這樣每次該API被調用時,都會自動進行日志記錄并通過Web Socket發送給瀏覽器。

以上五步就是ABAP Channel生產者的實現。下面是消費者,即運行于瀏覽器里的Web應用的開發。

創建一個BSP應用,在index.htm里維護下面的代碼:

第17行聲明了進行前后臺通信的Web Socket url:

這樣消費者的開發也做完了。

大家在實際工作中,遇到繁瑣耗時的體力活的時候,也可以多想想,能不能用工具來減少工作量,提高工作效率。感謝閱讀。

更多閱讀

  • 聊聊C語言和ABAP
  • Jerry的ABAP, Java和JavaScript亂燉
  • Jerry的ABAP原創技術文章合集
  • ABAP開發人員未來應該學些什么
  • Jerry 2017年的五一小長假:8種經典排序算法的ABAP實現
  • SAP成都研究院35歲以上的開發人員都去哪兒了?
  • 一個SAP開發人員的雙截棍之路

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

總結

以上是生活随笔為你收集整理的动手使用ABAP Channel开发一些小工具,提升日常工作效率的全部內容,希望文章能夠幫你解決所遇到的問題。

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