안녕하세요.
아 이런건 어떻게 처리해할지 궁금해서 질문드립니다.
인터널 테이블에 담긴 내용중에 코드값이 있습니다.
001
001
001
002
002
.
.
.
이런씩으로 예상값이 들어있습니다.
그래서 각 코드값의 카운터(총 갯수)를 알아서 다른 인터널 테이블에 담고 싶은데요...
코드값 : 001 갯수 : 3
코드값 : 002 갯수 : 2
이런형태로 담을 려고 합니다......어떻게 해야할지 궁금하네요.
댓글 3
-
수욕정이풍부지
2007.05.16 20:56
-
수욕정이풍부지
2007.05.16 22:14
밥먹기 전에 빨리 올리고 갔는데 다시 와서 보니까 코드별 카운트 갯수 뿐 아니라
인터널 테이블 안에 스트링 형태로 한 번에 담고자 한게 질문이었나 보네요.
출력을 위해서 그렇게 하는 것이라면 '코드값:' 이나 '갯수:' 같은 문자열은 출력할때 직접 뿌려주는 게 낫다고 생각되지만
일단 원하시는 형태로 인터널 테이블에 담고자 한다면
위에 제가 작성한 부분 중에서
move itab-code to it_count-code.
it_count-count = l_count.
대신에
concatenate '코드값: ' itab-code '갯수 :' l_count into it_count-string separated by space.
로 고쳐주면 될 것 같습니다.
대신에 l_count를 위에서와 같이 type i로 선언하면 concatenate 구문에서 에러 발생하니까
문자 타입 등으로 변환해 주셔야 되겠네요
-
e-abap
2007.05.16 22:31
한번에 계산할수 있는 방법은 없는거 같고 수~지 님의 답변처럼
at end로 해서 로직으로 처리해야될거 같네요~
궁극적으로 구하려는 값이 코드별 카운트 갯수라면 최초에 select문에서 왜 코드값만 담았는지 이해가 잘 안되네요^^
select code count( * )
into table itab
whre ....
group by code.
이런 식으로 하면 굳이 테이블을 두개 선언하지 않아도 될텐데요..
어쩔 수 없이 코드만 들어있는 인터널 테이블을 통해서 두 번째 테이블에 담아야 한다면
여러 가지 방법이 있겠지만 간단하게 한 가지 생각해 보자면
data: l_count type i 와 같이 임시변수를 선언하시고
loop at itab.
l_count = l_count + 1.
at end of code.
move itab-code to it_count-code.
it_count-count = l_count.
append it_count. clear l_count.
endat.
endloop.
뭐 이런 식으로 계산하는 방법이 있겠네요.
물론 위에서 itab은 code만 담은 첫번째 테이블이고
it_count는 code필드와 count필드가 선언된 두번째 테이블로 가정한 것입니다.