아래 첨부 파일은 제가 작성한 ALV레포트 출력 화면인데 거기서 자재 별로 라인이 추가 되어서 숫자 값에 대한 평균을
뿌려 주어야 됩니다.
ALV는 보통 SUB-TOT기능으로 부분합은 가능한데 평균값 을 구하는건 어떻게 해야 될지 모르겠습니다.
자재별 끝 라인에 한라인 추가 되고
평균 | 10 | 11.5 | 23.3 | 23 | 12 | 12 |
이런식의 라인이 추가 되어야 하거든요...
DATA: g_grid_setting TYPE lvc_s_glay, " 격자세팅
" 입력창내의 값을 인식하게 하는 이벤트.
g_layout TYPE lvc_s_layo, " 렛아웃구조
gt_fieldcat TYPE lvc_t_fcat, " 리스트 뷰 제어
gt_sort TYPE lvc_t_sort, " 정렬기준
g_grid_title TYPE lvc_title,
gt_event TYPE slis_t_event, " 리스트화면이벤트
g_repid TYPE sy-repid, " 시스템일자
g_cols TYPE i. " 변수들의 순서
데이터 가져와서....
PERFORM set_layout.
PERFORM set_catelog.
PERFORM make_item.
PERFORM set_sort.
PERFORM call_alv.
FORM set_catelog .
CLEAR: g_cols, gt_fieldcat.
PERFORM append_catalog USING:
'X' ' ' ' ' 'MATNR' '자재번호' ' ' '' '' '' '' '',
' ' ' ' ' ' 'MATEXT' '자재내역' ' ' '' '' '' '' '',
' ' ' ' ' ' 'PASTRTERM' '검사시작일' '' '' '' '' 'DATS'
'',
' ' ' ' ' ' 'ENSTEHDAT' '로트생성일' ' ' '' '' '' 'DATS' '',
' ' ' ' ' ' 'ENTSTEZEIT' '로트생성시간' ' ' '' '' '' 'TIMS'
'',
' ' ' ' ' ' 'PRUEFLOS' '로트번호' ' ' '' '' '' '' '',
' ' ' ' ' ' 'KTEXTLOS' '내역' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER10' 'Ig-loss' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER20' 'SiO2' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER30' 'Al2O3' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER40' 'Fe2O3' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER50' 'CaO' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER60' 'MgO' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER70' 'S' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER80' 'R-CO2' ' ' '' '' '' '' '',
' ' 'X' ' ' 'VER90' '수분' ' ' '' '' '' '' ''.
ENDFORM. " SET_CATELOG
FORM append_catalog USING p_key
p_nozero
p_just
p_fieldname
p_coltext
p_length
p_check
p_noout
p_tech
p_type
p_sum.
DATA: wa_fieldcat TYPE LINE OF lvc_t_fcat.
g_cols = g_cols + 1. " 열순서
wa_fieldcat-col_pos = g_cols. " 출력열
wa_fieldcat-just = p_just. " 정렬
wa_fieldcat-tech = p_tech.
wa_fieldcat-key = p_key. " 키필드
wa_fieldcat-no_zero = p_nozero. " 번호 0값삭제
wa_fieldcat-fix_column = p_key. " 열고정
wa_fieldcat-fieldname = p_fieldname. " 내부테이블필드의 필드이
wa_fieldcat-outputlen = p_length. " 문자의 열넓이
wa_fieldcat-reptext = p_coltext. " 헤딩
wa_fieldcat-checkbox = p_check. " 체크박스 출력
wa_fieldcat-no_out = p_noout. " 입력 준비
wa_fieldcat-datatype = p_type.
wa_fieldcat-do_sum = p_sum.
대충 이런식의 소스입니다.
댓글 6
-
activeman
2008.04.26 01:37
-
하늘사랑
2008.04.26 03:04
alv에서 평균값 구하는 기능은 없스비다. 직접계산에서 internal table에 뿌릴 수 밖에 없습니다. -
[퐈]박
2008.04.29 22:35
평균을 구하고 싶은 필드의 wa_fieldcat-do_sum 값을 아래와 같이 하시면 될겁니다.
wa_fieldcat-do_sum = 'X'. : 총계
wa_fieldcat-do_sum = 'C'. : 평균값
이 평균값은 모든 라인에 대한 평균값입니다.
값이 없는 경우 평균값 계산에서 제외해서 계산은 안됩니다.
SUB-TOT기능도 가능합니다.
-
할일없는무급개발자
2008.05.02 20:42
wa_fieldcat-do_sum = 'C'. : 평균값
완전 대박이네요.. 지금짜는 프로그램에서 필요했엇는댕 정말 감사합니다 ..
-
행복을 파는 외계인
2008.08.22 20:34
[퐈]박님 적용해 보니까 평균값이 값이 0인 라인도 계산해서 나오네요...
다른 분들은 안그러신가요???
-
덩콘
2009.01.09 19:15
음 저도 0인 필드까지 다 계산하네요
alv에서 평균값은 인터널 테이블에 계산해서 append 시켜 주는 방법밖에 없을 겁니다..
즐밥하세요.