abap程序优化(一)二分法详解编程语言

前言

在abap开发报表程序等时经常需要处理各种系统表中的数据,当处理数据过多时会使程序运行速度变慢。
虽然loop嵌套会使程序速度减慢,但有时是无法避免的,例如通过header处理item中数据。

解决方案

利用二分法查找数据,在大数据量情况下会大幅度提升查找速度。

实例

对工单处理

DATA:  gt_afko TYPE STANDARD TABLE OF afko, 
       gw_afko LIKE LINE OF gt_afko, 
       gt_afpo TYPE STANDARD TABLE OF afpo, 
       gw_afpo LIKE LINE OF gt_afpo, 
       g_index TYPE sy-tabix. 
 
SELECT * FROM afko 
  INTO TABLE gt_afko 
  UP TO 5000 ROWS. 
 
SELECT * FROM afpo 
  INTO TABLE gt_afpo 
  FOR ALL ENTRIES IN gt_afko 
  WHERE aufnr  = gt_afko-aufnr. 
 
"用二分法必须先排序 
SORT gt_afko BY aufnr. 
SORT gt_afpo BY aufnr. 
 
LOOP AT gt_afko INTO gw_afko. 
  "二分法查找 
  READ TABLE gt_afpo INTO gw_afpo WITH KEY aufnr = gw_afko-aufnr BINARY SEARCH. 
  IF sy-subrc = 0. 
    g_index = sy-tabix. 
    LOOP AT gt_afpo INTO gw_afpo FROM g_index. 
      IF gw_afpo-aufnr >< gw_afko-aufnr. 
        EXIT. 
      ELSE. 
        "数据处理 
      ENDIF. 
    ENDLOOP. 
  ENDIF. 
ENDLOOP. 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/17877.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论