首选看这段代码
SORT gt_mseg BY mblnr mjahr zeile.
LOOP AT lt_mseg INTO gs_mseg.
READ TABLE gt_mseg WITH KEY mblnr = gs_mseg-mblnr
mjahr = gs_mseg-mjahr
zeile = gs_mseg-zeile
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
APPEND gs_mseg TO gt_mseg.
ENDIF.
ENDLOOP.
1 用BINARY SEARCH 的时候需要排序,加了 SORT gt_mseg BY mblnr mjahr zeile. 这没错
2 问题在于, APPEND gs_mseg TO gt_mseg. 这句如果执行就打乱了原来的排序。问题就出来了,所以还要重新排序。
SORT gt_mseg BY mblnr mjahr zeile.
LOOP AT lt_mseg INTO gs_mseg.
READ TABLE gt_mseg WITH KEY mblnr = gs_mseg-mblnr
mjahr = gs_mseg-mjahr
zeile = gs_mseg-zeile
BINARY SEARCH
TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
APPEND gs_mseg TO gt_mseg.
SORT gt_mseg BY mblnr mjahr zeile.
ENDIF.
ENDLOOP.