业务需求:
在SAP项目中,会经常碰到如下需求:
在查询报表程序的选择界面,添加按钮;通过点击按钮去完成一些功能(例如:打开一个配置表或者打开一个新的程序)。
具体实现步骤如下
一、定义选择屏幕按钮
选择屏幕按钮,最多可以定义五个!
关键字:SELECTION-SCREEN FUNCTION KEY 1.
*&-----------------------------------------------------------------*
* 定义: 选择界面
*&-----------------------------------------------------------------*
**--选择条件
SELECTION-SCREEN BEGIN OF BLOCK BK01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VKORG FOR LIKP-VKORG. "销售组织
SELECTION-SCREEN END OF BLOCK BK01.
**--按钮定义
SELECTION-SCREEN FUNCTION KEY 1.
二、在INITIALIZATION事件下给予按钮图标和名称
*----------------------------------------------------------------------*
* 事件:INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
**--按钮定义-初始化
CLEAR LS_FUNCTXT.
LS_FUNCTXT-ICON_ID = ICON_TABLE_SETTINGS. "图标,可以通过ICON查找
LS_FUNCTXT-ICON_TEXT = '业务配置'."描述
SSCRFIELDS-FUNCTXT_01 = LS_FUNCTXT.
三、在AT SELECTION-SCREEN中实现按钮事件
*----------------------------------------------------------------------*
* 事件: AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
**--按钮响应
CASE SSCRFIELDS-UCOMM.
WHEN 'FC01'.
MESSAGE '功能开发中.....' TYPE 'I'.
WHEN OTHERS.
ENDCASE.
四、完整代码如下:
*&---------------------------------------------------------------------*
*& Report ZSAP_ABAP_DEMO
*&
*&---------------------------------------------------------------------*
*& Program Name <程序名称>: ABAP_选择屏幕_按钮
*& Purpose <程序用途>: 学习演示
*& Project Name <项目名称>:
*& Created by <创 建 人>: 哈佛
*& Created on <创建日期>: 时刻准备着...........
*& Functional Consultant<功能顾问>: biz consultant
*& Description <功能描述>: ABAP_选择屏幕_按钮
*&---------------------------------------------------------------------*
* Modification Log<程序修改日志>
*<日期> <开发者> <功能顾问> <修改描述>
* Date Programmer Corr. # 请求号+描述
*&
*&
*&---------------------------------------------------------------------*
REPORT ZSAP_ABAP_DEMO NO STANDARD PAGE HEADING.
TABLES: LIKP,
SSCRFIELDS.
*&-----------------------------------------------------------------*
* 定义: 选择界面
*&-----------------------------------------------------------------*
**--选择条件
SELECTION-SCREEN BEGIN OF BLOCK BK01 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: S_VKORG FOR LIKP-VKORG. "销售组织
SELECTION-SCREEN END OF BLOCK BK01.
**--按钮定义
SELECTION-SCREEN FUNCTION KEY 1.
*&-----------------------------------------------------------------*
* 定义: 变量
*&-----------------------------------------------------------------*
DATA: LS_FUNCTXT TYPE SMP_DYNTXT.
*&-----------------------------------------------------------------*
* 执行:主程序
*&-----------------------------------------------------------------*
*----------------------------------------------------------------------*
* 事件:INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
**--按钮定义-初始化
CLEAR LS_FUNCTXT.
LS_FUNCTXT-ICON_ID = ICON_TABLE_SETTINGS. "图标,可以通过ICON查找
LS_FUNCTXT-ICON_TEXT = '业务配置'."描述
SSCRFIELDS-FUNCTXT_01 = LS_FUNCTXT.
*----------------------------------------------------------------------*
* 事件: AT SELECTION-SCREEN
*----------------------------------------------------------------------*
AT SELECTION-SCREEN.
**--按钮响应
CASE SSCRFIELDS-UCOMM.
WHEN 'FC01'.
MESSAGE '功能开发中.....' TYPE 'I'.
WHEN OTHERS.
ENDCASE.
*----------------------------------------------------------------------*
* 事件: START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.
**--主程序
WRITE 'ABAP_选择屏幕_按钮'.