ALV GRID中實現RadioButton單選按鈕
阿新 • • 發佈:2019-01-06
-
TYPE-POOLS:ABAP, slis.
-
DATA: BEGIN OF gt_list OCCURS 0,
-
sel TYPE char4,
-
val TYPE i,
-
END OF gt_list.
-
DATA: go_alv_grid TYPE REF TO cl_gui_alv_grid.
-
*&---------------------------------------------------------------------*
-
*& CLASS LCL_EVENT_RECEIVER DEFINITION
-
*&---------------------------------------------------------------------*
-
CLASS lcl_event_receiver DEFINITION.
-
PUBLIC SECTION.
-
CLASS-METHODS:
-
hotspot_click
-
FOR EVENT hotspot_click OF cl_gui_alv_grid
-
IMPORTING e_row_id
-
e_column_id
-
es_row_no.
-
ENDCLASS. "LCL_EVENT_RECEIVER DEFINITION
-
*&---------------------------------------------------------------------*
-
*& CLASS LCL_EVENT_RECEIVER DEFINITION
-
*&---------------------------------------------------------------------*
-
CLASS lcl_event_receiver IMPLEMENTATION.
-
METHOD hotspot_click.
-
DATA: ls_list LIKE gt_list.
-
CLEAR ls_list.
-
READ TABLE gt_list INTO ls_list INDEX e_row_id.
-
IF gt_list-sel NE '@
-
ls_list-sel = '@[email protected]'.
-
MODIFY gt_list FROM ls_list TRANSPORTING sel WHERE sel NE '@[email protected]'.
-
ls_list-sel = '@[email protected]'.
-
MODIFY gt_list FROM ls_list INDEX e_row_id TRANSPORTING sel .
-
ENDIF.
-
PERFORM frm_ref_alv.
-
ENDMETHOD. "HANDLE_ONF4
-
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
-
*&---------------------------------------------------------------------*
-
*& START-OF-SELECTION
-
*&---------------------------------------------------------------------*
-
START-OF-SELECTION.
-
PERFORM frm_get_data.
-
PERFORM frm_dsp_data.
-
*&---------------------------------------------------------------------*
-
*& Form FRM_GET_DATA
-
*&---------------------------------------------------------------------*
-
FORM frm_get_data .
-
DO 10 TIMES.
-
IF sy-index = 1.
-
gt_list-sel = '@[email protected]'.
-
ELSE.
-
gt_list-sel = '@[email protected]'.
-
ENDIF.
-
gt_list-val = sy-index.
-
APPEND gt_list.
-
ENDDO.
-
ENDFORM. " FRM_GET_DATA
-
*&---------------------------------------------------------------------*
-
*& Form FRM_DSP_DATA
-
*&---------------------------------------------------------------------*
-
FORM frm_dsp_data .
-
DATA: ls_layo TYPE lvc_s_layo,
-
lt_fcat TYPE lvc_t_fcat,
-
ls_fcat TYPE lvc_s_fcat,
-
lt_event TYPE slis_t_event,
-
ls_event TYPE slis_alv_event.
-
ls_layo-zebra = abap_true.
-
ls_layo-cwidth_opt = abap_true.
-
ls_fcat-fieldname = 'SEL'.
-
ls_fcat-hotspot = 'X'.
-
ls_fcat-scrtext_l =
-
ls_fcat-scrtext_m =
-
ls_fcat-scrtext_s = '選擇'.
-
APPEND ls_fcat TO lt_fcat.
-
CLEAR ls_fcat.
-
ls_fcat-fieldname = 'VAL'.
-
ls_fcat-scrtext_l =
-
ls_fcat-scrtext_m =
-
ls_fcat-scrtext_s = '值'.
-
APPEND ls_fcat TO lt_fcat.
-
CLEAR ls_fcat.
-
ls_event-name = slis_ev_caller_exit_at_start.
-
ls_event-form = slis_ev_caller_exit_at_start.
-
APPEND ls_event TO lt_event.
-
* 顯示alv列表
-
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
-
EXPORTING
-
i_callback_program = sy-repid
-
is_layout_lvc = ls_layo
-
it_fieldcat_lvc = lt_fcat
-
i_save = 'A'
-
it_events = lt_event
-
TABLES
-
t_outtab = gt_list
-
EXCEPTIONS
-
program_error = 1
-
OTHERS = 2.
-
IF sy-subrc NE 0.
-
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
-
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
-
ENDIF.
-
ENDFORM. " FRM_DSP_DATA
-
*&---------------------------------------------------------------------*
-
*& Form CALLER_EXIT
-
*&---------------------------------------------------------------------*
-
FORM caller_exit USING u_exit TYPE slis_data_caller_exit.
-
DATA: ls_f4 TYPE lvc_s_f4,
-
lt_f4 TYPE lvc_t_f4.
-
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
-
IMPORTING
-
e_grid = go_alv_grid.
-
* 設定回車事件
-
CALL METHOD go_alv_grid->register_edit_event
-
EXPORTING
-
i_event_id = cl_gui_alv_grid=>mc_evt_enter
-
EXCEPTIONS
-
error = 1
-
OTHERS = 2.
-
* 設定游標焦點移開被修改單元格後觸發事件
-
CALL METHOD go_alv_grid->register_edit_event
-
EXPORTING
-
i_event_id = cl_gui_alv_grid=>mc_evt_modified
-
EXCEPTIONS
-
error = 1
-
OTHERS = 2.
-
SET HANDLER lcl_event_receiver=>hotspot_click FOR go_alv_grid.
-
ENDFORM. "CALLER_EXIT
-
*&---------------------------------------------------------------------*
-
*& Form FRM_REF_ALV
-
*&---------------------------------------------------------------------*
-
FORM frm_ref_alv .
-
DATA ls_stbl TYPE lvc_s_stbl.
-
ls_stbl-row = abap_true.
-
ls_stbl-col = abap_true.
-
CALL METHOD go_alv_grid->refresh_table_display
-
EXPORTING
-
is_stable = ls_stbl.
- ENDFORM. " FRM_REF_ALV