abap选择屏幕工具栏按钮问题

选择屏幕的工具栏按钮?听上去好像就是SE80创建report的时候,新增加一个GUI状态嘛,对不对?其实不是的。
我们先看一个普通的report程序
image
不就是这样嘛?
我们运行这个report看看
image
点击执行按钮,才会看到
image
因此,我们所说的【选择屏幕工具栏按钮】指的并不是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.                   "为选择屏幕创建【工具栏按钮】

但是工具栏按钮没有指定名字,很奇怪吧
image
原因是:我复制粘贴一下
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'.           "为选择屏幕的【工具栏按钮】,设置默认名字

猜你喜欢

转载自yq.aliyun.com/articles/683125