oo alv 有屏幕

1.定义**
TYPE-POOLS : slis.

DATA:g_container TYPE scrfname VALUE 'ALV_CON',
		  g_grid      TYPE REF TO cl_gui_alv_grid,
		  g_con       TYPE REF TO cl_gui_custom_container,
		  gs_layout   TYPE lvc_s_layo,
		  gs_variant  TYPE disvariant.

CLASS lcl_event_receiver DEFINITION DEFERRED.
DATA: g_event_receiver TYPE REF TO lcl_event_receiver.

CLASS lcl_event_receiver DEFINITION.

  PUBLIC SECTION.
    "处理更改
    METHODS handle_data_changed
                  FOR EVENT data_changed OF cl_gui_alv_grid
      IMPORTING er_data_changed.

"双击
METHODS catch_doubleclick
              FOR EVENT double_click OF cl_gui_alv_grid
  IMPORTING e_row
              e_column
              es_row_no .
"热键
METHODS handle_hotspot_click
              FOR EVENT hotspot_click OF cl_gui_alv_grid
  IMPORTING e_row_id
              e_column_id
              es_row_no.

"工具
METHODS  handle_toolbar
              FOR EVENT toolbar OF cl_gui_alv_grid
  IMPORTING e_object
              e_interactive.

实现用户命令
    METHODS  handle_user_command
                  FOR EVENT user_command OF cl_gui_alv_grid
      IMPORTING e_ucomm.

"F4 HELP11
METHODS on_f4_help11
              FOR EVENT onf4 OF cl_gui_alv_grid
  IMPORTING e_fieldname
              es_row_no
              er_event_data
              et_bad_cells
              e_display.

ENDCLASS.
2.layout赋值
同函数alv
3.fieldcat赋值
同函数alv
4.方法实施
CLASS lcl_event_receiver IMPLEMENTATION.

	  METHOD handle_data_changed. "更改的数据CHECK或者做其他处理
	    gt_chan = er_data_changed->mt_mod_cells[].
	    IF gt_chan IS NOT INITIAL.
	      PERFORM frm_data_changed USING gt_chan.
	    ENDIF.
	    CLEAR gt_chan.
	    CALL METHOD g_grid1->refresh_table_display.
	  ENDMETHOD.                    "handle_data_changed
      METHOD catch_doubleclick.
		    PERFORM frm_alv_doubleclick    USING e_row e_column es_row_no.
	  ENDMETHOD.                    "catch_doubleclick
	  METHOD handle_hotspot_click.
		    PERFORM frm_hotspot_click     USING e_row_id e_column_id es_row_no.
	  ENDMETHOD.                    "handle_hotspot_click
	  METHOD handle_toolbar.
		    PERFORM frm_handle_toolbar     USING e_object e_interactive.
	  ENDMETHOD.                    "HANDLE_TOOLBAR
	  METHOD handle_user_command.
		    PERFORM frm_handle_user_command USING e_ucomm.
	  ENDMETHOD.                    "HANDLE_USER_COMMAND
	  "F4 HELP11
	  METHOD on_f4_help11.
		    PERFORM frm_f4_help11 USING e_fieldname
		                                es_row_no
		                                er_event_data
		                                et_bad_cells
		                                e_display.
	  ENDMETHOD.                    "on_f4_help11

ENDCLASS.
5.CALL SCREEN 屏幕号
"屏幕PBO
process before output.

  MODULE status_0100.
  MODULE screen_field.

"屏幕PAI
process after input.

  MODULE user_command_0100.

MODULE status_0100 OUTPUT.

		  SET PF-STATUS 'PF100'.
		  SET TITLEBAR 'ST100'.
		  PERFORM ini_alv_grid.

ENDMODULE.

"屏幕字段属性设置
MODULE screen_field OUTPUT.

  LOOP AT SCREEN.
    screen-input = 0.
    MODIFY SCREEN.
  ENDLOOP.

ENDMODULE.

"屏幕动作获取
MODULE user_command_0100 INPUT.

  CASE ok_code.
    WHEN 'EXIT' OR '&F03'.
      SET SCREEN 0.
    WHEN '&SAVE'.
      PERFORM frm_save_data.
  ENDCASE.

ENDMODULE.

FORM ini_alv_grid .

  DATA:ls_stable TYPE lvc_s_stbl.
  IF g_con IS INITIAL.
    CREATE OBJECT g_con
      EXPORTING
        container_name = g_container.
    CREATE OBJECT g_grid
      EXPORTING
        i_parent = g_con.
    CALL METHOD g_grid->register_edit_event
      EXPORTING
        i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    CREATE OBJECT g_event_receiver.
    SET HANDLER g_event_receiver->handle_hotspot_click FOR g_grid.
    SET HANDLER g_event_receiver->handle_data_changed  FOR g_grid.
    SET HANDLER g_event_receiver->handle_toolbar       FOR g_grid.
    SET HANDLER g_event_receiver->catch_doubleclick    FOR g_grid.
    SET HANDLER g_event_receiver->handle_user_command  FOR g_grid.
“隐藏某些工具栏按钮
    PERFORM exclude_tb_functions CHANGING gt_exclude.
    CALL METHOD g_grid->set_table_for_first_display
      EXPORTING
        is_layout            = gs_layout
        it_toolbar_excluding = gt_exclude
        is_variant           = gs_variant
        i_save               = 'A'
      CHANGING
        it_outtab            = gt_list[]
        it_fieldcatalog      = lt_fieldcat[].
  ELSE.
    ls_stable-row = 'X'.
    ls_stable-col = 'X'.
    CALL METHOD g_grid->refresh_table_display
      EXPORTING
        is_stable = ls_stable
      EXCEPTIONS
        finished  = 1
        OTHERS    = 2.
    IF sy-subrc <> 0.
    ENDIF.

  ENDIF.

ENDFORM.

FORM exclude_tb_functions CHANGING ct_exclude TYPE ui_functions .

  DATA ls_exclude TYPE ui_func.
  ls_exclude = cl_gui_alv_grid=>mc_fc_excl_all.
  APPEND ls_exclude TO ct_exclude.

ENDFORM. " exclude_tb_functions

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值