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
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 亚洲一区二区成人| 99无码中文字幕视频| 无码精品国产dvd在线观看9久| 婷五月综合| 国产成人精品亚洲77美色| 久久青草免费91线频观看不卡| 国产毛片基地| 成人在线观看不卡| 亚洲综合天堂网| 日本亚洲成高清一区二区三区| 亚洲男人天堂久久| a在线亚洲男人的天堂试看| 最新国产在线| 欧美精品在线免费| 视频一本大道香蕉久在线播放| 亚洲成人免费看| 波多野结衣第一页| 免费无码又爽又黄又刺激网站 | 免费人成又黄又爽的视频网站| 国产高清在线精品一区二区三区 | 72种姿势欧美久久久久大黄蕉| www.精品国产| 国产精品亚洲一区二区在线观看| 国产黄色爱视频| 国产91小视频| 久久精品无码中文字幕| 久久久久人妻精品一区三寸蜜桃| 亚洲无限乱码| 日韩不卡高清视频| 99re在线观看视频| 欧美日韩国产在线人| 国产鲁鲁视频在线观看| 亚洲国产天堂久久综合226114| 九色在线观看视频| 国产在线第二页| 亚洲中文久久精品无玛| 亚洲成aⅴ人在线观看| 亚洲综合色婷婷中文字幕| 一级毛片不卡片免费观看| 全部毛片免费看| 欧美区一区| 亚洲伊人久久精品影院| 国产激情第一页| 又爽又大又黄a级毛片在线视频| 99这里只有精品免费视频| 国产成人精品综合| 精品久久国产综合精麻豆| 日韩精品免费一线在线观看| 日韩福利在线观看| 亚洲av片在线免费观看| 亚洲天堂自拍| 久996视频精品免费观看| 国产成人精品一区二区三区| 人妻精品全国免费视频| 国产肉感大码AV无码| 大香网伊人久久综合网2020| 女人毛片a级大学毛片免费| 青青久视频| 欧美三级日韩三级| 精品国产成人av免费| 成人va亚洲va欧美天堂| 波多野结衣在线一区二区| 欧美日韩福利| 精品视频一区在线观看| 午夜精品久久久久久久99热下载| 免费xxxxx在线观看网站| 国产97色在线| 亚洲第一国产综合| 国产午夜精品一区二区三区软件| 精品国产福利在线| 1769国产精品免费视频| 成人久久精品一区二区三区| 国产69囗曝护士吞精在线视频| 国产老女人精品免费视频| 中文字幕2区| 午夜精品福利影院| 91精品国产丝袜| 少妇露出福利视频| 99精品热视频这里只有精品7| 国产永久在线视频| 国产精品大白天新婚身材| 国产黑人在线|