abap選擇螢幕工具欄按鈕問題
阿新 • • 發佈:2018-12-29
選擇螢幕的工具欄按鈕?聽上去好像就是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'. "為選擇螢幕的【工具欄按鈕】,設定預設名字