SAP系统的选择屏幕的标准工具栏上预先定义了5个按钮,对应的功能码是FC01、FC02、FC03、FC04、FC05,该功能码默认是不激活的。用户可以使用以下代码来激活这5个按钮
SELECTION-SCREEN FUNCTION KEY i.
提示Tips:这里的 i 必须是整数1-5,五个按钮的文本放在sscrfields数据库表对应的functxt_0i中
当用户按下按钮时,系统将会触发 AT SELECTION-SCREEN 事件,并将功能码放到sscrfields数据库表中的ucomm字段
示例
在SAP报表的选择屏幕上添加两个自定义按钮:"模板下载"和"数据上传",这两个按钮将对应于功能码FC01和FC02
① 定义按钮
在选择屏幕上定义这两个按钮,并激活系统预定义的按钮位置
② 设置按钮文本
在 INITIALIZATION 事件中,设置这两个按钮的文本描述
③ 处理按钮事件
在 AT SELECTION-SCREEN 事件中,处理用户点击这两个按钮的动作
④ 实现按钮功能
实现 download_template 和 upload_data 两个子例程,用以处理按钮点击后的具体逻辑
完整程序代码
REPORT z437_test_2024.
SELECTION-SCREEN FUNCTION KEY 1. " 激活第一个按钮
SELECTION-SCREEN FUNCTION KEY 2. " 激活第二个按钮
TABLES: sscrfields.
PARAMETERS: p_carrid TYPE s_carr_id,
p_cityfr TYPE s_from_cit.
*----------------------------------------------------------------------*
* DESC: INITIALIZATION 事件
*----------------------------------------------------------------------*
INITIALIZATION.
sscrfields-functxt_01 = '模板下载'. " 设置第一个按钮的文本
sscrfields-functxt_02 = '数据上传'. " 设置第二个按钮的文本
*----------------------------------------------------------------------*
* DESC: AT SELECTION-SCREEN 事件
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'FC01'. " 当用户点击"模板下载"按钮
PERFORM download_template.
WHEN 'FC02'. " 当用户点击"数据上传"按钮
PERFORM upload_data.
ENDCASE.
FORM download_template.
MESSAGE '正在下载模板...' TYPE 'I'. " 添加下载模板的逻辑
ENDFORM.
FORM upload_data.
MESSAGE '正在上传数据...' TYPE 'I'. " 添加数据上传的逻辑
ENDFORM.
输出结果: