모드대화상자에서 CBO테이블의 내용을 조회하고 +버튼, -버튼, 저장, 취소버튼은 만들었습니다..
그런데 조회한뒤
+버튼을누르면 행을 하나 추가하고 -버튼을 누르면 행을 삭제하고 기존의 데이터를 변경할수도 있게 한뒤
저장버튼을 누르면 각 버튼을 눌러 추가한 내용이나 삭제한 내용, 변경한 내용을 반영하려고 하는데 아래와
같이 처리했을때 추가 처리가 되지 않습니다.
module user_command_0200 input.
case sy-ucomm.
when 'SAVE'.
perform save_init.
leave to screen 0.
when 'CANCEL' or 'EXIT'.
leave to screen 0.
when 'P_INS'. <== 1) +버튼을 누른경우
PERFORM insert_as_mat.
when 'P_DEL'.
PERFORM del_as_mat.
endcase.
endmodule.
FORM insert_as_mat .
CLEAR : it_mat, line.
SORT it_mat BY code.
DESCRIBE TABLE it_mat LINES line.
READ TABLE it_mat INDEX line.
CLEAR it_mat.
APPEND it_mat.
CLEAR it_mat.
w_change = 'X'.
ENDFORM.
ABAP초보인지라 e-abap에서 찾던중 이부분에 관해 경험해보신 고수님들의 의견을 듣고 싶습니다.
댓글 8
-
가오만땅
2008.06.09 21:59
alv 로 하셨나요? refresh 해보시면 될꺼 같아요.. -
루자빗
2008.06.09 22:18
APPEND 를 하셨으니 조회화면의 맨 밑단에 한 라인이 추가 되었을것 같은데요.... 쭈~ 욱 드래그해서 내려보심이....
INSERT IT_MAT INDEX 1 등으로 맨 윗단에 한 라인을 추가하셔도 될것 같습니다.
-
activeman
2008.06.09 22:34
테이블 컨트롤로 작업을 하셨으면 테이블 컨트롤 위저드를 사용하시면 insert,delete, page up, page down 같은 버튼들은 자동으로
생성이 됩니다. 그래서 코딩소스를 많이 줄일 수 있습니다. 한번 이용해 보세요.
즐밥하세요..
-
풍뎅이
2008.06.09 22:53
MODULE user_command_0200 INPUT.
DATA: lt_row_no TYPE lvc_t_roid,
ls_row_no TYPE lvc_s_roid,
lv_cnt TYPE i.
DATA : lt_rows TYPE lvc_t_row.
DATA : ls_rows TYPE lvc_s_row.
CASE sy-ucomm.
WHEN 'P_INS'. " 라인 추가
CLEAR it_mat.
APPEND it_mat.
MOVE 'P_INS' TO sy-ucomm.
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = sy-ucomm.
WHEN 'P_DEL'. " 라인 삭제
WHEN 'SAVE'.
PERFORM save_init.
LEAVE TO SCREEN 0.
WHEN 'CANCEL' OR 'EXIT'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.
'P_INS'부분과 같이 위와 같이 처리해도
현재 cbo테이블 내용을 조회한부분만 edit가능하고 나머지는 disable되어
있어서 그런지 insert가 되지 않습니다.
해당화면에
MODULE modify_indicater_field OUTPUT.
LOOP AT SCREEN.
screen-input = 1.
MODIFY SCREEN.
ENDLOOP.
ENDMODULE.
를 했는데 테이블 필드의 데이터 있는부분만 edit가능한데 전체 다 edit가능하게
하려면 어떻게 하나요? -
페리
2008.06.09 23:35
describe table it_mat lines i_index.
insert it_mat index i_index.
로 해보세요 :D
-
CoolGuy
2008.06.09 23:36
뭔가쫌 저랑은 틀린듯... 전 툴바메소드에서 p_ins 버튼 만들어서 pai가서 case문에서 p_ins 이거면 어펜드만시켜줘도 인설트가 되실텐데
그리고 l_new_code data 는 sy-ucomm으로 선언했습니다.
위는 alv인데 밑엔 테이블컨트롤이네요~밑에는 pbo 의 loop at screen.안에서 제어해줄수있습니다~
-
루자빗
2008.06.10 02:50
테이블 컨트롤 스크린 로직입니다.
PROCESS BEFORE OUTPUT.
MODULE status_0100.
LOOP AT itab WITH CONTROL itab_ctl.
MODULE read_data.
MODULE screen_control.
ENDLOOP.
PROCESS AFTER INPUT.
MODULE exit AT EXIT-COMMAND.
LOOP AT itab. ------------> 이 부분을 빼먹으신건 아닌지....
MODULE modify_itab.
ENDLOOP.
MODULE user_command_0100.
PROCESS ON VALUE-REQUEST.
MODULE modify_itab INPUT.
MODIFY itab INDEX itab_ctl-current_line.
ENDMODULE. " modify_itab INPUT
-
풍뎅이
2008.06.10 19:14
답변주신 분들께 감사드립니다.