1. 程式人生 > >abap選擇螢幕工具欄按鈕問題

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'.           "為選擇螢幕的【工具欄按鈕】,設定預設名字