Ⅰ. ERP/1. ABAP

[SAP ABAP] select single 지양! 대신에 이렇게

초록활명수 2022. 9. 27. 13:53
728x90

SELECT SINGLE 지양한다고 한다.

여태까지 많이 썼는데 말이지 ㅎㅎ..

SELECT SINGLE은 계속 DB에 접속하기 때문에 많은 양을 추출해올때는 부하가 걸릴 수 있다.

   SELECT SINGLE
                          lsbew AS zlsbew
                          lhbew AS zlhbew
                          lkorr AS zlkorr
     FROM t030h
     INTO CORRESPONDING FIELDS OF gs_data_2
      WHERE hkont = gs_data-zhkont.

구조체 형식으로 single 사용해서 가져오지말고,

Internal Table을 만들어서 담아가지고 활용해라.

LOOP AT gt_data INTO gs_data.
    CLEAR ls_hkont.
    MOVE-CORRESPONDING gs_data TO ls_hkont.
    APPEND ls_hkont TO lt_hkont.
  ENDLOOP.

  SORT lt_hkont.
  DELETE ADJACENT DUPLICATES FROM lt_hkont COMPARING ALL FIELDS. "중복된 행 지우기"
  IF lt_hkont IS NOT INITIAL.
    SELECT hkont AS zhkont
           lsbew AS zlsbew
           lhbew AS zlhbew
           lkorr AS zlkorr
     FROM t030h
     INTO CORRESPONDING FIELDS OF TABLE lt_data
      FOR ALL ENTRIES IN lt_hkont
      WHERE hkont = lt_hkont-zhkont.
  ENDIF.
  
  
 READ TABLE lt_data INTO gs_data_2 WITH KEY zhkont = gs_data-zhkont.
728x90