ABAP 코딩 (9) BINARY SEARCH

빵섭·2024년 8월 25일
0

💻 SYNC-ABAP 코딩

목록 보기
9/9
post-thumbnail

🌞 BINARY SEARCH ( 이진탐색 )

개발을 처음 접하는 입장으로 이진탐색이 어떤 것인지 잘몰랐는데
정리가 잘된 블로그가 있어 해당 블로그 링크를 추가함 😀
SAP 기술 블로그


BINARY SEARCH 를 사용하기 위해서 전제조건
→ 반드시 WITH KEY 로 찾을 필드 순서로 정렬을 시킬 것

1. ORDER BY 절을 통한 정렬
2. SORT [ITAB] BY [필드],[필드]... : 해당 코드를 통한 정렬


💡 [ BINARY SEARCH 실습 ]

[ 문제 ]

[ 코드 ]

DATA : BEGIN OF gs_mat,
         matnr TYPE mara-matnr,
         mtart TYPE mara-mtart,
         mtbez TYPE t134t-mtbez,
         matkl TYPE mara-matkl,
       END OF gs_mat,

       gt_mat   LIKE TABLE OF gs_mat,

       gt_mtbez TYPE TABLE OF t134t,
       gs_mtbez LIKE LINE OF gt_mtbez.

CLEAR   : gs_mat, gs_mtbez, gv_index.
REFRESH : gt_mat, gt_mtbez.

SELECT matnr mtart matkl
  INTO CORRESPONDING FIELDS OF TABLE gt_mat
  FROM mara.

IF sy-subrc NE 0. " 주데이터가 gt_book 이므로 확인.
  WRITE : 'No data found.'.
  STOP.
ENDIF.

SELECT spras mtart mtbez
  INTO CORRESPONDING FIELDS OF TABLE gt_mtbez
  FROM t134t
 WHERE spras = sy-langu
 ORDER BY mtart.

LOOP AT gt_mat INTO gs_mat.

  gv_index = sy-tabix.

  READ TABLE gt_mtbez INTO gs_mtbez WITH KEY mtart = gs_mat-mtart
                                    BINARY SEARCH.
  IF sy-subrc    = 0.
    gs_mat-mtbez = gs_mtbez-mtbez.

    MODIFY gt_mat FROM gs_mat INDEX gv_index
    TRANSPORTING mtbez.
    CLEAR : gs_mat, gs_mtbez, gv_index.

  ENDIF.

ENDLOOP.

cl_demo_output=>display( gt_mat ).

❗ READ TABLE 이후에 반드시 sy-subrc 문을 추가하여 데이터를 읽었는지 확인이 필요

profile
ABAP / SAP

0개의 댓글