ABAP選擇螢幕:根據使用者選擇動態顯示螢幕(轉老宋)

weilish發表於2010-10-20
在有些程式中我們發現,如果使用者選擇了多個選項中的其一(單選框),則螢幕的外觀將會有所調整。
這是怎麼實現呢?我們來看下面的例子。
 
PARAMETERS: p1 TYPE c RADIOBUTTON GROUP g1 USER-COMMAND uc,
            p2 TYPE c RADIOBUTTON GROUP g1 DEFAULT 'X'.
PARAMETERS: p_werks TYPE werks MODIF ID ty1,
            p_matnr TYPE matnr MODIF ID ty2.
 
AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    CASE screen-group1.
      WHEN 'TY1'.
        IF p1 IS INITIAL.
          screen-active = '0'.
        ELSE.
          screen-active = '1'.
        ENDIF.
      WHEN 'TY2'.
        IF p2 IS INITIAL.
          screen-active = '0'.
        ELSE.
          screen-active = '1'.
        ENDIF.
    ENDCASE.
    MODIFY SCREEN.
  ENDLOOP.
 
AT SELECTION-SCREEN.
  CLEAR sy-ucomm.
 
關於程式的說明:
(1)該程式可以根據使用者選擇了P1或P2,決定顯示工廠還是物料號在螢幕上;
(2)這裡 USER-COMMAND uc是關鍵,它代表使用者點選 RADIOBUTTON GROUP g1上的任一選項時,都將觸發PAI,並且Function code為 'UC'。
    在CLEAR sy-ucomm.這裡打個斷點即可觀察sy-ucomm的值。
(3)MODIF ID 用於對螢幕元素進行分組,這在螢幕元素較多時更有用處,邏輯清晰。
    這裡的PBO(AT SELECTION-SCREEN OUTPUT)就是根據使用者的選擇,決定不同組的螢幕元素是隱藏或顯示。
(4)與Radio Button(單選框)相似,Check Box(核取方塊)和List Box(下拉框)也可以觸發PAI。不過普通的螢幕編輯框則不支援,必須藉助回車才可以觸發PAI。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16794144/viewspace-676385/,如需轉載,請註明出處,否則將追究法律責任。

相關文章