【REUSE_ALV_GRID_DISPLAY_LVC] - 表示ラジオボタン(ラジオボタン)

ここでREUSE_ALV_GRID_DISPLAY_LVC ALVを呼び出すときに作成され、ラジオボタン(ラジオボタン)、およびラジオボタンを表示する方法を、対応する適切なを選択します。

シンプルなロジック:

1、ICONのラジオボタン: '@ TB @'   (選択)及び'SR @'(非選択)

図2に示すように、登録  イベントlcl_event_receiver ラジオボタンをクリックしたとき=> hotspot_click対応する方法は、アイコンの変更に対処します。

完全なコード例:

REPORTのztest_alv_radiobutton。

TYPE-POOLS :ABAP、SLIS。

DATABEGIN  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。
ENDCLASSLCL_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 ENDFORMFRM_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 ENDFORMFRM_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。
ENDFORMCALLER_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を。
ENDFORMFRM_REF_ALV

結果:

上記。

おすすめ

転載: www.cnblogs.com/datie/p/11433724.html