DATA P0002 LIKE PA0002 OCCURS 0 WITH HEADER LINE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE P0002 FROM PA0002.
LOOP AT P0002.
WRITE: 'DODO'.
ENDLOOP.
WRITE : / 'D'.
저기 위에서 with header line을 빼면 loop at 문이 안돌아갑니다. 당연히 해드라인이 없어서이겠지요
그런데 오늘 이 소스 저 소스 보던 중.. .그만.. 그만 해드 라인 없이도 loop at 문이 돌아가는것을 보았습니다.
디버깅 해보니. 모자가 생기던데 어디서 해드 라인이 생긴걸까요?
--------------------------------------------------------------------
DATA : BEGIN OF vhead OCCURS 0, <- 요렇게 data : begin 하면 with header line을 할수 가 없자나요
adrnr LIKE j_1bbranch-adrnr, "주소번호
kr_taxoff LIKE j_1bbranch-kr_taxoff, "세무서
taxname LIKE taxofficet-name, "세무서명
name LIKE j_1bbranch-name, "법인명
kr_repres LIKE j_1bbranch-kr_repres, "대표자명
stcd2 LIKE j_1bbranch-stcd2, "사업자등록번호
city1 LIKE adrc-city1, "시
street LIKE adrc-street, "주소
addr(60) TYPE c, "총 주소
tel_number LIKE adrc-tel_number, "전화번호
END OF vhead.
SELECT * INTO CORRESPONDING FIELDS OF TABLE vhead FROM j_1bbranch
WHERE bukrs = '1000' AND
branch = p_branch.
LOOP AT vhead. <- 여기 요 부분...
SELECT SINGLE name INTO vhead-taxname FROM taxofficet
WHERE spras = '3' AND
taxoffice = vhead-kr_taxoff.
SELECT SINGLE city1 street tel_number
INTO (vhead-city1, vhead-street, vhead-tel_number)
FROM adrc
WHERE addrnumber = vhead-adrnr.
CONCATENATE vhead-city1 vhead-street INTO vhead-addr
SEPARATED BY space. "전체 주소
MODIFY vhead.
ENDLOOP. <- 이소스는 제대로 돌아갑니다. ㅋㅋ
--------------------------------------------------------------------
제가 테스트 하기로는 헤드라인 없이 loop at문을 돌리면 해드라인이 없는거라고 에러 뜨던데
DATA : BEGIN OF vhead OCCURS 0, 이렇게 해드 라인이 생기는건가요?
DATA P0002 LIKE PA0002 OCCURS 0. 이거와 같은거자나요
저번에 저렇게 해서 돌리니까. 해드라인 없다고 하던데
댓글 5
-
으..2MB~떠나야하나
2009.02.20 07:24
-
SAYA
2009.02.20 16:57
DATA: BEGIN OF vhead OCCURS 0,
~
END OF vhead.
: header line 을 가지는 인터널 테이블 선언하는 것입니다.
-
도움이
2009.02.20 18:37
OCCURS 0 을 주면 header line 을 가지는 인터널 테이블이 선언되는 것으로 알고 있습니다만..
-
처서련
2009.02.20 23:08
헤더만들어집니다
-
쭈니
2009.02.26 21:30
data 선언을 주의깊게 잘 안보셔서 그런지 모르겠지만, data : begin of vhead ~ end of vhead이렇게 선언을 하고
중간에 들어가는 필드들은 특정 필드만 자신이 쓰고자 하는 필드만 필요로 할결우에 사용하게 됩니다.
결국엔 이 구문에서도 header line을 가지고 있다는 얘기가 됩니다.
근데 위에서 님이 쓰신대로 --->DATA P0002 LIKE PA0002 OCCURS 0 WITH HEADER LINE. 이렇게 선언을 하시는다면
2개의 테이블에서 가지고 있는 필드를 모두 사용하는것이며, pa0002에 있는 테이블을 p0002테이블에 적용하는경우가 되겠습니다.
2개다 결국엔 header line을 가지고는 있지만 차이점이라면 위에 선언하신거는 테이블에 있는 모든 필드를 사용하시는거구요.
밑에 선언을 한것은 특정필드만 사용하고자하는 필드만 선언 하게 되는것입니다.
선언부터 다시 공부하셔야겠군요. ^^
data : begin of vhead,
end of vhead.
라고 선언하면 어떻게 될까요?
그 선언된 vhead 에 occurs 0 을 해주면 어떻게 될까요?
힌트가 되셨나요?