sap的选择屏幕的标准工具栏上系统预先定义了5个按钮,他们对应的功能码是fc01-fc05,默认是不激活的。
用户可以使用selection-screen function key i.
来激活这5个按钮(这里的i必须是1-5),
这五个按钮的文本放在sscrfields的对应的functxt_0i中。
当用户按下按钮时,系统将触发at selection-screen 事件,
并将功能码放到sscrfields的ucomm字段中。
*-------------------------------- 例一 ------------------------------
report z_barry_test message-id oo.
TABLES: sscrfields.
PARAMETERS p_date LIKE sy-datum DEFAULT '20080403' OBLIGATORY.
SELECT-OPTIONS s_date FOR sy-datum DEFAULT '20080506' TO '20080607'.
SELECTION-SCREEN FUNCTION KEY 1.
INITIALIZATION.
sscrfields-functxt_01 = '@4D@ 清空'."也可以是‘@4A@’等 运行程序SHOWICON可看到所有
AT SELECTION-SCREEN.
CASE sy-ucomm .
WHEN 'FC01'.
CLEAR p_date.
CLEAR: s_date,s_date[].
ENDCASE.
*------------------------------- 例二 -------------------------------
REPORT demo_sel_screen_function_key.
TABLES sscrfields. "定义工作区
PARAMETERS: p_carrid TYPE s_carr_id,
p_cityfr TYPE s_from_cit.
SELECTION-SCREEN: FUNCTION KEY 1, "激活按钮
FUNCTION KEY 2.
INITIALIZATION.
sscrfields-functxt_01 = 'UI'. "定义按钮文本
sscrfields-functxt_02 = 'Expand'.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm. "处理按钮命令
WHEN'FC01'.
p_carrid = 'LH'.
p_cityfr = 'Frankfurt'.
WHEN 'FC02'.
p_carrid = 'UA'.
p_cityfr = 'Chicago'.
ENDCASE.
START-OF-SELECTION.
WRITE / 'START-OF-SELECTION'.
*---------------------------------- 例三 ------------------------------
REPORT demo_sel_screen_function_key.
TYPE-POOLS icon.
TABLES sscrfields.
DATA functxt TYPE smp_dyntxt.
PARAMETER p_matnr TYPE mara-matnr.
SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME.
PARAMETER p_test TYPE marc-werks MODIF ID m1.
SELECTION-SCREEN END OF BLOCK blk.
SELECTION-SCREEN FUNCTION KEY 1.
INITIALIZATION.
functxt-text = 'Collapse'.
functxt-icon_text = 'Collapse'.
functxt-icon_id = icon_expand.
sscrfields-functxt_01 = functxt.
AT SELECTION-SCREEN.
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM f_change_functxt.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
PERFORM f_display USING functxt-icon_text.
*&---------------------------------------------------------------------*
*& Form f_change_functxt
*&---------------------------------------------------------------------*
FORM f_change_functxt.
functxt = sscrfields-functxt_01.
IF functxt-icon_text = 'Expand'.
functxt-text = 'Collapse'.
functxt-icon_text = 'Collapse'.
functxt-icon_id = icon_collapse.
sscrfields-functxt_01 = functxt.
ELSE.
functxt-text = 'Expand'.
functxt-icon_text = 'Expand'.
functxt-icon_id = icon_expand.
sscrfields-functxt_01 = functxt.
ENDIF.
ENDFORM. "f_change_functxt
*&---------------------------------------------------------------------*
*& Form f_display
*&---------------------------------------------------------------------*
FORM f_display USING p_action.
LOOP AT SCREEN.
IF screen-group1 = 'M1'.
IF p_action = 'Expand'.
screen-active = '1'.
ELSE.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM. "f_display
评论