999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ABAP程序性能優化研究

2018-01-29 13:04:40姚振郭駿劉濤張禾良方志遠
無線互聯科技 2017年18期
關鍵詞:程序

姚振+郭駿+劉濤+張禾良+方志遠

摘要:文章根據安徽省電力公司ERP系統在運行過程對二次開發程序性能優化方法進行了總結,介紹了ABAP程序性能分析方法,詳述ABAP程序常用和非常用性能優化方法,并對程序優化后的運行效果進行了總結。

關鍵詞:ABAP;程序;性能優化

安徽省電力公司企業資源計劃(EnterpriseResourcePlanning,ERP)項目自2008年啟動實施以來,幫助安徽省電力公司實現了人力資源管理、財務管理、物資管理、項目管理、設備管理及其相關報表與分析等功能,系統設計采用SAP系統(SystemApplicationandProductsinDataProcessing,SAP)R/3系統架構[1]。SAP具有強大的可配置功能,但對于一些特殊的業務需求,需要業務人員配合高級企業應用編程語言(AdvancedBusinessApplicationProgmmming,ABAP)開發人員進行二次開發,隨著系統數據量的增長,一些二次開發程序的運行速度變得越來越慢,有的甚至會超過系統最大允許運行時長而超時,不僅影響業務應用的效率也影響了用戶體驗[2]。因此,對二次開發程序開展性能優化工作是非常有必要的。

1ABAP程序性能分析的手段

對ABAP程序性能進行分析的方法很多,比如事務代碼STAD,SE30和ST05等,但目前人們使用最多的是用ST12來分析ABAP程序性能。

ST12的User模式可以跟蹤某一個用戶,建議不跟蹤自己。對于己經開始執行的程序,可以使用Workprocess模式進行跟蹤,還能設置跟蹤開始和結束時間。Currentmode模式是自己執行指定程序并同時進行跟蹤。根據ST12跟蹤分析結果,ABAP運行時間過長,一般來說是跟ABAP程序代碼運行效率低下有關;Database過長則一般是跟大量直接讀取數據庫有關系,比如LOOP中Select表數據。Nettime降序排列,找出花費時間最多的代碼,然后針對該代碼進行優化,對于單純的報表程序,優化后最好對于同樣的輸入條件并保證數據量沒有太大變化的情況下進行性能比較[3]。

2ABAP程序常用性能優化方法

在Loop循環中使用Where條件減少循環次數,因為減少循環次數可以減少CPU操作次數,減少操作時間。

避免使用Select-EndSelect語句:該語句其實是一個循環體,在數據量很大時會嚴重影響程序運行速度,而且語句在程序運行過程中會始終保持與數據連接,相當于在一個循環中反復訪問數據庫,很容易成為程序性能的瓶頸,建議使用一次性Table賦值。避免使用Select*語句,*代表返回所有

字段值,從編程習慣來說,一個優秀的程序員也不應該獲取自己不需要的數據,應只返回需要的字段的值。

Read內表建議盡量使用BinarySearch二分法查找,尤其要注意的一點的是,在使用二分法之前一定要對內表進行排序,否則有可能找不到正確數據。

對Loop嵌套循環,盡量帶Where條件,但如果數據量很大,可能帶了條件還是會很慢,甚至成為程序運行緩慢的瓶頸,這種情況建議根據BinarySearch二分法定位位置,然后再Loop,會大大提升查詢速度。

Jom連接使用:用Jom進行表連接使用很頻繁,但簇表不能直接使用Jom,比如BSEG表,如果要查詢BSEG表數據,只能直接查詢。進行表關聯時建議使用InnerJoin,無特殊業務需要不要使用LeftJoin,因為InnerJoin只連接匹配的行,而LeftJoin則會包含左邊表的全部行(不管右邊的表中是否存在與它們匹配的行),所以使用InnerJom內連接會顯著降低系統的負載,提升程序性能。需注意的一點是Jom超過3個表會出現性能問題,超過3個建議使用ForAllEntriesIn,再在Loop中通過二分法來Read內表獲取需要的數據。

關于ForAllEntriesIn的使用:一定要首先判斷內表是否為空,如果為空,系統會視為無條件全表查詢,如果是數據量不大的表,影響可能并不是很大,但如果是數據量非常大的表,比如BSEG和MSEG表,則會嚴重影響系統性能;當內表數據比較多時建議對其查詢條件排序去重,盡量去掉條件重復項,因為系統處理的時候是在Where中使用OR來查詢數據,如果數據太多會占用大量系統內存。

關于索引的使用:在對表進行查詢時如果表中有索引盡量在Where查詢條件中使用索引。使用索引的優點是可以使對應表的SQL語句執行得更快,缺點是會占用額外的數據庫空間,還會降低數據修改和插入的速度,所以新建索引需要考慮必要性和實用性,并非越多越好,建議盡量使用表中己有的索引。對于字段多而且數據量很大的系統標準表,比如MSEG表,庫存和財務的數據均存儲在該表,在新建索引時更要慎重。創建索引時需考慮字段的順序,客戶端MANDT必須放在第一位,其他字段順序根據業務實際需要來確定,且索引字段不宜過多,建議不超過5個。在Where的查詢條件中字段的順序最好跟索引里面的關鍵字保持一致,否則索引可能無效。

按時間區間獲取數據:以PROJ表為例,如果一次性取出所有數據,后續再關聯PRPS,MSEG等表查詢其他數據,運行速度可能非常慢,但如果根據ERDAT(創建時間)分時間區間如20170101到20170331查詢,查詢速度提升了一個等級。

適當以空間換時間:以MSEG表為例,退料總金額只能從該表查詢數據,使用常規優化方法根本無法滿足業務需要,經分析只需獲取BWART(移動類型)為222的數據,數據總計30萬條,一次性查詢數據到內表二分法排序Read,速度提升幾十倍。使用完成后應及時清空釋放內表所占用的空間[4]。

3ABAP程序其他性能優化方法

在安徽省電力公司ERP系統中有很多二次開發的報表,有些報表運行非常耗時,采用常規優化方法己經無法進一步提升運行速度,這就需要采用一些其他的非常規技術手段來進行優化。endprint

SAP系統并未限制用戶登錄次數,一個用戶可以多機登錄系統。比如項目創建程序是通過導入EXCEL模板數據完成項目創建,有的用戶多機登錄,同時打開多個窗口導入數據,并發數過多導致服務器工作進程資源占用過大,NRIV表無法及時釋放。此情況無法通過程序優化達到應有的效果,因為項目創建調用的是標準函數,無法對標準程序進行優化,但可以采用限制程序的運行個數來控制并發數,減輕服務器和數據庫壓力。

控制單個用戶執行個數。如用戶正在運行程序,提示用戶“該程序同時只能運行一個,您己經在運行該程序”。實現方法如下:首先調用系統標準函數“ENQUEUE_ESINDX”,該函數可判斷程序是否鎖定,如果程序己經在運行,再調用系統標準函數“ENQUE_READ”,根據返回的TABLE值ENQ,循環ENQ內表,如果GUNAME等于當前用戶名,則表示用戶己經在執行該程序。

控制程序報表執行總數。自定義新建一個配置表,新增程序名稱和最大允許同時執行次數兩列,例如報表A,100,表示報表A最多只能同時運行100個,超過該數量系統提示“服務器達到最大會話數,請稍候再試”信息。實現方法如下:在程序中調用系統標準函數“TH_WPINFO”,根據TABLE返回值WPLIST,再循環WPLIST內表,根據WP_REPORT值等于當前程序名來匯總,如果等于100說明己達最大值,否則允許用戶繼續執行。

為盡量減少并發數過多影響系統性能,建議根據實際情況在代碼中適當加入“WAITUPTONSECONDS”語句,強制增加等待時間。該語句對在LOOP循環中調用BAPI過賬特別有效,比如調用“BAPI_GOODSMVT_CREATE”函數生成物料憑證。

對于實時性要求不高但查詢比較耗時的報表可以考慮把程序放到后臺運行。實現方法如下:首先調用系統標準函數“JOB_OPEN”新建一個后臺作業,再執行計算邏輯,最后調用系統標準函數“J0B_CL0SE”關閉后臺作業[5]。

4結語

本文對人們在日常工作中的ABAP程序性能優化的常見和非常見的性能優化方法進行了總結,程序優化后運行速度有了顯著的提升,優化效果明顯。但也應考慮到程序優化不是萬能的,僅僅依靠程序優化并不能完全解決程序性能問題。

影響ERP系統運行速度的因素很多,比如網絡的傳輸速率,影響網絡傳輸速率的因素主要有帶寬、時延和丟包;Oracle數據庫性能,通過參數的調整達到性能的優化;Basis系統性能優化和應用服務器硬件配置等。為了進一步提升系統性能,應該把以上這些因素都考慮到。

[參考文獻]

[1]黃佳.SAP程序設計[M].北京:機械工業出版社,2005.

[2]李娜娜,李長海.ABAP編程中提高效率的幾個技巧[J].數字技術與應用,2010(4):37-38.

[3]潘吳,易澤湘.基于SAPR/3的ERP技術研究與應用[J]計算機技術與發展,2006(7):59-60.

[4]于慧,廖華元,陳剛.提高SAP系統ABAP程序性的方法研究[J].中國科技信息,2013(23):91-94.

[5]鄒玉龍,王昕蟲.SAPABAP程序優化方法的研究及應用[J].電腦知識與技術,2011(22):5496-5498.endprint

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 精品视频在线一区| 国产91熟女高潮一区二区| 国产麻豆精品在线观看| 欧美在线一二区| 毛片在线看网站| 亚洲网综合| 亚洲av成人无码网站在线观看| 欧美69视频在线| 婷婷综合亚洲| jizz在线观看| 久久国产精品无码hdav| 高潮毛片免费观看| 欧美高清国产| 亚洲欧美在线综合图区| 呦女亚洲一区精品| 波多野结衣无码AV在线| 久久天天躁夜夜躁狠狠| 免费看黄片一区二区三区| 国产特一级毛片| 国产欧美日韩va另类在线播放| 欧美专区日韩专区| www.国产福利| 国产女人18毛片水真多1| 成人韩免费网站| 国产麻豆精品久久一二三| 国产99精品视频| 国产精品无码影视久久久久久久| 亚洲综合婷婷激情| 露脸一二三区国语对白| 激情无码字幕综合| 国产亚洲精品自在线| yjizz视频最新网站在线| 久久精品无码专区免费| 麻豆国产原创视频在线播放| 久青草网站| 美女国内精品自产拍在线播放 | 亚洲精品在线影院| 欧美日韩在线成人| 精品小视频在线观看| 久热精品免费| 国产网站黄| 亚洲欧美日韩成人在线| 久久6免费视频| 色丁丁毛片在线观看| 精品福利视频网| 精品91视频| www.日韩三级| 婷婷久久综合九色综合88| 亚洲永久免费网站| 欧美精品在线视频观看| 97国产精品视频自在拍| 亚洲色图欧美视频| 亚洲精品另类| 欧美精品黑人粗大| 亚洲性网站| 欧美成人一区午夜福利在线| 亚洲男人天堂网址| 国产99在线| 五月婷婷综合网| 97国产在线观看| 亚洲第一色网站| 亚洲成人网在线观看| 欧洲在线免费视频| 免费女人18毛片a级毛片视频| 夜精品a一区二区三区| 国产人免费人成免费视频| 91久久国产综合精品| 色综合国产| 国产成人你懂的在线观看| 午夜激情婷婷| 国产成人永久免费视频| 欧美成人二区| 国产日本一线在线观看免费| 国产无码制服丝袜| 免费人欧美成又黄又爽的视频| jizz国产视频| 亚洲综合色吧| 亚洲人在线| 美女潮喷出白浆在线观看视频| 91网址在线播放| 另类重口100页在线播放| 无码免费的亚洲视频|