OOALV标准实现

TOP

"设置fildcat
DEFINE set_fieldfcat.
  gs_fieldcat_lvc-fieldname = &1. "字段名
  gs_fieldcat_lvc-coltext = &2.   "字段描述
  gs_fieldcat_lvc-scrtext_l = &2.
  gs_fieldcat_lvc-scrtext_m = &2.
  gs_fieldcat_lvc-scrtext_s = &2.
  gs_fieldcat_lvc-ref_table = &3.
  gs_fieldcat_lvc-ref_field = &4.
  gs_fieldcat_lvc-edit = &5.
  gs_fieldcat_lvc-no_out = &6.
  APPEND gs_fieldcat_lvc TO gt_fieldcat_lvc.
  CLEAR gs_fieldcat_lvc.
END-OF-DEFINITION.
DATA: gt_fieldcat_lvc TYPE lvc_t_fcat,
      gs_fieldcat_lvc TYPE lvc_s_fcat,
      gs_layout       TYPE lvc_s_layo,
*      s_disvariant  TYPE disvariant,
      gr_grid         TYPE  REF TO cl_gui_alv_grid,
      g_docking       TYPE REF TO cl_gui_docking_container.

ALV调用

 DATA: lt_tools     TYPE TABLE OF sy-ucomm.   "用于排除按钮

  IF g_docking IS INITIAL.
    CREATE OBJECT g_docking
      EXPORTING
        repid                       = sy-repid
        dynnr                       = '9001'
        side                        = cl_gui_docking_container=>dock_at_top
*       SIDE                        = 10
        extension                   = 99999
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc <> 0.
      MESSAGE s001(00) WITH '屏幕初始化失败'.
      LEAVE LIST-PROCESSING.
    ENDIF.
  ENDIF.

  CREATE OBJECT gr_grid
    EXPORTING
      i_parent = g_docking.
*
  SET HANDLER lcl_event_receiver=>toolbar FOR gr_grid.
  SET HANDLER lcl_event_receiver=>after_user_command FOR gr_grid.

  CALL METHOD gr_grid->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_modified.

  CLEAR lt_tools[].
  APPEND '&LOCAL&DELETE_ROW' TO lt_tools.
  APPEND '&LOCAL©_ROW' TO lt_tools.
  APPEND '&LOCAL&COPY_ROW' TO lt_tools.
  APPEND '&LOCAL©' TO lt_tools.
  APPEND '&LOCAL&APPEND' TO lt_tools.
  APPEND '&LOCAL&INSERT_ROW' TO lt_tools.
  APPEND '&LOCAL&CUT' TO lt_tools.
  APPEND '&LOCAL&PASTE_NEW_ROW' TO lt_tools.
  APPEND '&LOCAL&PASTE' TO lt_tools.
  APPEND '&LOCAL&UNDO' TO lt_tools.
  APPEND '&PRINT' TO lt_tools.
  APPEND '&GRAPH ' TO lt_tools.
  APPEND '&INFO' TO lt_tools.

  CALL METHOD gr_grid->set_table_for_first_display
    EXPORTING
      is_layout            = gs_layout
      i_save               = 'A'
*     is_variant           = s_disvariant
      it_toolbar_excluding = lt_tools
    CHANGING
      it_fieldcatalog      = gt_fieldcat_lvc
      it_outtab            = <dt_table>.

CLASS

CLASS lcl_event_receiver DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:

      toolbar  FOR EVENT toolbar OF cl_gui_alv_grid
        IMPORTING e_object
        ,


      after_user_command FOR EVENT after_user_command OF cl_gui_alv_grid
        IMPORTING e_ucomm.



ENDCLASS.                    "LCL_EVENT_RECEIVER DEFINITION
*&---------------------------------------------------------------------*

CLASS lcl_event_receiver IMPLEMENTATION.
  METHOD toolbar.
    PERFORM frm_event_toolbar CHANGING e_object
                                   .
  ENDMETHOD.

  METHOD after_user_command.
    PERFORM frm_ucomm USING e_ucomm .
    PERFORM frm_refresh.
  ENDMETHOD.
ENDCLASS.


FORM frm_event_toolbar  CHANGING    e_object  TYPE REF TO cl_alv_event_toolbar_set.
  DATA: ls_toolbar  TYPE stb_button.

  IF p_cj = 'X'.
    CLEAR ls_toolbar.
    MOVE 'REFRESH'    TO ls_toolbar-function         .
    MOVE '刷新'    TO ls_toolbar-text         .
    APPEND ls_toolbar TO e_object->mt_toolbar.

    CLEAR ls_toolbar.
    MOVE 'SAVE'    TO ls_toolbar-function         .
    MOVE '保存'    TO ls_toolbar-text         .
    APPEND ls_toolbar TO e_object->mt_toolbar..
  ENDIF.

ENDFORM.

FORM frm_ucomm  USING    u1.
  CASE u1.
    WHEN 'REFRESH'.
      PERFORM frm_get_data.
    WHEN 'SAVE'.
      PERFORM frm_save.
    WHEN OTHERS.
  ENDCASE.

ENDFORM.
*&---------------------------------------------------------------------*
*&      Form  FRM_REFRESH
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_refresh .
*     CALL METHOD lr_grid->set_frontend_layout
*    EXPORTING
*      is_layout = gs_layout_lvc.
  gr_grid->refresh_table_display( is_stable = VALUE lvc_s_stbl( row = 'X'
                                                                 col = 'X' ) ).
ENDFORM.
*&---------------------------------------------------------------------*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值