選擇屏幕技術

動態增加選擇屏幕選項:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章