BINARY SEARCH
이진 탐색 :
CLEAR: GT_ZPDCT5003, GT_ZPDCT5003[].
SELECT * INTO TABLE GT_ZPDCT5003
FROM ZPDCT5003
WHERE SHPNO IN R_PSPID
AND NETEST EQ G_NETEST
AND LOTNO IN R_LOT
AND BLK_NO IN R_BLOCK
AND STATUS <> '3'
ORDER BY SHPNO NETEST LOTNO BLK_NO MTYPE SER PART_NO.
ZPDCT5003 테이블에서 조건에 만족하는 데이터들을
GT_ZPDCT5003에 저장
// 5155에 들어온 데이터가 임시로 저장되는 곳이 tempo5155
// gs_display1은 헤드 그리드의 정보
// 헤드의 정보와 비교해서 해당 데이터의 상세정보를 보여주는 5155
LOOP AT GT_TEMPO5155 WHERE SHPNO EQ GS_DISPLAY1-SHPNO
AND NETEST EQ G_NETEST
AND LOTNO EQ GS_DISPLAY1-LOTNO
AND BLK_NO EQ GS_DISPLAY1-BLK_NO
AND MTYPE EQ GS_DISPLAY1-MTYPE
AND SCREEN EQ 'X'.
CLEAR GT_DISPLAY2.
//헤드에서 클릭된 값과 같은 데이터들을 5003에서 찾기
READ TABLE GT_ZPDCT5003 WITH KEY SHPNO = GT_TEMPO5155-SHPNO
NETEST = GT_TEMPO5155-NETEST
LOTNO = GT_TEMPO5155-LOTNO
BLK_NO = GT_TEMPO5155-BLK_NO
MTYPE = GT_TEMPO5155-MTYPE
SER = GT_TEMPO5155-SER
PART_NO = GT_TEMPO5155-PART_NO
BINARY SEARCH.
IF SY-SUBRC = 0. " 데이터가 있으면
CONCATENATE GT_ZPDCT5003-ZZWKOBJ
GT_ZPDCT5003-ZZWKSTG2
GT_ZPDCT5003-ZZWKTYP2
GT_ZPDCT5003-ZZWKTYP_DTL2
INTO GT_TEMPO5155-ACTIVITY.
MOVE-CORRESPONDING GT_TEMPO5155 TO GT_DISPLAY2.
ENDIF.
select 할 때 order by 한 정렬 순서나
sort 한 정렬 순서와
read table 에서 with key 의 정렬 순서가 같아야 데이터가 제대로 조회된다.
디버깅해보는데 tempo5155에 값은 똑바로 들어오고
5003에도 해당 데이터가 있는데 SY-SUBRC 가 계속 4가 뜨길래
뭐지뭐지 했는데
ㅎㅎ order by 순서와 with key 순서가 달라서였다.