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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

利用ABAP 740的新关键字REDUCE完成一个实际工作任务

發布時間:2023/12/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用ABAP 740的新关键字REDUCE完成一个实际工作任务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

ABAP 740從2013年發布至今已經過去很長的時間了,下面這張圖來自SAP社區博客:

ABAP News for Release 7.40 – What is ABAP 7.40?

圖中的ABAP 8.0, 即現在的SAP Cloud for Customer和Business By Design后臺使用的ABAP版本NGAP - Next Generation ABAP Platform,里面存在不少只在8.0版本可用的關鍵字和語言特性。

因為C4C和BYD的ABAP后臺,客戶和partners們是無法訪問的,所以咱們回到ABAP 740這個版本。從該版本開始,ABAP支持了很多新的關鍵字和語法特性,“看起來有點不像傳統的ABAP編程語言了”。

本文咱們就來看一個具體的例子:ABAP 740里的一個新關鍵字REDUCE. 這個關鍵字的作用和在大規模數據集并行計算領域里廣泛使用的"Map-Reduce"編程模型中的Reduce操作類似,可以按照字面意思理解為“歸約”。

下圖是Map Reduce框架的工作步驟,統計一個海量輸入數據集(比如大于1TB)中的單詞出現次數。作為ABAP開發人員,我們沒必要了解Map Reduce框架的每個執行步驟,只需緊盯框架的輸入,以及執行結果就行了。

回到Jerry接受的實際工作任務。德國同事讓Jerry在某個CRM測試系統上做個統計,列出在數據庫表CRM_JSTO里,OBTYP(Object Type)和STSMA(Status Schema)這兩列擁有相同值的內表行的個數。大家可以把"OBTYP和STSMA兩列具有相同值的內表行"類比成上圖中重復出現的單詞。

下圖是CRM_JSTO的部分行:

下圖是Jerry完成的任務: 測試系統上內表一共有55多萬行,其中有90279行,只維護了OBTYP為TGP,而沒有維護STSMA. 排名第二的是COH和CRMLEAD的組合,出現了78722次。

稍稍做過一些ABAP開發的朋友們,一定會立即寫出下面的代碼:

利用SELECT COUNT直接在數據庫層完成統計工作。這也是SAP推薦的做法,所謂Code pusudown準則,即能放到HANA數據庫層面進行的操作,就盡量放進去,以充分利用HANA強大的計算能力。在數據庫能夠完成計算邏輯的前提下,盡量避免把計算邏輯放到Netweaver ABAP應用層去做。

不過,我們也需要注意到這種方式的局限性。Jerry之前曾經引用過SAP CTO的名言:

  • There is no future with ABAP alone
  • There is no future in SAP without ABAP

未來的ABAP會走向開放,互聯的道路?;氐竭@個需求本身,假設待檢索的輸入數據不是從ABAP數據庫表中來,而是來自HTTP請求,或者第三方系統發過來的IDOC,此時我們無法再使用OPEN SQL本身的SELECT COUNT操作,而只能在ABAP應用層解決這個問題。

所謂技多不壓身,Jerry這里介紹兩種用ABAP完成這個需求的方式。

第一種方式比較傳統,實現在方法get_result_traditional_way里:

ABAP的LOOP AT GROUP BY這個關鍵字組合簡直就像是為這個需求量身定做一般:給GROUP BY指定obtyp和stsma這兩列,然后LOOP AT會自動將輸入內表的行記錄根據這兩列的值進行分組,每組行記錄的個數通過關鍵字GROUP SIZE自動計算出來,每組各自的obtyp和stsma的值,以及組內行記錄的條目數,存儲在REFERENCE INTO指定的變量group_ref里。ABAP顧問需要做的事情,只是簡單地把這些結果存儲到輸出內表即可。

第二種辦法,就是本文標題所述,使用ABAP 740新的REDUCE關鍵字:

上面的代碼乍一看可能覺得有點晦澀,但仔細閱讀后發現這種方式本質上也采用了和方法一LOOP AT GROUP BY同樣的分組策略——根據obtyp和stsma分組,這些子組通過變量<group_key>標識,然后通過第10行的REDUCE關鍵字,通過累加的方式,手動計算這個組的條目數——把一個大的輸入集根據GROUP BY指定的條件歸約成一個個規模更小的子集,然后分別針對子集進行計算——這就是REDUCE關鍵字通過字面含義傳遞給ABAP開發人員的處理思想。

總結和比較一下這三種實現方式:當待統計的數據源為ABAP數據庫表時,一定優先選用OPEN SQL的方式,使計算邏輯在數據庫層完成,以獲得最佳的性能。

當數據源并非ABAP數據庫表,而分組統計的需求為簡單的計數操作(COUNT)時, 優先用LOOP AT … GROUP BY … GROUP SIZE,使得計數操作通過GROUP SIZE在ABAP kernel完成,以獲得較好的性能。

當數據源并非ABAP數據庫表,而分組統計的需求為自定義的邏輯時,用本文介紹的第三種REDUCE解法,將自定義統計邏輯寫在第11行的NEXT關鍵字后。

這三種解法的性能依次遞減,不過適用的場合和靈活程度依次遞增。

LOOP AT … GROUP BY … GROUP SIZE,在Jerry的服務器上處理55萬條記錄,用了0.3秒,而REDUCE則需花費0.8秒。

本文提到的所有ABAP代碼均可從我的SAP博客獲得:

A real case to use REDUCE to finish a task in daily work

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

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的利用ABAP 740的新关键字REDUCE完成一个实际工作任务的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美日韩在线高清 | 91免费黄| 神马福利视频 | 日本一区二区视频在线播放 | 日日摸日日操 | 宅男深夜视频 | 久草资源在线视频 | 欧美性猛交 xxxx | 涩涩涩涩av | 美女综合网 | 免费高清视频在线观看 | 五月婷婷七月丁香 | 欧美日韩一区二区三区国产精品成人 | 亚洲国产精品成人综合 | 激情成人av| 黄瓜视频在线观看 | 就要干就要操 | 六月激情网 | 操人视频在线观看 | 亚洲理论在线 | 久久精品亚洲a | 蜜桃av噜噜 | 日韩大尺度视频 | 黑人玩弄人妻一区二区三区 | 久久久久噜噜噜亚洲熟女综合 | 五月网 | 国产欧美视频一区二区三区 | 亚洲黄a| 丰满熟女一区二区三区 | 特级毛片av | 国产精品高潮视频 | 亚洲精品久久久久中文字幕二区 | 亚洲啪啪| 国产专区一区 | 蜜桃啪啪 | 久久a毛片| 日本人三级 | 神马午夜伦理影院 | 亚欧美一区二区三区 | 中国黄色网址 | 午夜小视频免费 | 波多一区二区 | 超碰久草 | 成人免费视频网站在线观看 | 天天操人人 | 国产综合视频在线 | 国产色无码精品视频 | 天堂中文在线最新 | 免费小视频在线观看 | 久久综合亚洲精品 | 欧美激情一区在线 | 91久久国产综合久久91精品网站 | 伊人天天操 | 成年女人色毛片 | 91青青草视频 | 国产成人在线免费观看 | 强行挺进白丝老师翘臀网站 | 免费精品视频 | 国产啊啊啊啊 | 91超薄肉色丝袜交足高跟凉鞋 | 国产精品自拍一区 | 日本精品一区二区三区四区的功能 | 国产婷婷色综合av蜜臀av | 综合网伊人| 天堂久久av | 精品国产理论 | 极品少妇一区 | 男人晚上看的视频 | 波多野结衣av中文字幕 | 日韩黄色录像 | 欧美一区二区三区久久妖精 | 在线观看高清视频 | 九九热九九热 | 国产日韩二区 | 免费无码国产精品 | 婷婷四房综合激情五月 | 网红日批视频 | 你操综合 | 亚洲AV午夜福利精品一级无码 | 中文字幕在线播放 | 免费无码毛片一区二三区 | 亚洲AV成人精品 | 播五月婷婷 | 久久刺激| 免费高清成人 | 波多野结衣av在线播放 | 久久久久久九九九九九 | 开元在线观看视频国语 | 亚洲性xxx| 色91精品久久久久久久久 | 国产麻豆精品在线观看 | 中国丰满人妻videoshd | 国产精品91久久 | 亚洲电影在线看 | 在线免费国产 | 久久88 | 日韩免费av一区二区 | 黄色一级图片 | 医生强烈淫药h调教小说视频 |