Skip to content

嵌套循环优化

网上分析挺多,我就不重复了,直接上个有效的优化方案。

二分查找

示例代码
TYPES:
  BEGIN OF ty_data,
    field1 TYPE string,
    field2 TYPE string,
  END OF ty_data.

DATA:
  lt_head TYPE STANDARD TABLE OF ty_data,
  ls_head TYPE ty_data,
  lt_item TYPE STANDARD TABLE OF ty_data,
  ls_item TYPE ty_data.

SORT lt_item BY field1 field2.

LOOP AT lt_head INTO ls_head.
  " ABAP中的二分查找,会找到重复项的首项
  READ TABLE lt_item TRANSPORTING NO FIELDS WITH KEY field1 = ls_head-field1 BINARY SEARCH.
  IF sy-subrc = 0.
    LOOP AT lt_item INTO ls_item FROM sy-tabix.
      IF ls_item-field1 <> ls_head-field1.
        EXIT.
      ENDIF.
      " write something...
    ENDLOOP.
  ENDIF.
ENDLOOP.