gt_list라는 모든 결과값을 조회가능한 인터널 테이블이 있고
gt_zsdref라는 gt_list의 몇몇 키필드가 있는 테이블이 있습니다.
select-options에 '특정값'을 지정하면
gt_zsdref에 있는 gt_list의 키필드들을 gt_list와 비교해서 gt_zsdref에 있는것만 gt_list의 형식으로
출력하는것인데 로직을 어찌 세워야 할까요?
일반 테이블끼리면 where 조건 쿼리문써서 비교해서 가져올텐데
인터널테이블끼리는 어찌해야 할지 모르겠습니다.
일단 실험해본 로직입니다..
* IF s_vbeln EQ '특정값'.
LOOP AT gt_list.
IF gt_zsdret-retdat EQ gt_list-erdat
AND gt_zsdret-dldat EQ gt_list-edatu
AND gt_zsdret-vbelndl EQ gt_list-vbeln_a
AND gt_zsdret-posnrdl EQ gt_list-posnn_a
AND gt_zsdret-posnrbl EQ gt_list-vbeln_b
AND gt_zsdret-vbelnbl EQ gt_list-posnn_b.
append gt_list02.
CLEAR gt_list.
ELSE.
ENDIF.
ENDLOOP.
* ENDIF.
일단 IF조건문은 아예 먹히질 않더군요..
주석처리한후 디버깅 해보니 양쪽 인터널 테이블의 필드값은 변하지 않으면서
계속 루핑만 도니 당연히 필드값이 맞는 경우가 1개도 없었습니다..
'특정값'이라는게 B의 Key값에 대한 조회 조건인가요 ?
만약 그렇다면.
Data : c like a occurs 0 with header line. "A타입의 C라는 인터널테이블 생성합니다.
loop at b where b의key in s_key(특정값)
read table a with key a-key = b-key필드1....n.
if sy-subrc eq 0.
move-corresponding a to c.
append c.
endif.
endloop.