SAP ABAP程式設計 ABAP選擇螢幕:根據使用者選擇動態顯示螢幕
阿新 • • 發佈:2019-02-05
在有些程式中我們發現,如果使用者選擇了多個選項中的其一(單選框),則螢幕的外觀將會有所調整。
這是怎麼實現呢?我們來看下面的例子。
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。
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。