详解ABAP Selection Screens
转载自大神 jevinxu:详解ABAP Selection Screens:
http://www.sapjx.com/abap-selection-screen.html
ABAP Selection Screens
用户与SAP数据之间的通信交互是通过对屏幕的操作来实现的,如:数据报表,业务功能操作等,而SAP的屏幕开发一般分为两种:
1. 通过SAP ABAP语法创建屏幕元素,称之为Selection Screen(选择屏幕);
2. 通过SAP的屏幕编辑器开发,称之为Dialog(对话框屏幕),通过屏幕编辑器可以实现数据的多种展现模式。
本文主要 讲述的是第一种屏幕开发的内容(选择屏幕):
1. 屏幕基本元素
2. 屏幕输入值控制
3. 屏幕事件(ABAP Event)
4. 屏幕对象的F1/F4功能
5. SAP屏幕框架
1.屏幕基本元素
选择屏幕的开发有两种屏幕元素来创建数据输入域,分别是:PARAMETERS 和 SELECT-OPTIONS。
两者区别在于,前者只能通过单值(单个数据)输入,后者通过内表形式实现多值(一行或多行数据)输入。
1.1 PARAMETERS 对象及其属性
通过上面的预览图,我们看下ABAP程序:
1
2
3
4
5
6
|
PARAMETERS : pa_oarr LIKE sflight-carrid,
pa_name AS CHECKBOX DEFAULT 'X' ,
pa_curr AS CHECKBOX DEFAULT 'X' ,
pa_lim1 RADIOBUTTON GROUP lim,
pa_lim2 RADIOBUTTON GROUP lim,
pa_lim3 RADIOBUTTON GROUP lim.
|
PARAMETERS 对象语法:
- <f> 是用户自定义对象名,即程序中的 pa_oarr, pa_name 等。
- TYPE|LIKE 是定义对象名的类型
- DECIMALS 用于数量型对象,保留多少位小数点
- MEMROY ID SAP内存ID,可以将对象参数临时保存在内存中,通过<pid>存储及读取,长度不能超过3个字符
- OBLIGATORY 必输项,该对象在屏幕上指定必输
- DEFAULT 默认值
- AS CHECKBOX 将对象设置成复选框方式交互,如上面截图中的 PA_NAME对象
- RADIOBUTTON GROUP 将对象设置成单选框交互,由于单选框只能集合中的一个,故需要指定一个GROUP 限制其集合,
如上面截图中的PA_LIM1、PA_LIM2等
以上参数,都可以直接在 PARAMETERS 上配置。
1.2 SELECT-OPTIONS 对象及其属性
通过上面的预览图,我们看下简单的ABAP程序:
1
2
3
4
5
|
REPORT zsapjx_03.
TABLES : sflight.
SELECT - OPTIONS : so_carr FOR sflight-carrid DEFAULT 'AA' ,
so_fldt FOR sflight-fldate.
|
可以看到界面上一行会出现两个文本框(输入域),这里我们称之为“上限”和“下限”。
例如,从 1 到9的区间,从A到Z的区间等范围。
SELECT-OPTIONS对象语法:
- <seltab> 创建自定义对象名
- FOR 参考对象,一般用系统本身的数据表结构对象
- DEFAULT 默认值
- MEMORY ID 内存ID ,与PARAMETERS用法一致
- LOWER CASE 大写,输入的内容必须大写
- OBLIGATORY 必输项,与PARAMETERS用法一致,只是SELECT-OPTIONS 只限于LOW字段值(见下面第2节)
- NO-EXTENSION 限制只能输入一行数据
- NO INTERVALS 限制只能输入一个单元(LOW字段)
以上参数,都可以直接在 SELECT-OPTIONS上配置。例如:
1
2
|
SELECT - OPTIONS : so_carr FOR sflight-carrid DEFAULT 'AA' ,
so_fldt FOR sflight-fldate OBLIGATORY NO INTERVALS NO - EXTENSION .
|
效果:
这时,就会在输入域多出了一个提示必输的√,下限输入域、多值都被隐藏了。
提示: 在编程过程中,ABAP 编辑器会给出相关的参数智能提示:
2. 屏幕输入值控制
双击屏幕某字段时,会弹出维护选择项的界面:
点击多值输入按钮时,会弹出多值输入界面:
(单一值标签界面)
(多值标签界面)
这些都是为了筛选数据,或者输入多值区间的操作。
前面我们提到 Select-options 跟 Parameters 的区别在于 Select-options 是用内表形式存储输入值的。
Select-options内表中的结构如下表所示:
Sign栏位,表示输入值的类型, I(Include)或者 E(Exclude) ,包括与不包括(即:排除);
在维护选择项时,可以通过 按钮来筛选操作;
Option栏位,表示输入值的关系:
- EQ(Equal) – 等于
- NE(Not Equal) – 不等于
- LT(Little Than) – 小于
- LE(Little and Equal) – 小于等于
- GT(Great Than) – 大于
- GE(Greater and Equal ) – 大于等于
- BT(Between) – 上下限之间
- NB(Not Between) – 不在上下限之间
在选择维护项中,可以通过选择操作符筛选条件:
LOW 栏位,输入值上限
HIGH栏位,输入值下限
除了可以通过屏幕操作来筛选条件之外,程序上也可以控制 Select-options 的输入值,
可以在初始化事件中添加相关程序:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
|
REPORT zsapjx_03.
TABLES : sflight.
SELECT - OPTIONS : so_carr FOR sflight-carrid,
so_fldt FOR sflight-fldate.
*--------------------------------------------------------------------*
* 初始化
*--------------------------------------------------------------------*
INITIALIZATION .
so_carr-sign = 'I' .
so_carr-option = 'EQ' .
so_carr-low = 'AA' .
so_carr-high = 'ZZ' .
APPEND so_carr TO so_carr.
CLEAR so_carr.
|
执行效果:
3. 屏幕事件(ABAP Event)
SAP屏幕事件也叫ABAP事件,R/3系统的运行机制中,SAP程序的执行都是通过事件来驱动的。
SAP程序的事件流:
再来看下程序中,事件的执行:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
REPORT zsapjx_03.
TABLES : mara.
SELECT - OPTIONS : so_matnr FOR mara-matnr.
PARAMETERS : pa_matnr type mara-matnr.
DATA : gv_init TYPE string,
gv_output TYPE string,
gv_start TYPE string,
gv_end TYPE string.
INITIALIZATION .
gv_init = '01.INITIALIZATION 事件' .
AT SELECTION - SCREEN OUTPUT .
gv_output = '02.AT SELECTION-SCREEN OUTPUT 事件' .
START - OF - SELECTION .
gv_start = '03.START-OF-SELECTION 事件' .
END - OF - SELECTION .
gv_end = '04.END-OF-SELECTION 事件' .
WRITE : /.
WRITE : / gv_init.
WRITE : / gv_output.
WRITE : / gv_start.
WRITE : / gv_end.
WRITE : /.
|
运行结果:
从上面的事件流及程序中看到,SAP的事件包括:
3.1 INITIALIZATION 事件
该事件在屏幕未显示之前执行,可对程序设置值及屏幕元素进行初始化设置
3.2 AT SELECTION-SCREEN OUTPUT 事件
屏幕元素声明完成后执行,并会在程序执行之前优先检查该事件下的所有代码。
通常用于对输入值校验数据,如库存是否充足,操作类型是否允许等。
3.3 AT SELECTION-SCREEN ON … 事件
可在程序执行之前指定输入值的校验,与AT SELECTION-SCREEN OUTPUT事件类似;
只是OUTPUT事件检查屏幕输入值的校验,而ON 事件则是检查指定的输入值。
执行该事件时,其它输入域的输入状态会被锁定。
3.3.1 AT SELECTION-SCREEN ON VALUE REQUEST FOR {para|selcrit-low|selcrit-high} (F4)
指定输入域F4搜索帮助的事件,用于实现屏幕输入域的自定义F4搜索帮助。
3.3.2 AT SELECTION-SCREEN ON HELP REQUEST FOR {para|selcrit-low|selcrit-high} (F1)
指定输入域F1帮助的事件,用于实现屏幕输入域的自定义F1帮助。
3.3.3 AT SELECTION-SCREEN ON {para|selcrit}
指定输入域输入值时触发,可以是Parameters对象,也可以是Select-options对象。
3.3.4 AT SELECTION-SCREEN ON BLOCK (block)
该事件应用于设定框架的屏幕中。
3.3.5 AT SELECTION-SCREEN ON RADIOBUTTON GROUP (radi)
该事件应用于单选框按钮组中。
3.3.6 AT SELECTION-SCREEN ON END OF (selcrit)
该事件只应用于Select-options对象,Parameters对象不起作用。在输入域进行多行数据输入时触发。
3.4 AT SELECTION-SCREEN 事件
与前面的 AT SELECTION-SCREEN OUTPUT 和AT SELECTION-SCREEN ON 事件类似,
区别在于执行顺序优先级低于前两者。
3.5 START-OF-SELECTION 事件
开始执行,该事件在执行程序时触发:
3.6 END-OF-SELECTION 事件
该事件应用于所有数据处理完成后,即在START-OF-SELECTION执行完成后,但输出屏幕还未显示前。
4. 屏幕对象的 F1/F4 功能
4.1 屏幕对象的F1功能
每个对象都能查看相应的系统帮助文档,将光标聚焦在对象上,然后按F1键,系统会弹出相应的标准系统帮助文档。
如,查看移动类型的F1帮助:
而对于用户自定义的对象,则需要我们去添加相应的说明文档。
4.2 屏幕对象的F4功能
F4功能叫Search Help(搜索帮助),便于我们在输入值时从数据字典中筛选相关数据,起到智能提示的效果。
例如,在移动类型时,点击该输入域右边的小方框:
会弹出相应的数据供用户选择输入:
而用户自定义的对象,也需要我们去添加相应的Search Help 对象,相关内容会在ABAP数据字典章节中说明。
5. SAP屏幕框架
屏幕框架主要是屏幕框线的设计,也就是BLOCK的应用。
BLOCK的语法:
例如,下面的程序:
01
02
03
04
05
06
07
08
09
10
11
12
13
|
SELECTION - SCREEN BEGIN OF BLOCK carr WITH FRAME TITLE text-001.
SELECT - OPTIONS : so_carr FOR sflight-carrid,
so_fldt FOR sflight-fldate.
SELECTION - SCREEN END OF BLOCK carr.
SELECTION - SCREEN BEGIN OF BLOCK limit WITH FRAME TITLE text-002.
PARAMETERS : pa_oarr LIKE sflight-carrid,
pa_name AS CHECKBOX DEFAULT 'X' ,
pa_curr AS CHECKBOX DEFAULT 'X' ,
pa_lim1 RADIOBUTTON GROUP lim,
pa_lim2 RADIOBUTTON GROUP lim,
pa_lim3 RADIOBUTTON GROUP lim.
SELECTION - SCREEN END OF BLOCK limit.
|
执行的效果:
屏幕上多出了框线,这是SAP屏幕框架的效果,不仅可以保证屏幕设计的美观效果,
还可以提供诸如按钮、页签(Tab)等功能组件。
详解ABAP Selection Screens相关推荐
- 【SAP Abap】BOM多级展开函数 CS_BOM_EXPL_MAT_V2 使用详解
SAP ABAP BOM多级展开函数 CS_BOM_EXPL_MAT_V2 使用详解 1.函数入参说明 2.函数出参说明 1.函数入参说明 CALL FUNCTION 'CS_BOM_EXPL_MAT ...
- Feature Selection详解(附带Relief、Relief-F、LVM详解)(一)
Feature Selection详解 第二十五次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习.这一篇主要是针对特征选择问题的几种常见方法进行阐述,并介绍其 ...
- SpringBoot第十篇:thymeleaf详解
作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10931435.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 Sprin ...
- atitit.mp4 视频文件多媒体格式结构详解
atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个"box"组成的,2 4. 典型简化mp43 5. Fragm ...
- 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解
目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...
- 使用方差阈值过滤(VarianceThreshold)进行特征选择、删除方差低于某一阈值的特征、详解及实战
使用方差阈值过滤(VarianceThreshold)进行特征选择.删除方差低于某一阈值的特征.详解及实战 方差阈值(VarianceThreshold)法是一种过滤特征选择法. 我们有一组数值特性, ...
- Android笔记——四大组件详解与总结
android四大组件分别为activity.service.content provider.broadcast receiver. -------------------------------- ...
- Sublime Text 2/3 配置文件详解
Sublime Text 3 是一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.收藏一份 Sublime Text 2 ...
- 基础排序算法详解与优化
文章图片存储在GitHub,网速不佳的朋友,请看<基础排序算法详解与优化> 或者 来我的技术小站 godbmw.com 1. 谈谈基础排序 常见的基础排序有选择排序.冒泡排序和插入排序.众 ...
最新文章
- python执行linux命令返回结果_Python中调用Linux命令并获取返回值
- AMD真龙一族网络社区成立
- linux 打造man中文帮助手册图解(man-pages-zh帮助页)
- 关于类DOTA游戏多样化技能系统的设计思考
- 基础知识(四)Dijkstra算法
- JDBC模板对象是多例的
- 【Codeforces Round #438 C】 Qualification Rounds
- PYTHON之计算机语言基础知识 —— 字符编码
- python-excel 批量新建excel工作表
- 微信小程序商城完整代码
- 人工智能的发展历史概览
- 基于银河麒麟 V10 系统安装和卸载 DM8 数据库
- Mysql自增主键用完了怎么办
- CSS 实现文字渐变色
- html中div排版布局
- android开发照相机啊,Android照相机开发详解(一)
- 黑白棋,又叫翻转棋(Reversi)、苹果棋或奥赛罗棋(Othello)。棋盘共有8行8列共64格。开局时,棋盘正中央的4格先置放黑白相隔的4枚棋子。双方轮流落子,只要落子和棋盘上任一枚己方的棋子
- 百度换肤JavaScript功能
- JSP爱心宠物诊所系统设计与实现
- 数仓开发之DWD层(二)