1번테이블 2번테이블
고객명 플랜트 고객명
111111 1234 111111
p5678 5678 222222
이럴 경우
1번테이블에서 고객명이 2번과 같을경우엔 고객명은 그대로 쓰고 플랜트만 추가합니다.
1번테이블에 p 로 시작하는 고객명이 나오면 2번 테이블에서 플랜트에 p 를 붙여서 같을경우
2번 테이블의 고객명을 쓰고 플랜트명도 추가합니다.
이런식으로 select 하는 문입니다..
제가 짠거로는 처음 고객명이 같을때는 가능한데 두번째 p로 시작하는 고객명이 나올때는 값이 한번 나오고
더이상 나오지 않습니다.
많은 도움 바랍니다.
*==============================================================================================
SELECT
*
INTO CORRESPONDING FIELDS OF TABLE IT_TANK2
FROM ZSSCMAST AS A
WHERE
A~MATNR IN R_MATNR
AND A~KUNNR IN R_KUNNR.
LOOP AT IT_TANK2.
IF NOT IT_TANK2-KUNNR IS INITIAL.
SELECT SINGLE KUNNR WERKS
INTO (IT_TANK2-KUNNR, IT_TANK2-WERKS)
FROM ZSCCCSKS
WHERE
KUNNR EQ IT_TANK2-KUNNR.
ITAB-KUNNR = IT_TANK2-KUNNR.
ITAB-WERKS = IT_TANK2-WERKS.
APPEND ITAB.
SORT ITAB BY KUNNR MATNR.
ENDIF.
IF NOT IT_TANK2-KUNNR IS INITIAL.
SELECT SINGLE KUNNR WERKS
INTO (IT_ZSCCCSKS-KUNNR, IT_ZSCCCSKS-WERKS)
FROM ZSCCCSKS
WHERE KUNNR NE IT_TANK2-KUNNR.
CONCATENATE 'P' IT_ZSCCCSKS-WERKS INTO ZWERKS.
IF IT_TANK2-KUNNR = ZWERKS.
ITAB-KUNNR = IT_ZSCCCSKS-KUNNR.
ITAB-WERKS = IT_ZSCCCSKS-WERKS.
APPEND ITAB.
ENDIF.
ENDIF.
ENDLOOP.
*=======================================================================================
댓글 5
-
elfagnis
2008.11.10 06:35
이거 당췌 감이 안오네요.. 제가 이해가 서툴러서 ;; 뭐 어떻게 해야 하는건가요? select문도 상당히 꼬인상태인데.. -
지의
2008.11.10 17:10
쿼리 하실 때 키 값을 무시하신게 아닌가 싶네요. select single 에서 조건절에 값으로 여러건이 나와서 매번 같은 값을 가져오는 듯 합니다. 쿼리의 조건절에 키 값을 확인해 보세요.
-
ABAP쟁이
2008.11.10 18:34
답변감사합니다. 두번째 싱글에서 값이 변하지 않아서 계속 중복된거 같습니다
혹시 값 차례대로 나올수 있는 방법 있나요??
-
법장
2008.11.10 19:11
그냥 한 번 해 봤습니다. 참조만 하세요.
SELECT
*
INTO CORRESPONDING FIELDS OF TABLE IT_TANK2
FROM ZSSCMAST AS A
WHERE
A~MATNR IN R_MATNR
AND A~KUNNR IN R_KUNNR.
LOOP AT IT_TANK2 WHERE KUNNR <> INITIAL.
SELECT SINGLE KUNNR WERKS
INTO ( IT_TANK2-KUNNR, IT_TANK2-WERKS )
FROM ZSCCCSKS
WHERE KUNNR = IT_TANK2-KUNNR.
IF SY-SUBRC = 0.
ITAB-KUNNR = IT_TANK2-KUNNR.
ITAB-WERKS - IT_TANK2-WERKS.
APPEND ITAB.
ELSE.
IF IT_TANK2-KUNNR+0(1) = 'P'.
SELECT SINGLE KUNNR WERKS
INTO ( IT_ZSCCCSKS-KUNNR, IT_ZSCCCSKS-WERKS )
FROM ZSCCCSKS
WHERE WERKS = IT_TANK2-KUNNR+1(4).
IF SY-SUBRC = 0.
ITAB-KUNNR = IT_ZSCCCSKS-KUNNR.
ITAB-WERKS = IT_ZSCCCSKS-WERKS.
APPEND ITAB.
ENDIF.
ENDIF.
ENDIF.
CLEAR ITAB.
ENDLOOP.
SORT ITAB BY KUNNR MATNR.
* LOOP내에서 SORT를 반복하면 속도 저하를 초래할 수 있을 듯하네요.
-
ABAP쟁이
2008.11.11 04:42
감사합니다
우선 시험해보고
본서버에서 값을 찍어바야겠네요
즐거운 저녁되십시요..
법장님 지의님 감사합니다.