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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

一些通过SAP ABAP代码审查得出的ABAP编程代码优化建议

發布時間:2023/12/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一些通过SAP ABAP代码审查得出的ABAP编程代码优化建议 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 這兩個IF ELSE分支里檢測的條件其實邏輯上來說都是同一類,應該合并到一個IF分支里進行檢查:

It is an expensive operation to open a file in application server with 50MB file size.

Current logic is:

1. Open the file in application server

2. Read the file content line by line

3. If the file is regarding IPG or MIDH or TPG, handle with each line separately

The correct logic should be:

1. Check the file path whether it is IPG or MIDH or TPG related. If not, quit the report.

2. Handle with each line directly without evaluate file path in the BIG loop.

The validation logic for input records should be improved

Loop at all service BOM, check whether the ID in current loop does exist in validation table lt_valid_prod or lt_valid_sp. If so, delete them via DELETE TABLE XXX FROM .

Improvement: use DELETE XXX WHERE product_id NOT IN . It is more efficient when lt_srv_bom_file has a huge number of records. See comparison below ( unit: second )

這是一個性能問題。使用ABAP原生支持的NOT IN關鍵字可以獲得更好的性能。性能評測如下:

Avoid using SELECT to access table with a large number of entries

In product / IObject area, the best practice is to use OPEN CURSOR / FETCH NEXT CURSOR to access big DB table.

如果需要用ABAP OPEN SQL讀取一張包含海量記錄的數據庫表,那么推薦使用OPEN CURSOR進行分塊讀取。

Although this solution will spend almost the same time to fetch the data from DB, it has far less memory consumption compared with using SELECT to fetch ALL data from DB at one time.

The original dump due to out of memory issue could be eliminated by replace SELECT with OPEN CURSOR statement.

這種方式和直接用SELECT相比,能顯著減少內存消耗量。

使用并發編程提高應用程序場景

通過下面這段代碼模擬一個費時的ABAP程序:

定義一個ABAP函數:

這個函數里執行一大堆計算,然后把傳入的product ID寫到一張自定義表ZJERRY1里。

調用這個函數的代碼:

注意第二種方案使用STARTING NEW TASK達到的并發執行效果:

通過比較,第二種解決方案的效率是第一種的四倍。

1. The more CPU & DB time spent in ZINSERT, the better performance will be gained by using

parallel processing (Asynchronous RFC call).

2. The more number of ZINSERT call, the better performance will be gained by using parallel

processing.

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

總結

以上是生活随笔為你收集整理的一些通过SAP ABAP代码审查得出的ABAP编程代码优化建议的全部內容,希望文章能夠幫你解決所遇到的問題。

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