초보적인 질문인지 모르겠습니다.
ALV 에서 Loop 를 이용해서 저장하고 있는데요.
한 행의 어떤 필드만 수정해도 gt_list 에 있는 전체의 값을 업데이트 하게 되어있는데,
수정한 행만 저장을 하고 싶습니다.
어떻게 해야하는지.. 도움좀 부탁드려요.~
DATA: l_valid TYPE c.
CALL METHOD g_grid->check_changed_data
IMPORTING
e_valid = l_valid.
IF l_valid IS INITIAL.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = text-i06
txt1 = text-i07
txt2 = text-i08
txt3 = text-i09.
ELSE.
PERFORM update_database.
ENDIF.
*----------------
PERFORM update_database. 문은 아래와 같이.
LOOP AT gt_list.
SELECT SINGLE * FROM ytpr001
WHERE yybukrs = gt_list-yybukrs
AND yyprctr = gt_list-yyprctr
AND yyrqhalf = gt_list-yyrqhalf
AND yydoctyp = 'BB'
AND yyrqtyp = gt_list-yyrqtyp
AND yyseq = gt_list-yyseq.
IF sy-subrc EQ 0.
MOVE sy-datum TO ytpr001-yychkdt.
MOVE sy-uzeit TO ytpr001-yychktm.
MOVE l_lifnr TO ytpr001-yychklfr.
MODIFY ytpr001.
ENDIF.
ENDLOOP.
인터널 테이블에 FLAG 필드 하나 가져가서 변경한 라인은 <DATA_CHANGED> 이벤트로 체크하여
FLAG 필드에 'x' 체크해 놓고 'x'된 라인만 업데이트를 하면 될것 같은데요..