SAP ABAP Selection Screen 选择屏幕看这一篇就够了(持续更新)
Selection Screen 选择屏幕
文章目录
- Selection Screen 选择屏幕
- BLOCK 块
- Radio button 单选框
- 豪横的横向单选框
- Check Box 复选框
- 文本框 - 一般不用 PARAMETERS
- 文本框 - 主要使用 SELECT-OPTIONS
- 动态显示选择屏幕
- Screen Icon 屏幕图标
- Drop Down List 下拉选项
BLOCK 块
Block 是在屏幕上划分一个区域,对屏幕进行分块便于对功能进行区分。
为了好看
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.SELECTION-SCREEN END OF BLOCK blk1.
WITH FRAME 就是显示整个区域的边框

TITLE TEXT-001 就是给整个区域命名。TEXT-001 可以在文本元素里给整个 BLOCK 添加描述

Radio button 单选框
单选框,用来做选择。
选择大于努力
PARAMETERS: p_xxxx RADIOBUTTON GROUP g1 DEFAULT 'X',p_xxxx RADIOBUTTON GROUP g1.

有的时候还要加上 USER-COMMAND 关键字用于获取用户的选择,以便动态更改屏幕
豪横的横向单选框
有时候为了好看,我们会把单选框做来横着
可以称之为豪横的单选框
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN POSITION 1.PARAMETERS p_xxx1 RADIOBUTTON GROUP g1 USER-COMMAND uc DEFAULT 'X'.SELECTION-SCREEN COMMENT 2(8) TEXT-002 FOR FIELD p_xxx1.SELECTION-SCREEN POSITION 14.PARAMETERS p_xxx2 RADIOBUTTON GROUP g1.SELECTION-SCREEN COMMENT 15(10) TEXT-003 FOR FIELD p_xxx2.SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK blk1.

Check Box 复选框
复选框
小孩子才做选择
我全都要
PARAMETERS p_xxxx AS CHECKBOX.

文本框 - 一般不用 PARAMETERS
PARAMETERS 已经在 单选框、多选框处大显身手了
那么在文本框这里我们就给他点休息时间
因为使用 SELECT-OPTIONS 来做输入框,相较于 PARAMETERS 可以说是
“人无我有,人有我优”
PARAMETERS: p_xxxx TYPE xxxx OBLIGATORY,p_xxxx TYPE xxxx OBLIGATORY DEFAULT, p_xxxx TYPE xxxx OBLIGATORY DEFAULT.
文本框 - 主要使用 SELECT-OPTIONS
有些人天生就是主角
没错 说的就是 SELECT-OPTIONS
SELECT-OPTIONS 可以输入单值、多值 、范围
还可以包含、排除等
再搭配上 OPEN-SQL 从数据库里查询值
只能说爱不释手
SELECT-OPTIONS: s_xxx FOR xxx, s_xxx FOR xxx DEFAULT xxx.
SELECT-OPTIONS: s_xxx1 FOR xxx NO INTERVALS NO-EXTENSION, " 和 PARAMETERES 一样s_xxx2 FOR xxx NO INTERVALS, " 可输入多值s_xxx3 FOR xxx. " 可输入多值、范围

动态显示选择屏幕
为了使选择屏幕的输入有针对性,有时我们会让它动起来
就是动态显示选择屏幕的内容
SELECT-OPTIONS: s_xxx1 FOR xxx NO INTERVALS NO-EXTENSION MEMORY ID s1 MODIF ID ty1, " 和 PARAMETERES 一样s_xxx2 FOR xxx NO INTERVALS MEMORY ID s2 MODIF ID ty2, " 可输入多值s_xxx3 FOR xxx MEMORY ID s3 MODIF ID ty3. " 可输入多值、范围PARAMETERS: p_xxx1 RADIOBUTTON GROUP g1 USER-COMMAND uc DEFAULT 'X',
p_xxx2 RADIOBUTTON GROUP g1,
p_xxx3 RADIOBUTTON GROUP g1.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN. " LOOP 很关键,就是全部循环来控制哪些显示 1 哪些隐藏 0
IF screen-group1 EQ 'TY1' AND p_xxx1 NE 'X'.
* screen-invisible = 1.screen-active = 0. " 0 隐藏,1 显示ENDIF.IF screen-group1 EQ 'TY2' AND p_xxx2 NE 'X'.
screen-active = 0.ENDIF.IF screen-group1 EQ 'TY3' AND p_xxx3 NE 'X'.
screen-active = 0.ENDIF.MODIFY SCREEN.
ENDLOOP.



以上的效果是选择屏幕会依据单选框的选择进行变化
这里有几点需要注意的
- PARAMETERS 单选框里 USER-COMMAND uc 是必需的
- SELECT-OPTIONS 输入框里 MODIF ID ty 是必需的
- 在 ==AT SELECTION-SCREEN OUTPUT ==事件里对屏幕进行逻辑处理
我们在 SELECT-OPTIONS 里还加入了 MEMORY ID xx
这是用来记录我们屏幕上输入的值
当我们再次执行程序时,它会自动带出我们上一次输入的值
这会减少用户的输入,是非常值得推荐的
Screen Icon 屏幕图标
在选择屏幕上我们除了可以ONLI POST 表单以外
我们还能做什么?
在很多时候,我们可能会需要从外部导入 EXCEL 等文件内容
为了确保内容的可读性,我们会设计一个 EXCEL 模板
那么用户怎么去下载这个模板呢
这个时候我们就可以在选择屏幕处增加一个下载按钮
就像下面这样
TABLES: sscrfields.SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE TEXT-001.PARAMETERS p_xxxx TYPE xxxx.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN FUNCTION KEY 1.INITIALIZATION.sscrfields-functxt_01 = 'Test Icon'.AT SELECTION-SCREEN.
IF sscrfields-ucomm EQ 'FC01'.MESSAGE 'Hello World!' TYPE 'S'.ENDIF.

Drop Down List 下拉选项
有的时候单选框占的位置太多了,不太好看
我们就可以用下拉框来限制用户的输入
TYPE-POOLS: vrm.DATA: gv_name TYPE vrm_id,gt_list TYPE vrm_values,gs_list LIKE LINE OF gt_list.PARAMETERS: p_type(10) AS LISTBOX VISIBLE LENGTH 10.AT SELECTION-SCREEN OUTPUT.gv_name = 'P_TYPE'.gs_list-key = '1'.gs_list-text = '失败'.APPEND gs_list TO gt_list.gs_list-key = '2'.gs_list-text = '成功'.APPEND gs_list TO gt_list.gs_list-key = '3'.gs_list-text = '全部'.APPEND gs_list TO gt_list.CALL FUNCTION 'VRM_SET_VALUES' EXPORTING id = gv_name values = gt_list.

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
