ここでREUSE_ALV_GRID_DISPLAY_LVC ALVを呼び出すときに作成され、ラジオボタン(ラジオボタン)、およびラジオボタンを表示する方法を、対応する適切なを選択します。
シンプルなロジック:
1、ICONのラジオボタン: '@ TB @' (選択)及び'SR @'(非選択)
図2に示すように、登録 イベントlcl_event_receiver ラジオボタンをクリックしたとき=> hotspot_click対応する方法は、アイコンの変更に対処します。
完全なコード例:
REPORTのztest_alv_radiobutton。 TYPE-POOLS :ABAP、SLIS。 DATA:BEGIN OF gt_listはOCCURS 0 、 SELのTYPEのchar4、 ヴァルTYPE I、 END OF gt_listを。 DATA:go_alv_grid のTYPE REF TO cl_gui_alv_grid。 * &------------------------------------------------ --------------------- * * &CLASS LCL_EVENT_RECEIVER定義 * &--------------------- ------------------------------------------------ * CLASS lcl_event_receiverDEFINITION 。 PUBLIC SECTION 。 CLASS - 方法: * ホットスポットの事件の 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定義 * &--------------------------------------------- ------------------------ * * &CLASS LCL_EVENT_RECEIVER定義 *&------------------------------------------------- -------------------- * CLASSの lcl_event_receiverの実装。 メソッド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輸送SEL WHERESELのNE ' SRの@ @ ' 。 ls_list -sel = ' TB @ @ '。" 没有选中ラジオボタン的图标 MODIFY gt_listをFROM ls_list INDEXは、SELを輸送e_row_id。 ENDIF 。 PERFORM frm_ref_alvを。 ENDMETHOD。 " HANDLE_ONF4 ENDCLASSを。 「LCL_EVENT_RECEIVERの実装 * &--------------------------------------------- ------------------------ * * &START-OF-SELECTION *&------------------------------------------------- -------------------- * START-OF-SELECTION 。 PERFORM frm_get_dataを。 PERFORM frm_dsp_dataを。 * &------------------------------------------------ --------------------- * * &フォームFRM_GET_DATA * &---------------------- ----------------------------------------------- * FORMのfrm_get_data 。 DO 10 回。 IF SY-指数= 1 。 gt_list -sel = ' TB @ @ ' 。 ELSE 。 gt_list -sel =' @ SRは@ ' 。 ENDIF 。 gt_list -val = SY- インデックス。 APPEND gt_listを。 ENDDO 。 ENDFORM。 「FRM_GET_DATA * &---------------------------------------------- ----------------------- * * &フォームFRM_DSP_DATA * &-------------------- ------------------------------------------------- * FORM 。frm_dsp_data DATA:ls_layo TYPEのlvc_s_layo、 lt_fcatの TYPEのlvc_t_fcat、 ls_fcatの TYPElvc_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体= slis_ev_caller_exit_at_start。 APPEND ls_eventをTO lt_event。 * 显示ALV列表 CALL FUNCTION ' REUSE_ALV_GRID_DISPLAY_LVC 'を 輸出し i_callback_program = SY- REPID is_layout_lvc = ls_layo it_fieldcat_lvc = lt_fcat i_save = ' ' it_events = lt_event TABLES t_outtab = gt_list EXCEPTIONS PROGRAM_ERROR = 1 OTHERS = 2 。 IF SY-SUBRC <> 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 * &---------------------------------------------- ----------------------- * * &フォームCALLER_EXIT * &-------------------- ------------------------------------------------- * FORMの caller_exit 使用した 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 輸出し i_event_id = cl_gui_alv_grid => mc_evt_enter 例外 エラー = 。1 OTHERS = 2 。 * カーソルを設定した後は、離れセルトリガイベントを修正フォーカスがある CALL METHODの go_alv_grid - > register_edit_event 輸出し i_event_id = cl_gui_alv_grid => mc_evt_modified 例外を 誤差 = 1 OTHERS = 2 。 SET HANDLER lcl_event_receiver => hotspot_click FOR go_alv_grid。 ENDFORM。 「CALLER_EXIT * &---------------------------------------------- ----------------------- * * &フォームFRM_REF_ALV * &-------------------- ------------------------------------------------- * FORM frm_ref_alv。 データ ls_stblのTYPEのlvc_s_stbl。 ls_stbl行×= abap_true。 ls_stbl -col =abap_true。 CALL METHOD go_alv_grid-> refresh_table_display 輸出し is_stable = ls_stblを。 ENDFORM。 「FRM_REF_ALV
結果:
上記。