메뉴 건너뛰기

SAP 한국 커뮤니티

Internal table 사용시 속도개선을 위한 구문

노름마치 2007.11.14 14:05 조회 수 : 10036 추천:10

LOOP WHERE 절 개선


- 개선전
  LOOP AT it_mseg WHERE spmon EQ p_month
                    AND werks EQ it_box-werks
                    AND charg EQ it_box-zboxno.
                                     
- 개선후
  SORT IT_MSEG_PLANT BY SPMON WERKS CHARG.  
  READ TABLE IT_MSEG_PLANT WITH KEY SPMON = P_MONTH    
                                    WERKS = IT_BOX-WERKS
                                    CHARG = IT_BOX-ZBOXNO
                                    BINARY SEARCH TRANSPORTING NO FIELDS.
  CHECK SY-SUBRC = 0.
  LOOP AT IT_MSEG_PLANT FROM SY-TABIX.
   IF IT_MSEG_PLANT-SPMON <> P_MONTH OR
      IT_MSEG_PLANT-WERKS <> IT_BOX-WERKS OR
      IT_MSEG_PLANT-CHARG <> IT_BOX-CHARG.
     EXIT.
   ENDIF.
   ....
   ....
  ENDLOOP.



READ 문 개선


- 개선전
  READ TABLE it_ztm3e300_tmp WITH KEY  werks  = it_ztm3e300-werks 
                                       zponor = it_ztm3e300-zponor.
                                      
- 개선후
  SORT IT_ZTM3E300_TMP BY WERKS ZPONOR. <= 추가
  READ TABLE it_ztm3e300_tmp WITH KEY werks  = it_ztm3e300_plant-werks
                                      zponor = it_ztm3e300_plant-zponor
                                      BINARY SEARCH. <= 추가



MODIFY 문 개선


- 개선전
  MODIFY it_hub50 TRANSPORTING wruser wrdate wrtime wrstatus
                         WHERE bukrs  = w_hub50-bukrs
                           AND sndate = w_hub50-sndate
                           AND trnscd = w_hub50-trnscd
                          
- 개선후
  내부테이블을 SORTED TABLE 로 선언



DELETE 문 개선


- 개선전
  LOOP AT IT_DEL
    DELETE it_010  WHERE lotno = it_del-lotno.
    DELETE it_011  WHERE lotno = it_del-lotno.
  ENDLOOP
 
- 개선후
  READ TABLE IT_010 WITH KEY LOTNO = IT_DEL-LOTNO
                             BINARY SEARCH TRANSPORTING NO FIELDS.
  LOOP AT IT_010 FROM SY-TABIX.
    IF IT_010-LOTNO <> IT_DEL-LOTNO.
      EXIT.
    ENDIF.
    DELETE IT_010.
  ENDLOOP.



Nested Loops


DATA : IVBAK LIKE VBAK OCCURS 0,
       IVBAP LIKE VBAP OCCURS 0.


SORT : IVBAK BY VBELN,
       IVBAP BY VBELN.
      
- 개선전
  LOOP AT IVBAK.
    LOOP AT IVBAP WHERE VBELN = VBAK-VBELN.
      WRITE:/ IVBAK-VBELN, IVBAP-VBPOS, ...
    ENDLOOP.
 ENDLOOP.


- 개선후
  LOOP AT IVBAK.
    READ TABLE IVBAP WITH KEY VBELN = IVBAK-VBELN
                     BINARY SEARCH TRANSPORTING NO FIELDS.
    LOOP AT IVBAP FROM SY-TABIX.
      IF IVBAP-VBELN <> IVBAK-VBELN.
        EXIT.
      ENDIF.
      WRITE:/ IVBAK-VBELN, IVBAP-VBPOS, ...
    ENDLOOP.
  ENDLOOP.
 

번호 제목 글쓴이 날짜 조회 수
387 Second index 생성시 MANDT 필드 필요 없다. [2] 모포 2012.05.08 6742
386 자주 사용하는 시스템변수 [8] 열공아밥 2009.12.20 6715
385 LIKE (% _)의 사용법 [8] ecbase 2006.12.02 6703
384 유용한 Abap Sample Package [2] 양키(이경환) 2014.03.31 6702
383 BAPI_PR_CREATE 구매요청 생성시에 사용하세요. 이렇게도 쓸 수 있군요. [1] 노름마치 2007.12.10 6683
382 특수 문자 표현 [8] ecbase 2006.12.02 6677
381 TABLE INDEX 추가 및 후속작업 [16] file 루베루베루베룹 2009.04.22 6664
380 Buffer Bypass 방법 [4] sapjoy 2010.05.20 6622
379 [Tip] Explorer 8.0 & SAP GUI 7.2 fancky 2011.05.19 6603
378 <img src=d.gif>[Function]Edit 팝업창을 뛰워보자[추천:e-abap] [19] file 양키 2010.09.28 6602
377 테이블 구조 다운로드 DD03L 테이블 조회 [1] sapjoy 2006.12.12 6552
376 [Function]금액(숫자)를 영문철자로 바꿔보자 [3] file 양키 2010.09.28 6551
375 SAP Icon 출력 [3] 홍성현 2007.08.09 6538
374 Nested loops Tunning [3] sapjoy 2012.03.13 6512
373 (-) 부호 값 앞에 붙이기 [6] 권장원 2009.11.06 6473
372 SAP의 On-line Program에서 Double Click Event 잡는 법 [8] Delight 2008.04.30 6466
371 특정프로그램 내에서 프린터로 직접 프린트하는 함수 [8] 미쓰조 2010.03.17 6447
370 Internal Table Read performance [4] file sapjoy 2012.03.12 6431
369 add 구문 [3] sapjoy 2006.12.02 6431
368 업로드할 엑셀 파일을 TXT 파일(탭으로 분리된)로 내리지 않고 엑셀파일로 꿀단지 2011.10.11 6378