신고일자가 같을 경우
총신고가격(외화)의 값이 하나만
출력하게 만드려고 합니다.
EX) 2010/4/13일을 예로 들면
2010/4/13 ...
2010/4/13 ...
2010/4/13 ... 10,217.00
이런식으로 하려면 어떤방식으로
프로그램 해야 할지 길좀 알려주세요 ㅠ
댓글 7
-
deepbluesea
2010.10.06 00:24
-
rudtnfkrn
2010.10.06 00:44
내부적으로 인터널테이블을 그렇게 구성한 다음 Display하면 됩니다.
예들들면
loop at itab.
at end of '신고일자'
총신고가격(외화)
endat.
endloop.
이부분을 좀더 자세하게 설명을 부탁드려도 될까요? ^^;
-
초보아밥퍼
2010.10.06 02:46
아래 참조 하세요.
ITAB 인터널 테이블의 신고일자 필드가 가장 처음이거나 앞의 필드가 있을경우 필드값이 모두 동일하고 일자별 정렬이
된 상황에서 진행됩니다. 하다보니 좀 복잡해졌네요 ;;;
LOOP AT ITAB.
AT NEW '신고일자'.
LV_CHECK = 'X'.
CLEAR : LV_총신고가격.
ENDAT.
IF LV_CHECK = 'X'.
MOVE-CORRESPONDING ITAB TO ITAB_BK.
LV_총신고가격 = ITAB-총신고가격.
ENDIF.
IF ITAB-총신고가격 = LV_총신고가격.
CLEAR : ITAB-총신고가격.
ELSE.
MOVE-CORRESPONDING ITAB_BK TO ITAB.
MODIFY ITAB INDEX LV_TABIX TRANSPORTING 총신고가격.
CLEAR LV_총신고가격.
ENDIF.
AT END OF '신고일자'.
LV_CHECK2 = 'X'.
ENDAT.
IF LV_CHECK2 = 'X' AND ITAB-총신고가격 = LV_총신고가격.
ITAB-총신고가격 = LV_총신고가격.
ENDIF.
IF LV_총신고가격 <> 0.
MODIFY ITAB.
ENDIF.
LV_TABIX = SY-TABIX.
CLEAR : LV_CHECK, LV_CHECK2.
ENDLOOP. -
dbnoid
2010.10.06 03:53
첫번째 deepbluesea님 말처럼 Sort 기능사용에 한표입니다.
신고일자 , FOB외화, 총신고가격(외화)를 소트필드로 설정하게 되면
될듯합니다.
인터널 테이블에서 값들을 삭제하는것은 여러가지 코딩으로 할 수 있겠지만
ALV의 소트를 막아야 할거 같네요...
기존 프로그램이 어떻게 되어있는지 모르겠지만....
삭제후 사용자가 세필드들 가지고 재소트를 할 경우도 고려해야 할거 같습니다. -
Tester
2010.10.06 18:57
FB외자하고 총신고가격 필드를 바꿔서 소팅 하시면 될것 같은데 현업분과 타협을 잘 해보시는게 좋을 듯 합니다.
정 안되시면 Internal Table의 값을 고쳐주는 로직이 필요 한 듯 합니다.
-
rudtnfkrn
2010.10.06 19:08
제가 능력이 부족 하여 현업분과 타협을 했습니다^^;
그래서 필드카탈로그에서 합계구하는 DO-SUM을 이용하여
FOB외화 밑에 출력하는 방식으로 처리 했습니다.
저의 질문을 읽고 답변 주신분들 정말 감사 드립니다.
-
rudtnfkrn
2010.10.06 20:23
제가 능력이 부족 하여 현업분과 타협을 했습니다^^;
그래서 필드카탈로그에서 합계구하는 DO-SUM을 이용하여
FOB외화 밑에 출력하는 방식으로 처리 했습니다.
저의 질문을 읽고 답변 주신분들 정말 감사 드립니다.
그리고 SORT로도 해보았는데 안되는군요
부서 코드라던가 다른 컬럼들은 소팅했을때
같이 같을 경우 표시가 않되는데...
숫자필드라 그런지 안되네요.
그렇게 강제로 코딩을 해서 인터널테이블을 그렇게 만들면 가능하지만 좋은 방법은 아님니다.
ALV자체에 Sort기능을 사용하면 데이터가 이상하게 보이겠죠 ^^
Sort기능을 메뉴에서 빼신다면 ALV자체에는 그런기능이 없구요
내부적으로 인터널테이블을 그렇게 구성한 다음 Display하면 됩니다.
예들들면
loop at itab.
at end of '신고일자'
총신고가격(외화)
endat.
endloop.