选择屏幕的工具栏按钮?听上去好像就是SE80创建report的时候,新增加一个GUI状态嘛,对不对?其实不是的。
我们先看一个普通的report程序
不就是这样嘛?
我们运行这个report看看
点击执行按钮,才会看到
因此,我们所说的【选择屏幕工具栏按钮】指的并不是report上GUI状态中所创建的自定义按钮,而是另外一种。
REPORT ZMMR00251.
TABLES: SSCRFIELDS,
MKPF.
DATA: GT_EXCEL TYPE TABLE OF ALSMEX_TABLINE, "
GS_EXCEL TYPE ALSMEX_TABLINE.
PARAMETERS: PA_FILE TYPE RLGRAP-FILENAME. "选择屏幕的【单值输入框】
SELECTION-SCREEN FUNCTION KEY 1. "为选择屏幕创建【工具栏按钮】
INITIALIZATION.
sscrfields-functxt_01 = '工具栏按钮1'. "为选择屏幕的【工具栏按钮】,设置默认名字
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_file. "【单值输入框】触发的动作
PERFORM frm_get_excel_f4 CHANGING pa_file.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_download_temp CHANGING sscrfields-ucomm. "【工具栏按钮】触发的动作
ENDCASE.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD_TEMP
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- SSCRFIELDS_UCOMM
*&---------------------------------------------------------------------*
FORM FRM_DOWNLOAD_TEMP CHANGING P_SSCRFIELDS_UCOMM.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_GET_EXCEL_F4
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& <-- PA_FILE
*&---------------------------------------------------------------------*
FORM FRM_GET_EXCEL_F4 CHANGING P_PA_FILE.
ENDFORM.
上面的代码创建了两个元素:【选择屏幕的单值输入框】和【选择屏幕的工具栏按钮】
单值输入框指的是parameter
PARAMETERS: PA_FILE TYPE RLGRAP-FILENAME. "选择屏幕的【单值输入框】
工具栏按钮
SELECTION-SCREEN FUNCTION KEY 1. "为选择屏幕创建【工具栏按钮】
但是工具栏按钮没有指定名字,很奇怪吧
原因是:我复制粘贴一下
sap的选择屏幕的标准工具栏上系统预先定义了5个按钮,他们对应的功能码是FC01-FC05,默认是不激活的。用户可以使用SELECTION-SCREEN FUNCTION KEY i.来激活这5个按钮(这里的i必须是1-5),这五个按钮的文本放在SSCRFields的对应的Functxt_0i中。当用户按下按钮时,系统将触发AT SELECTION-SCREEN 事件,并将功能码放到sscrfields的ucomm字段中。
也就是说,这些按钮是系统自带的,我们只需要激活,顺便使用,然后命名一下。
为选择屏幕的工具栏按钮命名的按钮的代码是:
INITIALIZATION.
sscrfields-functxt_01 = '工具栏按钮1'. "为选择屏幕的【工具栏按钮】,设置默认名字