아래의 소스를 실행하면 다른것은 되는데 번호부분이 0으로 나오고
아래부분도 0아니면 1로 나오네요.
uline의 아래의 결과는 아래의 내용처럼 나와야 한는 1이나 1로 나오네요
어떤 부분을 수정을 해야 하나요?
그리고 아래의 소스를 가지고 순위를 구할려고 하는데 어떻게 해야하는지요?
1 1
2 3
3 6
4 10
5 15
6 21
7 28
8 36
9 45
10 55
*&---------------------------------------------------------------------
*& Report ZTEST_ITGSMS01
*&
*&---------------------------------------------------------------------
*&
*&
*&---------------------------------------------------------------------
*
REPORT ztest_itgsms01 MESSAGE-ID zmessage.
************************************************************************
* DATA ( & TYPE)
************************************************************************
*DATA: num TYPE i. "순번
*DATA: kor TYPE i. "국어
*DATA: math TYPE i. "수학
*DATA: eng TYPE i. "영어
*DATA: sum TYPE i. " 총점
*DATA: ave TYPE p. "평균
*DATA: totsum TYPE i. "총합계
DATA: BEGIN OF wa,
znum TYPE ztitgs00-zseq,
zkor TYPE i,
zmeth TYPE ztitgs00-zmeth,
zeng TYPE ztitgs00-zeng,
zsum TYPE ztitgs00-ztot,
zave TYPE ztitgs00-zavg,
END OF wa.
DATA: itab LIKE STANDARD TABLE OF wa WITH HEADER LINE.
data: znum type i,
ztotsum type i.
************************************************************************
* START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
SELECT zkor zmeth zeng FROM ztitgs00
INTO CORRESPONDING FIELDS OF TABLE itab.
WRITE:/ '번호', ' 국어', ' 수학', ' 영어', ' 총점', '평균'.
LOOP AT itab.
znum = 0.
znum = znum + 1.
itab-zsum = itab-zkor + itab-zmeth + itab-zeng.
itab-zave = itab-zsum / 3.
*MODIFY itab.
WRITE:/ itab-znum, itab-zkor, itab-zmeth, itab-zeng, itab-zsum,
itab-zave.
ENDLOOP.
ULINE. "------------------------------------
LOOP AT itab.
znum = 0.
znum = znum + 1.
ztotsum = 0.
znum = znum + ztotsum.
* MODIFY itab.
WRITE:/ znum, ztotsum.
ENDLOOP.
************************************************************************
* END-OF-SELECTION
************************************************************************
END-OF-SELECTION.
댓글 3
-
Storyguy™
2008.10.09 23:28
-
로미오
2008.10.10 00:55
해결했습니다. 감사합니다.
근디 가장 해결하고 싶은 석ck(순위)를 해결이 안됩니다.
아래의 소스를 바탕으로 어떻게 작성하면 되는지 알려주세요.
*&---------------------------------------------------------------------
*& Report ZTEST_ITGSMS01
*&
*&---------------------------------------------------------------------
*&
*&
*&---------------------------------------------------------------------
*
REPORT ztest_itgsms01 MESSAGE-ID zmessage.
************************************************************************
* DATA ( & TYPE)
************************************************************************
*DATA: num TYPE i. "순번
*DATA: kor TYPE i. "국어
*DATA: math TYPE i. "수학
*DATA: eng TYPE i. "영어
*DATA: sum TYPE i. " 총점
*DATA: ave TYPE p. "평균
*DATA: totsum TYPE i. "총합계
DATA: BEGIN OF wa,
znum TYPE ztitgs00-zseq,
zkor TYPE i,
zmeth TYPE ztitgs00-zmeth,
zeng TYPE ztitgs00-zeng,
zsum TYPE ztitgs00-ztot,
zave TYPE ztitgs00-zavg,
END OF wa.
DATA: itab LIKE STANDARD TABLE OF wa WITH HEADER LINE.
DATA: znum TYPE i.
DATA: znum1 TYPE i.
************************************************************************
* START-OF-SELECTION
************************************************************************
START-OF-SELECTION.
SELECT zkor zmeth zeng FROM ztitgs00
INTO CORRESPONDING FIELDS OF TABLE itab.
WRITE:/ '번호', '국어', ' 수학', '영어', '총점', '평균'.
LOOP AT itab.
znum = znum + 1.
itab-zsum = itab-zkor + itab-zmeth + itab-zeng.
itab-zave = itab-zsum / 3.
*MODIFY itab.
WRITE:/ znum, itab-zkor, itab-zmeth, itab-zeng, itab-zsum,
itab-zave.
ENDLOOP.
ULINE. "------------------------------------
LOOP AT itab.
DATA:
* znum1 TYPE i,
znum2 TYPE i,
ztotsum TYPE i.
* ztotsum1 TYPE i.
znum1 = znum1 + 1.
ztotsum = znum1 + ztotsum.
* MODIFY itab.
WRITE:/ znum1, ztotsum.
ENDLOOP.
************************************************************************
* END-OF-SELECTION
************************************************************************
END-OF-SELECTION. -
storyroom.net™
2008.10.10 03:04
석차를 구한다는 것이...... 어떤 말씀인지 잘 모르겠습니다. ^^
아마도 ztotsum 으로 1등 부터 마지막까지를 정렬해서 write 하고 싶다는 말씀 같은데요..
만약 그렇다면 loop 문에서 WRITE:/ znum1, ztotsum. 할때 ztotsum을 다른 인터널 테이블을 하나 만들어서 넣고
프로그램 제일 아래 부분에 sort itab by ztotsum. 을 하시고 itab를 loop 돌리면서 write 하시면 되겠네요.
제가 질문을 정확하게 이해했는지 모르겠습니다. ^^;;;
LOOP AT ITAB.
ZNUM = 0.
ZNUM = ZNUM + 1.
ITAB-ZSUM = ITAB-ZKOR + ITAB-ZMETH + ITAB-ZENG.
ITAB-ZAVE = ITAB-ZSUM / 3.
WRITE:/ ITAB-ZNUM, ITAB-ZKOR, ITAB-ZMETH,
ITAB-ZENG, ITAB-ZSUM, ITAB-ZAVE.
ENDLOOP.
이 부분과
LOOP AT ITAB.
ZNUM = 0.
ZNUM = ZNUM + 1.
ZTOTSUM = 0.
ZNUM = ZNUM + ZTOTSUM.
WRITE:/ ZNUM, ZTOTSUM.
ENDLOOP.
이 부분에 있는 znum, ztotsum을 보니 loop 돌릴때마다 0 으로 셋팅하니까 계속 1만 찍히는 것입니다.
znum = 0 이 부분을
loop 문 위로 올리고 해보시면 되겠습니다. ^^*