SAP:ALV动态菜单栏控制实例
具体代码实现: SET PF-STATUS ‘PF_1000’ EXCLUDING lt_exfcode.
EXCLUDING :不包含按钮
*&---------------------------------------------------------------------*
*& Report ZSY_ZM_TEST06
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zsy_zm_test06.
TABLES:mara.
DATA:gt_mara LIKE TABLE OF mara,
gs_mara LIKE LINE OF gt_mara.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-s01.
PARAMETERS: p_rad1 RADIOBUTTON GROUP op2,
p_rad2 RADIOBUTTON GROUP op2. "
* PARAMETERS:p_box AS CHECKBOX. "
SELECTION-SCREEN END OF BLOCK b1.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
*&---------------------------------------------------------------------*
* START-OF-SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_mara FROM mara UP TO 100 ROWS.
END-OF-SELECTION.
PERFORM frm_display.
*&---------------------------------------------------------------------*
*& Form FRM_DISPLAY
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM frm_display .
DATA: gt_fieldfcat TYPE lvc_t_fcat,
lv_i TYPE i.
DATA ls_layout TYPE lvc_s_layo.
DATA: ls_vari TYPE disvariant,
lt_event TYPE slis_t_event, "定义事件
ls_event TYPE slis_alv_event.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'MARA'
CHANGING
ct_fieldcat = gt_fieldfcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
* 布局
ls_layout-sel_mode = 'A'.
ls_layout-cwidth_opt = 'X'. "输出格式最优化
ls_layout-zebra = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'FRM_SET_STATUS'
i_callback_user_command = 'FRM_USER_COMMAND'
* i_callback_html_top_of_page = 'FRM_TOP_OF_PAGE' "增加表头
is_layout_lvc = ls_layout
it_fieldcat_lvc = gt_fieldfcat[]
i_default = 'X'
i_save = 'U'
* i_html_height_top = 8
it_events = lt_event
TABLES
t_outtab = gt_mara[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_SET_STATUS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_set_status USING t_ex_tcode TYPE slis_t_extab.
* DATA ls_tcode TYPE slis_extab.
DATA lt_exfcode TYPE TABLE OF sy-ucomm.
IF p_rad1 = 'X'. "
APPEND 'ZSAVE' TO lt_exfcode.
ELSEIF p_rad2 = 'X'.
APPEND 'ZCLEAR' TO lt_exfcode.
ENDIF.
SET PF-STATUS 'PF_1000' EXCLUDING lt_exfcode.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM frm_user_command USING u_comm TYPE sy-ucomm
u_selfield TYPE slis_selfield.
CASE u_comm.
WHEN '&IC1'.
WHEN 'ZSAVE'.
WHEN 'ZCLEAR'.
ENDCASE.
u_selfield-refresh = 'X'.
u_selfield-col_stable = 'X'.
u_selfield-row_stable = 'X'.
ENDFORM.
post SAP-Garson
原文链接:https://blog.csdn.net/weixin_43734184/article/details/123703168文章来自于网络,如果侵犯了您的权益,请联系站长删除!