動態增加選擇屏幕選項:
REPORT zpp_rp005 NO STANDARD PAGE HEADING
LINE-SIZE 280.
************************************************************************
* TABLES
************************************************************************
TABLES:
marc,mara,
mast, "BOM 鏈接物料
stko,sscrfields,
stpo,
makt. "物料描述
************************************************************************
* INTERNAL TABLES
************************************************************************
DATA:g_code TYPE sscrfields-ucomm, "FUNCTION CODE
action(3),
num TYPE i.
************************************************************************
* selection-screen
************************************************************************
SELECTION-SCREEN FUNCTION KEY 1."expand all blocks
SELECTION-SCREEN FUNCTION KEY 2. "collapse all blocks
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE t1.
PARAMETERS:p_werks LIKE mast-werks DEFAULT 'PS01'.
SELECT-OPTIONS:s_matnr FOR marc-matnr NO INTERVALS .
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE t2.
PARAMETERS:p_werks1 LIKE mast-werks DEFAULT 'PS01' MODIF ID m1.
SELECT-OPTIONS:s_matnr1 FOR marc-matnr NO INTERVALS MODIF ID m1.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE t3.
PARAMETERS:p_werks2 LIKE mast-werks DEFAULT 'PS01' MODIF ID m2.
SELECT-OPTIONS:s_matnr2 FOR marc-matnr NO INTERVALS MODIF ID m2.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE t4.
PARAMETERS:p_werks4 LIKE mast-werks DEFAULT 'PS01' MODIF ID m3.
SELECT-OPTIONS:s_matnr4 FOR marc-matnr NO INTERVALS MODIF ID m3.
SELECTION-SCREEN END OF BLOCK b4.
************************************************************************
* Initialization
************************************************************************
INITIALIZATION.
sscrfields-functxt_01 = '@17@'.
sscrfields-functxt_02 = '@18@'.
LOOP AT SCREEN.
IF screen-group1 = 'M1' OR screen-group1 = 'M2' OR screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
num = 0.
t1 = '選擇條件'.
t2 = '選擇條件'.
t3 = '選擇條件'.
t4 = '選擇條件'.
AT SELECTION-SCREEN.
CLEAR action.
g_code = sscrfields-ucomm.
CASE g_code.
WHEN 'FC01'.
action = 'ADD'.
num = num + 1.
IF num > 3.
num = 3.
ENDIF.
WHEN 'FC02'.
action = 'DEL'.
num = num - 1.
IF num < 0 .
num = 0.
ENDIF.
ENDCASE.
AT SELECTION-SCREEN OUTPUT.
IF action = 'ADD'.
LOOP AT SCREEN.
IF num = 1.
IF screen-group1 = 'M2' OR screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ELSEIF num = 2.
IF screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF action = 'DEL'.
LOOP AT SCREEN.
IF num = 0.
IF screen-group1 = 'M1' OR screen-group1 = 'M2' OR screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ELSEIF num = 1.
IF screen-group1 = 'M2' OR screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ELSEIF num = 2.
IF screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF num = 0.
IF screen-group1 = 'M1' OR screen-group1 = 'M2' OR screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ELSEIF num = 1.
IF screen-group1 = 'M2' OR screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ELSEIF num = 2.
IF screen-group1 = 'M3'.
screen-active = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
其他:
選擇屏幕摺疊按鈕:http://blog.chinaunix.net/space.php?uid=8527621&do=blog&id=2030102
選擇屏幕動態選擇子屏幕:http://blog.chinaunix.net/space.php?uid=8527621&do=blog&id=2029989
限制SELECT-OPTIONS的NO-EXTENSION和NO INTERVALS:http://blog.chinaunix.net/space.php?uid=8527621&do=blog&id=2029533