화면에 대한 흐름로직입니다.
------------------------------------------------------
PROCESS BEFORE OUTPUT.
MODULE STATUS.
LOOP AT IT_ZMMT0016 WITH CONTROL TC_200.
MODULE SCREEN_MODIFY_PBO.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE EXIT AT EXIT-COMMAND.
LOOP AT IT_ZMMT0016.
MODULE CHECK_DATA_200.
ENDLOOP.
MODULE USER_COMMAND_0200.
-------------------------------------------------------
MODULE CHECK_DATA_200 안에 수정하는 소스부분입니다.
-------------------------------------------------------
module check_data_200 input.
it_zmmt0016-bukrs = p_bukrs.
it_zmmt0016-werks = p_werks.
modify it_zmmt0016 index tc_200-current_line.
endmodule. " check_data_200 INPUT
--------------------------------------------------------
문제는 테이블컨트롤에서 보여지는 row수만이 수정되어 itab에 반영된다는 겁니다.
예를들어 테이블컨트롤화면에서 보여지는 row수가 10이라면
위의 modify행위가 tc_200-current_line이 10이 넘어가면 그냥 빠지더군요
보여지는 부분뿐 아니라 tc에 있는 모든 데이터를 itab에 정보가 수정되어 업데이트되는 방법이 없는지 궁금합니다.
다시한번 말씀드리자면 tc에 있는 row수가 itab으로 모두 들어가기는 하지만
화면에서 보여지는 row를 초과하는 부분은 module로직을 타지 않고 그냥 들어가는 겁니다.
어렵게 설명드려 대단히 죄송합니다.
* e-abap님에 의해서 게시물 복사되었습니다 (2010-01-09 13:44)
* e-abap님에 의해서 게시물 이동되었습니다 (2010-01-09 13:55)
그게 정상입니다. process flow 에 있는 loop 는 화면에 있는 tc의 row만큼만 돌게 되어 있습니다.
화면상에서 있지도 않은 것에 대하여 실행된다는 게 더 이상할 거예요.
예를 들어 100만 건의 데이터가 있고 화면에 10건만 보여지도록 tc 를 화면에 그린 후에
필드값을 하나 변경하면 현재는 10번의 loop 만 돌게 되지만 그때마다 100만번씩 실행된다면
끔찍하겠죠. ^^; 지금이 정상입니다. ^^