欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

ALV GRID中实现RadioButton单选按钮

发布时间:2025/3/20 编程问答 25 豆豆
生活随笔 收集整理的这篇文章主要介绍了 ALV GRID中实现RadioButton单选按钮 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

ALV GRID中实现Checkbox复选框很简单,只需要将LVC_S_FCAT-CHECKBOX = 'X'即可,那么alv中radio Button单选怎么实现呢?

1、程序代码
  • 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 '@TB@'.
  •       ls_list-sel = '@SR@'.
  •       MODIFY gt_list FROM ls_list TRANSPORTING sel WHERE sel NE '@SR@'.
  •       ls_list-sel = '@TB@'.
  •       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 = '@TB@'.
  •     ELSE.
  •       gt_list-sel = '@SR@'.
  •     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
  • 复制代码
    2、程序执行效果:

    与50位技术专家面对面20年技术见证,附赠技术全景图

    总结

    以上是生活随笔为你收集整理的ALV GRID中实现RadioButton单选按钮的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。