DATA : ls_toolbar TYPE stb_button.
CLEAR ls_toolbar.
MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO r_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE 'ins' TO ls_toolbar-function.
MOVE icon_insert_row TO ls_toolbar-icon.
MOVE '추가' TO ls_toolbar-quickinfo.
* MOVE '버튼 2' TO ls_toolbar-text.
MOVE ' ' TO ls_toolbar-disabled.
APPEND ls_toolbar TO r_object->mt_toolbar.
이러케 버튼하나를 만들구 USER_COMMAND에서
CASE r_ucomm.
WHEN 'ins'. " ---- 라인 추가
MOVE 'ins' TO gv_ucomm.
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = gv_ucomm.
이러케 SY-UCOMM이먹게해서
PAI에가서 추가하는 로직을 짜줬는데 여길 타질안네요~
그래서 SY-UCOMM 이 INS를 받아오지안구 이상한걸받아와서 결과가 나오질않습니다!!
그전에 한번했었는데 똑같이했는데 오늘 하루를 소비했어요 ㅠㅠ
디버깅걸면 USER_HANDLE_COMMAND를 타구 바루 PAI로가야하는데
USER_HANDLE_COMMAND 를 타지않구 타면 PAI로안가고 PBO로가버리고
엉망입니다 조언부탁드려요 !!
댓글 5
-
디버거
2008.08.19 23:52
-
CoolGuy
2008.08.20 00:07
CALL METHOD cl_gui_cfw=>set_new_ok_code
EXPORTING
new_code = gv_ucomm.
이메소드로 INS 를 PAI의 SY-UCOMM으로 가져옵니다만...
-
icarus
2008.08.20 00:19
ALV 이벤트가 핸들러 메소드로 가지 않고 PAI -> PBO 로 간다면
그리드 객체 생성시 혹시 I_APPL_EVENTS 파라미터를 설정하신게 아닌지 궁금하네요...
만일 I_APPL_EVENTS = 'X' 로 하셨다면 그 부분을 주석처리해 보세요...
-
펠리시티
2009.03.27 20:10
그 속성을 주석처리 해도 클래스의 user_command 메소드를 타지않네요... 흐음...
-
펠리시티
2009.04.01 23:55
저 이거 해결했어요.
일단 create object에서 i_appl_events 속성을 주석처리하고
디버깅돌려보면 user_command를 타지 않고 data_changed를 타요.
거기서 로직을 써줘야되요.
data_changed에 break-point를 걸어서 보시면
er_data_changed 더블클릭해서 보시면
거기에 버튼 이름들이 있습니다.
제 경우에는 스탠다드 버튼에 로직 넣는 걸 했는데
*&---------------------------------------------------------------------*
*& Form handle_data_changed
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_ER_DATA_CHANGED text
*----------------------------------------------------------------------*
FORM handle_data_changed
USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
DATA: ms_del LIKE lvc_s_moce,
mt_del TYPE lvc_t_moce.
mt_del = er_data_changed->mt_deleted_rows.
IF mt_del IS NOT INITIAL.
LOOP AT mt_del INTO ms_del.
READ TABLE gt_spfli INTO gs_spfli INDEX ms_del-row_id.
IF sy-subrc EQ 0.
DELETE FROM z32_spfli WHERE carrid EQ gs_spfli-carrid
AND connid EQ gs_spfli-connid.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " handle_data_changed
이런식으로 했습니다.
도움이 되었으면 좋겠습니다.
CL_GUI_ALV_GRID의 TOOLBAR 이벤트를 통해서 버튼을 추가하였을 경우에는..위에서 지정한 Function 코드 'ins'는 PAI 로직의 SY-UCOMM으로 들어가는게 아니라, CL_GUI_ALV_GRID의 USER_COMMAND 이벤트를 통한 E_UCOMM 매개변수가 'ins'를 받아옵니다.
즉, 현재 소스에서 USER_COMMAND 이벤트를 정의하고 수행하는 부분에서 E_UCOMM 매개변수의 값을 확인해 보시기 바랍니다.