안녕하세요 ^^
값 변경 전
A 필드 | B 필드 | C 필드 |
값 변경 후
A 필드 | B 필드 | C 필드 |
ZA | 100001 | D |
일때, 값 변경한 데이타는 한번에 값을 넣은 후 엔터를 친 상태입니다.
그래서 ER_DATA_CHANGED->MT_GOOD_CELLS 에
ROW_ID | SUB_ROW_ID | FIELDNAME | VALUE |
1 | A | ZA | |
1 | B | 100001 | |
1 | C | D |
이렇게 데이타가 있습니다.
이 상태에서 맨처음 필드인 A를 변경 후
B를 변경할 때 A필드 값과 연관이 되어있기 때문에 현재 있는 데이타 중
A와 B값으로 데이타를 읽어와 체크하는 부분이 있습니다.
이때, 앞에서 A필드 값을 변경을 한 후 실행된 것인데도 B필드 값을 변경할 때는
A필드 값이 공백으로 나와 체크하는 부분이 깨집니다.
앞에서 변경된 값을 읽어오는 메소드나 Funtion을 아는 분이 계시면 좀 알려주시면 감사하겠습니다.
댓글 3
-
비안개
2008.03.06 04:15
-
비안개
2008.03.10 20:35
Web In Abap님 안녕하세요
DATA_CHANGED_FINISHED Event 처음 보는데 data cange 로직 안에 넣어도 되는건가요?
현재 답글에 쓴 것처럼 변경할 데이터를 읽어서 체크 하고 있거든요..
답변 주셔서 감사드립니다.^^
-
comple
2008.05.21 21:55
data_changed_finished event에서 체크하시면 입력한 값이 인터널 테이블에 저장되어 있어서 값이 유효한지 체크하고 따로 에러 메시지을 보여주고, internal table을 refresh 시켜야 할꺼 같습니다. 3개 값을 엔터로 한꺼번에 받는것보다, 입력 이벤트을 cl_gui_alv_grid=>mc_event_modified(? 정확히 기억안나네요)을 적용해서 셀에 입력하고 마우스 이동이나 할때 바로 data_changed event을 타게 해서 체크하시는게 더 좋지 않을까 싶습니다.
죄송합니다. 생각해보니 우선 A필드 값을 변경을 해도 그 데이타에는 값이 적용이 안되기 때문에 다시
CALL METHOD ER_DATA_CHANGED->GET_CELL_VALUE
EXPORTING
I_ROW_ID = '1'
I_FIELDNAME = 'A'
IMPORTING
E_VALUE = L_VALUE.
로 읽어와야 체크가 가능할 듯 싶습니다.
이 방법말고 데이타 체인지가 다 끝난 후 변경되지 않고 한 필드가 변경되면 그때 적용이 되는 메소드 아시면 좀 알려주시면 고맙겠습니다.