본문 바로가기

SAP/ABAP

[SAP ABAP] LOOP AT vs. READ TABLE

LOOP AT vs. READ TABLE 실무 개념 정리


✅ LOOP AT

  • 요약
    • 내부 테이블을 순서대로 반복
    • 전체 데이터 반복 처리
  • 왜 중요한가?
    • MODIFY, DELETE 가능
    • FIELD-SYMBOL 사용
    • 🔍 FIELD-SYMBOL이란? 실제 데이터를 복사하지 않고, 메모리 주소를 참조해 원본 데이터에 직접 접근하는 포인터 개념의 변수
  • 앞으로 어떻게 적용할까?
    • 전체 데이터를 순회하며 조건에 맞는 데이터를 가공/플래그 처리할 때 사용
    • 루프 내에서 데이터를 수정해야 할 경우 반드시 ASSIGNING 로 처리
LOOP AT lt_customer INTO ls_customer.
  IF ls_customer-country = 'KR'.
    ls_customer-flag = 'X'.
    MODIFY lt_customer FROM ls_customer.
  ENDIF.
ENDLOOP.
LOOP AT lt_table ASSIGNING <fs_line>.
  <fs_line>-flag = 'X'.  "실제 lt_table이 수정됨"
ENDLOOP.
IF <fs_customer> IS ASSIGNED. "ASSGIN 여부 확인
  WRITE: <fs_customer>-name.
ELSE.
  WRITE: '해당 고객이 존재하지 않습니다.'.
ENDIF.

✅ READ TABLE

  • 요약
    • 특정 조건값 탐색 시 사용
  • 왜 중요한가?
    • WITH KEY로 빠른 탐색
    • BINARY SEARCH 시 빠름 (O(log n))
    • INTO 사용 시 복사본 → 수정 불가, 단 ASSIGNING 사용 시 참조하여 수정 가능
  • 앞으로 어떻게 적용할까?
    • 조건에 맞는 한 건의 데이터를 빠르게 찾을 때
    • 루프 없이 존재 여부를 검사하거나 값만 읽고 싶을 때
READ TABLE lt_customer INTO ls_customer
  WITH KEY customer_id = 'C001'.

IF sy-subrc = 0.
  WRITE: ls_customer-name.
ENDIF.

기준 실무 판단

판단 기준 추천 구문 설명
전체 반복이 필요할 때 LOOP AT 내부테이블 전체 순회
조건에 맞는 1건 찾을 때 READ TABLE 단건 조회 최적
성능 중요 + 정렬된 테이블 READ TABLE ... BINARY SEARCH 고속 탐색
루프 내 검색 반복될 때 SORT + BINARY SEARCH 성능 향상 핵심 포인트

*잘못된 부분이 있다면 댓글 부탁드려요~

'SAP > ABAP' 카테고리의 다른 글

[SAP ABAP] HEADER LINE  (4) 2025.07.23
[SAP ABAP] FIELD-SYMBOLS vs. DATA  (0) 2025.07.22
[SAP ABAP] READ TABLE WITH BINARY SEARCH  (2) 2025.07.17
[SAP ABAP] SELECT SINGLE vs. SELECT ... UP TO 1 ROWS  (0) 2025.07.15
[SAP ABAP] FOR ALL ENTRIES vs. JOIN  (0) 2025.07.14