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.
 

猜你喜欢

转载自blog.csdn.net/ityangjia/article/details/83988183