Function实现ALV Table八:事件

ALV的提供了事件的功能,通过事件功能可以设置ALV的页眉页脚,GUI Status,用户自定义功能,功能触发前后动作。

通过Function ‘REUSE_ALV_EVENT_NAMES_GET’可以取得ALV提供的所以事件。下面是ALV的所有事件:

SLIS_EV_CALLER_EXIT_AT_START

SLIS_EV_USER_COMMAND

SLIS_EV_TOP_OF_PAGE

SLIS_EV_TOP_OF_COVERPAGE

SLIS_EV_END_OF_COVERPAGE

SLIS_EV_FOREIGN_TOP_OF_PAGE

SLIS_EV_FOREIGN_END_OF_PAGE

SLIS_EV_PF_STATUS_SET

SLIS_EV_LIST_MODIFY

SLIS_EV_TOP_OF_LIST

SLIS_EV_END_OF_PAGE

SLIS_EV_END_OF_LIST

SLIS_EV_AFTER_LINE_OUTPUT

SLIS_EV_BEFORE_LINE_OUTPUT

SLIS_EV_REPREP_SEL_MODIFY

SLIS_EV_SUBTOTAL_TEXT

 

下面图片的功能全部都是用ALV的事件做到的

 


下面是源代码

TYPE-POOLS slis.

 

TYPES ty_tab_spfli TYPE spfliOCCURS 0.

 

START-OF-SELECTION.

  PERFORM f_display.

 

*&---------------------------------------------------------------------*

*&      Form f_getdata

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->PT_SPFLI   text

*----------------------------------------------------------------------*

FORM f_getdata TABLES pt_spfliTYPE ty_tab_spfli.

  SELECT * FROM spfli INTO TABLE pt_spfli.

ENDFORM.                    "f_getdata

 

*&---------------------------------------------------------------------*

*&      Form f_display

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM f_display.

 

  DATA: lt_spfli TYPE ty_tab_spfli,

        lt_events TYPE slis_t_event.

 

  PERFORM f_getdata TABLES lt_spfli.

 

  PERFORM f_event_build TABLES lt_events.

 

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program = sy-repid

      i_structure_name   = 'SPFLI'

      it_events          = lt_events

    TABLES

      t_outtab           = lt_spfli.

ENDFORM.                    "f_display

 

*&---------------------------------------------------------------------*

*&      Form f_event_build

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->PT_EVENTS  text

*----------------------------------------------------------------------*

FORM f_event_build TABLESpt_events TYPE slis_t_event.

  DATA lwa_event LIKE LINE OF pt_events.

 

  lwa_event-name = 'PF_STATUS_SET'.

  lwa_event-form = 'F_SET_STATUS'.

  APPEND lwa_event TO pt_events.

  lwa_event-name = 'USER_COMMAND'.

  lwa_event-form = 'F_SET_USER_COMMAND'.

  APPEND lwa_event TO pt_events.

  lwa_event-name = 'TOP_OF_PAGE'.

  lwa_event-form = 'F_TOP_OF_PAGE'.

  APPEND lwa_event TO pt_events.

  lwa_event-name = 'END_OF_LIST'.

  lwa_event-form = 'F_END_OF_LIST'.

  APPEND lwa_event TO pt_events.

ENDFORM.                    "f_event_build

 

*&---------------------------------------------------------------------*

*&      Form f_set_status

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->RT_EXTAB   text

*----------------------------------------------------------------------*

FORM f_set_status USINGrt_extab TYPE slis_t_extab.

  SET PF-STATUS 'SLVC_FULLSCREEN' EXCLUDINGrt_extab.

ENDFORM.                    "f_set_status

 

 

*&---------------------------------------------------------------------*

*&      Form f_set_user_command

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->UCOMM        text

*      -->RS_SELFIELD  text

*----------------------------------------------------------------------*

FORM f_set_user_command USINGucomm LIKE sy-ucomm

                              rs_selfield TYPEslis_selfield.

  CASE ucomm.

    WHEN 'FUNCTION'.

      MESSAGE i000(ytest) WITH 'you clickbutton'.

  ENDCASE.

ENDFORM.                    "f_set_user_command

 

*&---------------------------------------------------------------------*

*&      Form F_TOP_OF_PAGE

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM f_top_of_page.

  DATA: lt_listheader TYPE slis_t_listheader,

        lwa_listheader LIKE LINE OFlt_listheader.

 

  lwa_listheader-typ = 'H'.

  lwa_listheader-info = 'Xin''s alv EventHEADER'.

  APPEND lwa_listheader TO lt_listheader.

  lwa_listheader-typ = 'S'.

  lwa_listheader-info = 'Selection'.

  APPEND lwa_listheader TO lt_listheader.

  lwa_listheader-typ = 'A'.

  lwa_listheader-info = 'Action'.

  APPEND lwa_listheader TO lt_listheader.

 

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      i_logo             = 'ENJOYSAP_LOGO'

      it_list_commentary = lt_listheader.

 

ENDFORM.                    "F_TOP_OF_PAGE

 

*&---------------------------------------------------------------------*

*&      Form F_END_OF_LIST

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM f_end_of_list.

  DATA: lt_listheader TYPE slis_t_listheader,

        lwa_listheader LIKE LINE OF lt_listheader.

 

  lwa_listheader-typ = 'H'.

  lwa_listheader-info = 'End Of List'.

  APPEND lwa_listheader TO lt_listheader.

 

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'

    EXPORTING

      it_list_commentary = lt_listheader.

ENDFORM.                    "F_END_OF_LIST

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ALV 中添加状态栏下拉框按钮的实现步骤如下: 1. 在函数模块中使用 FM REUSE_ALV_GRID_DISPLAY 调用 ALV 控件。 2. 在该函数模块中使用 FM REUSE_ALV_COMMENTARY_WRITE 向状态栏添加注释。 3. 在注释中添加 DROPDOWN_LIST ,并设置其属性和选项。 4. 在用户选择下拉列表选项时,处理用户选项并更新 ALV 数据。 以下是示例 ABAP 代码: ``` FUNCTION z_alv_dropdown. DATA: lt_fieldcat TYPE lvc_t_fcat, lt_layout TYPE lvc_s_layo, lt_sflight TYPE TABLE OF sflight, lt_ddl TYPE ddshretval. FIELD-SYMBOLS: <fs_sflight> TYPE sflight. *-- 1. 调用 ALV CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid i_callback_top_of_page = 'TOP-OF-PAGE' it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_sflight CHANGING it_layout = lt_layout. *-- 2. 添加注释和下拉框 CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = VALUE #( ( comment = 'Select Status:' ) ) i_logo = ' ' i_logo2 = ' ' i_type = 'S' i_width = 20. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = VALUE #( ( comment = ' ' ) ) i_logo = ' ' i_logo2 = ' ' i_type = 'S' i_width = 20. CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE' EXPORTING it_list_commentary = VALUE #( ( comment = 'DROPDOWN_LIST' ) ) i_logo = ' ' i_logo2 = ' ' i_type = 'S' i_width = 20. *-- 3. 设置下拉框选项 CALL FUNCTION 'DD_DOMVALUES_GET' EXPORTING domname = 'STATUS' TABLES ddshretval = lt_ddl. *-- 4. 处理用户选项并更新数据 LOOP AT lt_sflight ASSIGNING <fs_sflight>. IF sy-tabix > lt_layout-top_lines. IF <fs_sflight>-carrid = 'LH'. <fs_sflight>-status = lt_ddl[ 1 ]-domvalue_l. ELSEIF <fs_sflight>-carrid = 'UA'. <fs_sflight>-status = lt_ddl[ 2 ]-domvalue_l. ELSE. <fs_sflight>-status = lt_ddl[ 3 ]-domvalue_l. ENDIF. ENDIF. ENDLOOP. ENDFUNCTION. ``` 在上述代码中,我们使用了 DD_DOMVALUES_GET 函数获取了一个名为 STATUS 的域的所有可能值,并将这些值添加到一个名为 lt_ddl 的内部表中。然后,我们在 ALV 状态栏中添加了一个下拉框,以显示这些选项。当用户选择下拉框中的选项时,我们处理用户选项并更新 ALV 数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值