1. 程式人生 > >ABAP很容易忽略的錯誤

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.