DATA: ls_modi TYPE lvc_s_modi. " Modified Cells
DATA: lv_stbl TYPE lvc_s_stbl. " Row, Column 변수 ( Stable )
DATA: lv_wog TYPE c LENGTH 3 VALUE 'WOG'. " 필드 이름 WOG 저장
DATA: lv_mon_cnt TYPE n LENGTH 2 VALUE '01'. " 월 카운터
FIELD-SYMBOLS: <fs_val> TYPE any. " 필드심볼
* 현재 Cell이 수정되었는지 확인
CHECK pe_modified IS NOT INITIAL.
* 수정된 Cells LOOP - 월 필드만 LOOP
LOOP AT pt_good_cells INTO ls_modi WHERE fieldname = 'WOG01'
OR fieldname = 'WOG01'
OR fieldname = 'WOG02'
OR fieldname = 'WOG03'
OR fieldname = 'WOG04'
OR fieldname = 'WOG05'
OR fieldname = 'WOG06'
OR fieldname = 'WOG07'
OR fieldname = 'WOG08'
OR fieldname = 'WOG09'
OR fieldname = 'WOG10'
OR fieldname = 'WOG11'
OR fieldname = 'WOG12'.
" 변경 된 라인을 비용처리계획 테이블로 부터 읽음
READ TABLE gt_t_plan INTO gs_t_plan INDEX ls_modi-row_id.
" 데이터가 존재할 경우,
IF sy-subrc EQ 0.
" 비용처리계획 데이터의 해당 월을 필드심볼에 지정
ASSIGN COMPONENT ls_modi-fieldname OF STRUCTURE gs_t_plan TO <fs_val>.
" 값을 저장
<fs_val> = ls_modi-value.
UNASSIGN <fs_val>.
" 총계를 0로 세팅 - 하지 않으면, 동일한 셀에 값을 붙여넣으면 총합이 계속 더해짐
gs_t_plan-wog_sum = 0.
" 12번 loop - 12개월
DO 12 TIMES.
" 1월부터 12월까지의 금액을 더하여 총계 세팅
ASSIGN COMPONENT lv_wog && lv_mon_cnt OF STRUCTURE gs_t_plan TO <fs_val>.
IF <fS_VAL> IS NOT ASSIGNED.
EXIT.
ENDIF.
gs_t_plan-wog_sum = gs_t_plan-wog_sum + <fs_val>.
lv_mon_cnt = lv_mon_cnt + 1.
UNASSIGN <fs_val>.
ENDDO.
" 월 카운터를 1월로 다시 세팅
lv_mon_cnt = '01'.
" 변경된 값 수정
MODIFY gt_t_plan FROM gs_t_plan INDEX ls_modi-row_id.
ENDIF.
CLEAR: gs_t_plan, ls_modi.
ENDLOOP.
* ALV 데이터 새로고침
PERFORM refresh_alv USING go_grid gs_layo.
" 저장했던 셀 위치로 세팅
CALL METHOD go_grid->set_current_cell_via_id
EXPORTING
is_row_id = gs_row
is_column_id = gs_col.
'SAP > ABAP 코드' 카테고리의 다른 글
(ABAP 코드) 월 차이 계산 (0) | 2022.01.21 |
---|---|
(ABAP 코드) 날짜 가공하는 Class (0) | 2021.10.29 |
(ABAP 코드) 셀 이동 후, 커서 위치 다시 불러오기 (0) | 2021.10.28 |
(ABAP 코드) Column Tree 생성 및 관리 (0) | 2021.10.28 |
(ABAP 코드) Date 포멧 변환 (0) | 2021.10.28 |