abap选择屏幕(1)
TABLES MARC."后面需要用到表的话,需要在这边先引入
PARAMETERS P_WERKS TYPE MARC-WERKS ."单选参数
*PARAMETERS p_werks type marc-werks DEFAULT '100'."设置默认值
*PARAMETERS p_werks type marc-werks NO-DISPLAY."不显示在屏幕上
*PARAMETERS p_werks type marc-werks OBLIGATORY."设置必须输入
PARAMETERS P_CHE AS CHECKBOX."设置成复选框形式
PARAMETERS P_GRO01 RADIOBUTTON GROUP G1."设置成复选框
PARAMETERS P_GRO02 RADIOBUTTON GROUP G1."设置成复选框
SELECT-OPTIONS P_MATNR FOR MARC-MATNR.
*SELECT-OPTIONS P_MATNR FOR MARC-MATNR DEFAULT ''."设置默认值.
*SELECT-OPTIONS P_MATNR FOR MARC-MATNR OBLIGATORY. "设置必填.
*SELECT-OPTIONS P_MATNR FOR MARC-MATNR no-EXTENSION."隐藏多值输入按钮
*SELECT-OPTIONS P_MATNR FOR MARC-MATNR no INTERVALS."隐藏HIGH输入部分
*SELECT-OPTIONS P_MATNR FOR MARC-MATNR no-DISPLAY."不显示在页面上
"设置下拉框
PARAMETERS: p_type(100) type c as LISTBOX VISIBLE LENGTH 20 OBLIGATORY.
"设置按钮是否显示:
PARAMETERS:
P1 TYPE CHAR01 RADIOBUTTON GROUP G1 MODIF ID INT ,
P2 TYPE CHAR01 RADIOBUTTON GROUP G1 MODIF ID INT,
P3 TYPE CHAR01 RADIOBUTTON GROUP G1 MODIF ID DIS,
P4 TYPE CHAR01 RADIOBUTTON GROUP G1 MODIF ID DIS.
"初始化
INITIALIZATION.
P_WERKS = '8888'.
"AT SELECTION-SCREEN:在输入完条件值后,点执行后时去执行
AT SELECTION-SCREEN.
IF P_MATNR IS NOT INITIAL.
SELECT SINGLE * FROM MARC WHERE MATNR IN P_MATNR.
IF SY-SUBRC <> 0.
MESSAGE '输入的物料号有误!!!' TYPE 'E'.
ENDIF.
ENDIF.
"AT SELECTION-SCREEN OUTPUT:程序执行前会先去执行这部分的内容
AT SELECTION-SCREEN OUTPUT.
IF P_MATNR IS NOT INITIAL.
MESSAGE P_MATNR TYPE 'S'.
ENDIF.
"在AT SELECTION-SCREEN OUTPUT.这边进行下拉框初始值的设置
PERFORM frm_list.
"在AT SELECTION-SCREEN OUTPUT.这边进行设置是否可以输入
PERFORM frm_input.
""在AT SELECTION-SCREEN OUTPUT.这边设置控件是否显示
PERFORM frm_display.
FORM frm_list.
DATA: VID TYPE VRM_ID,
LIST TYPE VRM_VALUES,
VALUE LIKE LINE OF LIST.
REFRESH LIST.
VALUE-KEY = '01'.
VALUE-TEXT = '你的名字'.
APPEND VALUE TO LIST.
VALUE-KEY = '02'.
VALUE-TEXT = '天气之子'.
APPEND VALUE TO LIST.
VALUE-KEY = '03'.
VALUE-TEXT = '铃芽之旅'.
APPEND VALUE TO LIST.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
ID = 'p_type'
VALUES = LIST.
ENDFORM.
FORM frm_input.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_WERKS' . "缺省值
SCREEN-INPUT = '0'. "0 "禁止输入
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDFORM.
FORM frm_display.
LOOP AT SCREEN.
CASE SCREEN-GROUP1 .
WHEN 'INT'.
SCREEN-ACTIVE = 1.
WHEN 'DIS' .
SCREEN-ACTIVE = 0.
WHEN OTHERS. .
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDFORM.