VinceCoder
9/30/2019 - 7:44 AM

Loop: performance INDEX

SORT lt_bkpf BY bukrs belnr gjahr.
SORT lt_bseg BY bukrs belnr gjahr.
LOOP AT lt_bkpf ASSIGNING <ls_bkpf>.
  READ TABLE lt_bseg TRANSPORTING NO FIELDS WITH KEY
      bukrs = <ls_bkpf>-bukrs
      belnr = <ls_bkpf>-belnr
      gjahr = <ls_bkpf>-gjahr BINARY SEARCH.
  CHECK sy-subrc = 0.
  LOOP AT lt_bseg ASSIGNING <ls_bseg> FROM sy-tabix.
    lv_counter = lv_counter + 1.
** Your logic **
    AT END OF gjahr.
      EXIT.
    ENDAT.
  ENDLOOP.
ENDLOOP.


******************************

Se si loopa prima sulle items evitiamo un loop pass

SORT lt_bkpf BY bukrs belnr gjahr.
SORT lt_bseg BY bukrs belnr gjahr.
LOOP AT lt_bseg ASSIGNING <ls_bseg>.
  AT NEW gjahr.
    READ TABLE lt_bkpf ASSIGNING <ls_bkpf> WITH KEY
        bukrs = <ls_bseg>-bukrs
        belnr = <ls_bseg>-belnr
        gjahr = <ls_bseg>-gjahr BINARY SEARCH.
    CHECK sy-subrc = 0.
  ENDAT.
  lv_counter = lv_counter + 1.
** Your logic **
ENDLOOP.