안녕하세요^^?
현재, handle_data_changed 이벤트에서 back 버튼을 누를때 ALV에 변경된 데이터가
있으면 팝업메시지 보여서 저장 혹은 그냥 나가게 하려고 아래와 같이 했습니다.
그런데, ALV에 아무것도 안바꾸고 그냥 화면을 나가려고 해도 계속 팝업이 뜨는데요.
초기화를 더해줘야 하는건지, 어디를 확인해야 할지 궁금합니다.
when 'BACK' or 'EXIT' or 'CANC'.
call method GRID1->CHECK_CHANGED_DATA
importing
E_VALID = g_VALID.
if G_VALID is not initial.
perform popup_confirm using text-001 "'There is some changed data.'(001)
text-002 "'Do you want to save data?'(002)
g_ans
c_x
c_a. "'A'
if ( g_ans <> 'J' ).
leave to screen 0.
else.
perform update_database.
leave to screen 0.
endif.
else.
leave to screen 0.
endif.
댓글 3
-
지의
2008.07.03 17:45
-
하오
2008.07.04 08:42
Web In Abap님과 지의님, 답변 감사합니다.
메소드 get_selected_rows 는 예를 들어 ALV 에서 행을 선택해서 더블클릭해서 상단의 input 필드에 관련사항을
보여줄때 주로 써봤습니다.
아니면, ALV를 첨 보여줄때 데이터를 따로 인터널테이블에 담았다가 나중에 ALV의 인터널테이블과 비교해서
변경사항이 있는 것만 처리를 했었는데요, 간단하게 ALV 메소드를 쓸 수 있는 방법이 없을까 해서요^^??
-
하오
2008.07.17 02:52
BCALV_EDIT_03 를 참조해서 프로그램을 만들어 해결했습니다.
ALV 와 Internal Table 간에 데이타가 맞게 변경 되었는지에 대한 점검부분 메소드입니다.
X 는 정상이라는 의미이고 항상 들어오죠.
변경 이력은 METHOD get_selected_rows 를 사용하면 변경 된 라인의 줄 번호를 가져올 겁니다.
즉 줄 번호로 해서 하는 방법을...
수고하세요.