方式一:使用COMMENT关键字。
REPORT ztest_collapse.
TYPE-POOLS icon.
TABLES mara.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .
PARAMETERS p_werks TYPE werks.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 1(4) but1 USER-COMMAND button1 VISIBLE
LENGTH 2.
SELECTION-SCREEN COMMENT 6(20) com1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME .
SELECT-OPTIONS:s_matnr FOR mara-matnr MODIF ID bl1,
s_groes FOR mara-groes MODIF ID bl1.
SELECTION-SCREEN END OF BLOCK b2 .
INITIALIZATION.
WRITE icon_data_area_expand AS ICON TO but1.
com1 = 'DATA EXPAND'.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'BUTTON1'.
IF but1 = '@K1@'.
WRITE icon_data_area_collapse AS ICON TO but1.
com1 = 'DATA COLLAPSE'.
ELSE.
WRITE icon_data_area_expand AS ICON TO but1.
com1 = 'DATA EXPAND'.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF but1 = '@K2@' AND screen-group1 = 'BL1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
运行效果:
方法二:使用Function Module: ICON_CREATE.
REPORT ztest_collapse2.
TYPE-POOLS icon.
TABLES mara.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .
PARAMETERS p_werks TYPE werks.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN PUSHBUTTON 1(40) but1 USER-COMMAND button1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME .
SELECT-OPTIONS:s_matnr FOR mara-matnr MODIF ID bl1,
s_groes FOR mara-groes MODIF ID bl1.
SELECTION-SCREEN END OF BLOCK b2 .
INITIALIZATION.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_data_area_collapse
text = 'Data Expand'
info = 'Data Expand'
* ADD_STDINF = 'X'
IMPORTING
result = but1
EXCEPTIONS
icon_not_found = 1
outputfield_too_short = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
AT SELECTION-SCREEN.
CASE sy-ucomm.
WHEN 'BUTTON1'.
IF but1(03) = '@K1'.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_data_area_collapse
text = 'Data Expand'
info = 'Data Expand'
* ADD_STDINF = 'X'
IMPORTING
result = but1
EXCEPTIONS
icon_not_found = 1
outputfield_too_short = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ELSE.
CALL FUNCTION 'ICON_CREATE'
EXPORTING
name = icon_data_area_expand
text = 'Data Collapse'
info = 'Data Collapse'
* ADD_STDINF = 'X'
IMPORTING
result = but1
EXCEPTIONS
icon_not_found = 1
outputfield_too_short = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF but1(03) = '@K2' AND screen-group1 = 'BL1'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
运行效果: