3개의 테이블 A, B, C에서
A와 B를 inner join건 itab1을
C와 루핑을 돌리면서 C의 필드를 몇개 추가하려고 합니다.
3개 테이블 전부 공동키가 있어 3개를 전부 inner join해본결과
C테이블의 값중 null값으로 나와야 할부분까지 전부 레코드가 나오더군요.
또..itab1에 C를 outer join해보려 했으나..
C테이블 추가시 파라메터 조건절을 outer join에서는 넣을수없다고(?) 오류가 뜨더군요.
-> 이건 현재 실패하고 있는 로직입니다..
IF p_vb_n EQ space.
p_vb_n = '%'.
ENDIF.
IF p_vb_v EQ space.
p_vb_v = '%'.
ENDIF.
SELECT
a~auart
a~vbeln
b~posnr
b~matnr
b~kwmeng
b~netwr
FROM vbak AS a
INNER JOIN vbap AS b
ON a~vbeln EQ b~vbeln
INTO CORRESPONDING FIELDS OF TABLE gt_list01
WHERE a~erdat IN s_erdat
AND a~auart IN s_auart.
SELECT
a~vbeln
c~vbeln AS vbeln_a
c~posnn
FROM vbak AS a
INNER JOIN vbfa AS c
ON a~vbeln EQ c~vbelv
INTO CORRESPONDING FIELDS OF TABLE gt_list02
WHERE c~vbtyp_n LIKE p_vb_n
AND c~vbtyp_v LIKE p_vb_v.
LOOP AT gt_list01.
CLEAR gt_list03.
MOVE-CORRESPONDING gt_list01 TO gt_list03.
APPEND gt_list03.
ENDLOOP.
LOOP AT gt_list02.
CLEAR gt_list03.
MOVE-CORRESPONDING gt_list02 TO gt_list03.
APPEND gt_list03.
ENDLOOP.
지금 이렇게 해봤는데 gt_list01에 있는 레코드는 gt_list03에 올라가나 gt_list02 레코드는 전혀 안들어갑니다.
gt_list라는 인터널 테이블을 만들고 01~03까지 like를 써서 그 테이블구조를 그대로 가져온 상태고요..
설명이 부족해도.. 초보자의 어설픈점이니 웃어넘겨주시고.. 답변좀 부탁드리겠습니다 ^^;
%라는 조건이 잘못 된것 같군요.
like '%A' 이런식으로 표현해 주셔야 할 것 같은데요.
그리고 VBTYP_N , VBTYP_V 는 자릿수가 한자릿수로 알고 있습니다.
굳이 LIKE를 쓰지 않으셔도 될 것 같은데요...