转载自大神 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 Basis, SAP ABAP, SAP ABAP 开发系列 \ ABAP Event, Parameters, SAP, SAP ABAP, Select-Options, Selection Screen

详解ABAP Selection Screens相关推荐

  1. 【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 ...

  2. Feature Selection详解(附带Relief、Relief-F、LVM详解)(一)

    Feature Selection详解 第二十五次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习.这一篇主要是针对特征选择问题的几种常见方法进行阐述,并介绍其 ...

  3. SpringBoot第十篇:thymeleaf详解

    作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10931435.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言   Sprin ...

  4. atitit.mp4 视频文件多媒体格式结构详解

    atitit.mp4 视频文件多媒体格式结构详解 1. 一.基本概念1 2. MP4文件概述2 3. mp4是由一个个"box"组成的,2 4. 典型简化mp43 5. Fragm ...

  5. 数据结构(C语言版) 第 八 章 排序 知识梳理 + 习题详解

    目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...

  6. 使用方差阈值过滤(VarianceThreshold)进行特征选择、删除方差低于某一阈值的特征、详解及实战

    使用方差阈值过滤(VarianceThreshold)进行特征选择.删除方差低于某一阈值的特征.详解及实战 方差阈值(VarianceThreshold)法是一种过滤特征选择法. 我们有一组数值特性, ...

  7. Android笔记——四大组件详解与总结

    android四大组件分别为activity.service.content provider.broadcast receiver. -------------------------------- ...

  8. Sublime Text 2/3 配置文件详解

    Sublime Text 3 是一款具有代码高亮.语法提示.自动完成且反应快速的编辑器软件,不仅具有华丽的界面,还支持插件扩展机制,用她来写代码,绝对是一种享受.收藏一份 Sublime Text 2 ...

  9. 基础排序算法详解与优化

    文章图片存储在GitHub,网速不佳的朋友,请看<基础排序算法详解与优化> 或者 来我的技术小站 godbmw.com 1. 谈谈基础排序 常见的基础排序有选择排序.冒泡排序和插入排序.众 ...

最新文章

  1. python执行linux命令返回结果_Python中调用Linux命令并获取返回值
  2. AMD真龙一族网络社区成立
  3. linux 打造man中文帮助手册图解(man-pages-zh帮助页)
  4. 关于类DOTA游戏多样化技能系统的设计思考
  5. 基础知识(四)Dijkstra算法
  6. JDBC模板对象是多例的
  7. 【Codeforces Round #438 C】 Qualification Rounds
  8. PYTHON之计算机语言基础知识 —— 字符编码
  9. python-excel 批量新建excel工作表
  10. 微信小程序商城完整代码
  11. 人工智能的发展历史概览
  12. 基于银河麒麟 V10 系统安装和卸载 DM8 数据库
  13. Mysql自增主键用完了怎么办
  14. CSS 实现文字渐变色
  15. html中div排版布局
  16. android开发照相机啊,Android照相机开发详解(一)
  17. 黑白棋,又叫翻转棋(Reversi)、苹果棋或奥赛罗棋(Othello)。棋盘共有8行8列共64格。开局时,棋盘正中央的4格先置放黑白相隔的4枚棋子。双方轮流落子,只要落子和棋盘上任一枚己方的棋子
  18. 百度换肤JavaScript功能
  19. JSP爱心宠物诊所系统设计与实现
  20. 数仓开发之DWD层(二)

热门文章

  1. js 比较两个字符串形式的时间的大小
  2. 用户登录注册流程图-所有项目论文通用计算机毕业设计
  3. 二叉搜索树:红黑树的原理和实现
  4. 【文献翻译】用于改进脑电图癫痫发作分析的自监督图神经网络 - (DCRNN / SSL)
  5. linux的nslookup命令,Linux nslookup命令
  6. linux中生成内核模块时部分函数undefined的应对方法
  7. 苹果iOS 5限制应用本地存储问题
  8. 面经02-深信服面试
  9. java中的example_mybatis中关于example类详解
  10. 为王菲写的第二首歌《山河》