一、给选择屏幕按钮添加图标和文本:ICON_CREATE
1.定义按钮:
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 2(15) but1 USER-COMMAND view. "定义搜索按钮
SELECTION-SCREEN PUSHBUTTON 30(15) but2 USER-COMMAND edit. "定义维护按钮
SELECTION-SCREEN END OF LINE.
INITIALIZATION.
PERFORM frm_init_data
2,.调用函数:
FORM frm_init_data.
* 定义 but1 = '查看' but2 = '维护'
* 给按钮添加图标和文本
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_display
text = '查看'
info = '查看'
IMPORTING
result = but1
EXCEPTIONS
OTHERS = 0.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_display
text = '维护'
info = '维护'
IMPORTING
result = but2
EXCEPTIONS
OTHERS = 0.
ENDFORM. "FRM_INIT_DATA
二、下拉列表函数:VRM_SET_VALUES
1.选择屏幕定义下拉列表
SELECTION-SCREEN FUNCTION KEY 1.
PARAMETERS:p_tabnam TYPE dd02l-tabname AS LISTBOX VISIBLE LENGTH 35.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_tabnam.
"下拉菜单函数
PERFORM frm_set_vrm_list.
2.调用函数
这里是通过配置表获取对应值的,对于下拉列表赋值还可以手动赋值等。
FORM frm_set_vrm_list.
DATA:lt_list TYPE vrm_values.
SELECT tabname AS key ddtext AS text INTO TABLE lt_list FROM zps_set_tab.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'P_TABNAM'
values = lt_list.
ENDFORM.
三、按钮触发维护配置表,显示配置表信息,视图维护:VIEW_MAINTENANCE_CALL
1.通过定义屏幕按钮触发该事件
FORM frm_edit_ps_tab.
DATA:lv_ok_code TYPE sy-ucomm.
CLEAR lv_ok_code.
lv_ok_code = sy-ucomm.
CASE lv_ok_code.
"编辑 对配置表维护的 配置表 ZPS_SET_TAB
WHEN 'EDIT_TAB'.
PERFORM frm_update_tab USING: 'U'
'ZPS_SET_TAB'.
WHEN 'VIEW'.
PERFORM frm_update_tab USING: 'S'
p_tabnam.
WHEN 'EDIT'.
PERFORM frm_update_tab USING: 'U'
p_tabnam.
ENDCASE.
ENDFORM.
2.调用函数
FORM frm_update_tab USING value(p_action) TYPE c
value(p_tabname) TYPE dd02v-tabname.
DATA: lt_excl_cua_funct TYPE TABLE OF vimexclfun WITH HEADER LINE.
IF p_action = 'S'.
lt_excl_cua_funct-function = 'AEND'.
APPEND lt_excl_cua_funct.
ENDIF.
* 调用函数 VIEW_MAINTENANCE_CALL 视图维护/通用模块
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = p_action "S查看/U修改
* CORR_NUMBER = ' '
* GENERATE_MAINT_TOOL_IF_MISSING = ' '
* SHOW_SELECTION_POPUP = ' '
view_name = p_tabname
* NO_WARNING_FOR_CLIENTINDEP = ' '
* RFC_DESTINATION_FOR_UPGRADE = ' '
* CLIENT_FOR_UPGRADE = ' '
* VARIANT_FOR_SELECTION = ' '
* COMPLEX_SELCONDS_USED = ' '
* CHECK_DDIC_MAINFLAG = ' '
* SUPPRESS_WA_POPUP = ' '
TABLES
* DBA_SELLIST =
EXCL_CUA_FUNCT = LT_EXCL_CUA_FUNCT
EXCEPTIONS
CLIENT_REFERENCE = 1
FOREIGN_LOCK = 2
INVALID_ACTION = 3
NO_CLIENTINDEPENDENT_AUTH = 4
NO_DATABASE_FUNCTION = 5
NO_EDITOR_FUNCTION = 6
NO_SHOW_AUTH = 7
NO_TVDIR_ENTRY = 8
NO_UPD_AUTH = 9
ONLY_SHOW_ALLOWED = 10
SYSTEM_FAILURE = 11
UNKNOWN_FIELD_IN_DBA_SELLIST = 12
VIEW_NOT_FOUND = 13
MAINTENANCE_PROHIBITED = 14
OTHERS = 15.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN '6'.
MESSAGE I001(00) WITH '请先维护视图函数!'.
WHEN '8'.
MESSAGE I001(00) WITH '请先维护自建表视图!'.
WHEN OTHERS.
MESSAGE I001(00) WITH '没有维护自建表权限!'.
ENDCASE.
ENDIF.
ENDFORM. "FRM_UPDATE_TAB