LOOP문 안에 LOOP문 사용하는거 대신에 FOR ALL ENTRIES IN 구문을 자주 이용하는데요.
특정 데이타를 Select를 못해오는 경우가 발생하여 원인을 찾아보니,
FOR ALL ENTRIES IN 구문을 사용해서 테이블에서 데이타를 SELECT 해올 경우에
SELECT 하는 필드들이 전부 동일한 데이타들이 존재할 경우 한 건만 가져오더라구요.
그래서 SELECT할 때 테이블의 Key값이 되는 필드들이 필요하지 않더라도
SELECT를 해와야지 데이타들을 다 가져올 수 있더라구요.
말로만 설명하면 이해가 안가실지 모르니
실제 코딩내용으로. ^^
1번으로 데이타를 가져올 경우에 LIPS 테이블에 VGBEL VGPOS 두값이 모두 같은 데이타가 3건 존재한다고 경우,
SELECT해와서 GT_LIPS 인터널 테이블에 들어가는 데이타들이 한건 이더라구요.
동일한 데이타들이 존재할 경우 데이타를 다 못가져올 수가 있어요.
2번에서 LIPS 테이블에서 키 필드인 VBELN POSNR 두 필드를 SELECT를 같이 해주면 3건의 데이타 모두 가져올 수 있네요.
1). SELECT VGBEL VGPOS LGMNG
INTO TABLE GT_LIPS
FROM LIPS
FOR ALL ENTRIES IN ITAB2
WHERE VGBEL = ITAB2-VBELN.
2). SELECT VBELN POSNR VGBEL VGPOS LGMNG
INTO TABLE GT_LIPS
FROM LIPS
FOR ALL ENTRIES IN ITAB2
WHERE VGBEL = ITAB2-VBELN.
댓글 7
-
SARA
2007.03.13 22:54
-
김지성
2007.04.17 17:32
정말 좋은 팁입니다..저두 For all ~ 구문을 자주 쓰는뎅..감사합니다.
-
화이팅
2007.05.10 00:59
FOR ALL ENTRIES 사용시에 꼭 ITAB2(위예에서)가 비어있는지 확인해야 됩니다.
ITAB2가 비어있으면 SELECT하는데 원하지 않는 값들이 올수 있습니다.
-
SSong
2007.08.30 18:26
FOL ALL ENTRY IN 이 아닌 다른 커리문에서도 키 필드 값이 없으면 중복도니 데이타를 제거 하고 그중 하나만
나와서 그런 겁니다 .
만약 데이타가 3개다 다르면 다른 값이 나올껍니다.
-
체인지
2007.11.20 20:43
좋은 자료 감사합니다^^ -
초향이
2007.12.08 10:29
좋은 정보 감사드립니다. -
zambia21
2011.07.15 17:33
좋은 정보 감사합니다.
아 좋은 팁이네요. 저는 FOL ALL ENTRY를 아예 안쓰는데...가끔 써봐아겠어요