안녕하세요
버튼클릭이벤트에 관해서 질문 좀 드리겠습니다.
위와 같은 테이블이 있는데요 보시다시피 제일 오른쪽 소견서 필드에 버튼을 클릭하면
팝업창 하나가 뜨고요
그 팝업창에 입력 수정 삭제가 가능할 수 있게 하고
마지막으로 팝업창 입력 완료시에 버튼 000000 이 표시가 작성완료라고 바뀌게 하고 싶은데요
아직 배워가는 단계라 자세한 설명좀 부탁드립니다.
댓글 6
-
crazybarthez
2010.09.28 01:52
-
초보아밥퍼
2010.09.28 02:00
셀스타일을 이용해서 진행하시면 됩니다. (LVC_T_STYL)
이벤트는 HANDLE_BUTTON_CLICK 를 설정하시고 mc_style_button 를 사용하시면 됩니다.
아래 대충 적어놨습니다. 참고하세요.
DATA 선언
DATA : BEGIN OF GT_TEST OCCURS 0,
MATNR LIKE MARA-MATNR,
CELLSTYLE TYPE LVC_T_STYL,
END OF GT_TEST.
DATA : GS_TEST LIKE GT_TEST.
LAYOUT 선언
LAYOUT-STYLEFNAME = 'CELLSTYLE'.
셀속성 지정
DATA : ls_fieldcat TYPE lvc_s_fcat.
DATA : lt_cellstyle TYPE lvc_t_styl,
ls_cellstyle TYPE lvc_s_styl.
LOOP AT GT_TEST.
REFRESH: lt_cellstyle.
LOOP AT gt_fieldcat INTO ls_fieldcat.
CLEAR ls_cellstyle.
ls_cellstyle-fieldname = ls_fieldcat-fieldname.
IF ls_cellstyle-fieldname = 'MATNR'.
ls_cellstyle-style = cl_gui_alv_grid=>mc_style_button.
ENDIF.
INSERT ls_cellstyle INTO TABLE lt_cellstyle.
ENDLOOP.
CLEAR: gs_test-cellstyle.
INSERT LINES OF lt_cellstyle INTO TABLE gs_test-cellstyle.
MODIFY gt_test FROM gs_test TRANSPORTING cellstyle.
CLEAR gs_test.
ENDLOOP.
이벤트 선언
SET HANDLER gv_event->handle_button_click FOR gv_alv_grid.
PUBLIC SECTION.
METHODS : handle_button_click
FOR EVENT button_click OF CL_GUI_ALV_GRID
IMPORTING es_col_id
es_row_no.
ENDCLASS. "lcl_event_handler DEFINITION
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_button_click.
PERFORM handle_button_click_proc USING es_col_id
es_row_no.
ENDMETHOD. "handle_button_click
ENDCLASS. "lcl_event_receiver IMPLEMENTATION
FORM HANDLE_BUTTON_CLICK_PROC USING pv_col_id TYPE lvc_s_col
pv_row_no TYPE lvc_s_roid.
READ TABLE GT_TEST INDEX pv_row_no-row_id
팝업, 수정, 삭제 로직
ENDFORM. " HANDLE_BUTTON_CLICK_PROC
-
맑은하늘
2010.09.28 02:03
해당 필드에 대하여 style 속성을 mc_style_button 으로 설정하신거라면
버튼 클릭 처리 완료후 해당 필드의 값을 작성완료라고만 해주셔도 될 거예요.
-
유정a
2010.09.28 21:33
MC_STYLE_BUTTON을 처음 접해서 배워보고자 하는데요
절반은 이해가 되는데 셀속성지정과 LAYOUT 설정 부분은 TOP부분에 들어가는건가요?
팝업부분에 대한 간단한 로직도 있으면 부탁드립니다.
이부분이 가장 어렵네요 -
유리선율
2010.09.28 23:35
※ 데이터 입력/수정을 위한 화면을 별도로 생성하신 후, ALV 클릭 시 해당 화면을 콜하시면 되겠네요.
1. 데이터 입력/수정용 화면을 만든다.(Create Screen)
2. alv 이벤트 실행 구문에 화면을 뛰우는 구문을 넣는다. (Call screen ~ at starting~ ending~)
-
유정a
2010.10.01 01:40
이해가 100% 되진 않지만 한번 해보고 안되면 다시 질문 드리겠습니다.
감사합니다.
class implementation 부분에 해당 이벤트 method 부분에 말씀하신 작업을 지정하면 될거예요.
class 생성 class definition / class implementation -> 이벤트 method 선언 및 해당 이벤트 method 동작 지정 -> 이벤트 등록.
참고 하실 수 있는 간단한 로직입니다.
*&---------------------------------------------------------------------*
*& CLASS DEFINITION.
*&---------------------------------------------------------------------*
CLASS lcl_application DEFINITION.
PUBLIC SECTION.
METHODS : add_toolbtn
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object
e_interactive.
ENDCLASS. "lcl_application DEFINITION
*&---------------------------------------------------------------------*
*& CLASS IMPLEMENTATION.
*&---------------------------------------------------------------------*
CLASS lcl_application IMPLEMENTATION.
*&---------------------------------------------------------------------*
METHOD add_tool.
PERFORM add_tbtn USING e_object
e_interactive.
ENDMETHOD. "ADD_TOOLBTN
*&---------------------------------------------------------------------*
ENDCLASS. "lcl_application IMPLEMENTATION
DATA : lcl_event_application TYPE REF TO lcl_application.
CALL METHOD gv_grid_02->register_edit_event "값 변경시이벤트 발생
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CREATE OBJECT lcl_event_application.
SET HANDLER : lcl_event_application->add_toolbtn FOR gv_grid_02.