ABAP很容易忽略的錯誤
首選看這段程式碼
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.