ABAP_ALV01-选择屏

本文详细介绍了ABAP中的ALV选择屏,包括ALV报表的基本组成和实现方式。重点讨论了选择屏的代码格式、事件终止,以及如何通过代码示例进行美化,如分块、默认值、必填项设置等。同时,文章还提到了在页面布局中遇到的问题及解决方案,并给出了SELECTION-SCREEN的多种用法。

ABAP_ALV01-选择屏

1、ALV介绍

1.1 ALV:SAP List View 缩写ALV——SAP列表视图

1.2 ALV报表实现方式:面向过程实现(大部分用这个)、面向对象实现(即OOALV)

1.3 ALV报表组成部分:选择屏、工具栏、列表

​ 选择屏:让用户输入参数

​ 工具栏:不管是哪个实现方式(面向过程 or 面向对象)出来都会有默认的工具栏,要增减的需额外配置

​ 列表:展现数据的地方

2、选择屏

屏幕元素:单输入、多输入、单选、复选、文件选择、格式化(选择元素格式化、界面格式化)

2.1 ALV代码格式

REPORT  ZCSDN_LION_ALV01.

LOAD-OF-PROGRAM."程序运行开始

INITIALIZATION."初始化

AT SELECTION-SCREEN OUTPUT."调用屏幕时,假如没有屏幕时这里不会执行

AT SELECTION-SCREEN."屏幕输入后点执行后,假如没有屏幕时这里不会执行

START-OF-SELECTION."选择开始事件,点击运行后执行

END-OF-SELECTION."选择结束事件,一般用于输出

2.2 选择屏事件终止

return、stop、exit、check

注意:不能在LOAD-OF-PROGRAM.中使用,否则程序代码不会报错,但运行时会崩溃

3 代码示例

REPORT  ZCSDN_LION_ALV01.

*定义变量
*TABLES:ZLION_TEST."定义一个表格变量
DATA TAB1 TYPE ZLION_TEST.

*定义屏幕元素
*单输入
PARAMETERS: P_NAME LIKE ZLION_TEST-NAME."单输入框
*区间输入
SELECT-OPTIONS:S_AGE FOR TAB1-AGE.
*单选,一般是多个单选组成一组
PARAMETERS:C_1 RADIOBUTTON GROUP G1,
                             C_2 RADIOBUTTON GROUP G1,
                             C_3 RADIOBUTTON GROUP G2,
                             C_4 RADIOBUTTON GROUP G2 DEFAULT 'X'.
*checkbox
PARAMETERS:CH1 TYPE C AS CHECKBOX.


LOAD-OF-PROGRAM."程序运行开始

INITIALIZATION."初始化

AT SELECTION-SCREEN OUTPUT."调用屏幕时,假如没有屏幕时这里不会执行

AT SELECTION-SCREEN."屏幕输入后点执行后,假如没有屏幕时这里不会执行

START-OF-SELECTION."选择开始事件,点击运行后执行

END-OF-SELECTION."选择结束事件,一般用于输出

在这里插入图片描述

上面截图字段文字描述设置—注意SAP登录中英文

1、激活上面代码

2、转到-内文元素-选择内文

在这里插入图片描述

3、输入文本或参考数据元素,最后激活

在这里插入图片描述

4、回来再运行,效果就出来了

在这里插入图片描述

5、上面的文字区分中英文的,如用英文则用英文登录后进到SE38,跟上面同样的设置即可

登录语言=EN(ZH是简体,ZF是繁体,EN是英文)

在这里插入图片描述
在这里插入图片描述

然后一直默认

在这里插入图片描述
在这里插入图片描述

更改后保存激活,页面就会按各语言Text内容显示

在这里插入图片描述

4、美化页面

4.1、分块

用以下代码包含页面元素

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN end of BLOCK b1.

text-001:在转到-内文元素-内文符号中维护

在这里插入图片描述

优化后代码如下

REPORT  ZCSDN_LION_ALV01.

*定义变量
*TABLES:ZLION_TEST."定义一个表格变量
DATA TAB1 TYPE ZLION_TEST.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
*定义屏幕元素
*单输入
PARAMETERS: P_NAME LIKE ZLION_TEST-NAME."单输入框
*区间输入
SELECT-OPTIONS:S_AGE FOR TAB1-AGE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-TTT.
*单选,一般是多个单选组成一组
PARAMETERS:C_1 RADIOBUTTON GROUP G1,
                             C_2 RADIOBUTTON GROUP G1,
                             C_3 RADIOBUTTON GROUP G2,
                             C_4 RADIOBUTTON GROUP G2 DEFAULT 'X'.
*checkbox
PARAMETERS:CH1 TYPE C AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B2.


LOAD-OF-PROGRAM."程序运行开始

INITIALIZATION."初始化

AT SELECTION-SCREEN OUTPUT."调用屏幕时,假如没有屏幕时这里不会执行

AT SELECTION-SCREEN."屏幕输入后点执行后,假如没有屏幕时这里不会执行

START-OF-SELECTION."选择开始事件,点击运行后执行

END-OF-SELECTION."选择结束事件,一般用于输出

在这里插入图片描述

4.2 默认值:default

4.3 必填项:OBLIGATORY

4.4 加空白行

SELECTION-SCREEN:SKIP 1."要加N空白行就SKIP N

4.5 强制同一行

如一组单选同一行

*单选,一般是多个单选组成一组
SELECTION-SCREEN BEGIN OF LINE.
单选1
单选2
SELECTION-SCREEN end of LINE.

在这里插入图片描述

4.6 优化4.5

发现4.5同一行后,有如下问题

4.61、靠太近了

解决如下:中间加空格

*单选,一般是多个单选组成一组
SELECTION-SCREEN BEGIN OF LINE.
单选1
SELECTION-SCREEN POSITION 10."表示是10个空格符
单选2
SELECTION-SCREEN end of LINE.

在这里插入图片描述

4.62、单选没有文字描述

即使在内文元素中维护了文本还是显示空白

解决如下:强制显示问题

*单选,一般是多个单选组成一组
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:C_1 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT 2(5) TEXT-RI1."2(5):文本在本行第2个位置开始展示,文本占用本行5个位置
SELECTION-SCREEN POSITION 10.                               "表示是10个空格符
PARAMETERS:C_2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF LINE.

在这里插入图片描述

异常

4.621、单选框和文字描述重叠了

调整文字描述的初始显示位置

SELECTION-SCREEN COMMENT 3(5) TEXT-RI1."3(5):文本在本行第3个位置开始展示,文本占用本行5个位置

在这里插入图片描述

4.622、把上面3(5)调成3(8),检查代码没错误,运行会崩溃

原因是元素位置冲突:

SELECTION-SCREEN COMMENT 3(8) TEXT-RI1.
SELECTION-SCREEN POSITION 10.   

TEXT-RI1:3(8)在第3个位置开始,占用位置8,显示完后位置已到11,所以和position 10位置重复了

position xx 至少 > 3(8),即3+8=11,xx必须>11

*单选,一般是多个单选组成一组
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:C_1 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT 3(8) TEXT-RI1."3(5):文本在本行第3个位置开始展示,文本占用本行5个位置
SELECTION-SCREEN POSITION 12.                               "表示是10个空格符
PARAMETERS:C_2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT 14(8) TEXT-RI2."
SELECTION-SCREEN END OF LINE.

在这里插入图片描述

5、以上完整代码

*定义变量
*TABLES:ZLION_TEST."定义一个表格变量
DATA TAB1 TYPE ZLION_TEST.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
*定义屏幕元素
*单输入
PARAMETERS: P_NAME LIKE ZLION_TEST-NAME DEFAULT '张三'."单输入框
SELECTION-SCREEN ULINE /1(50).
*区间输入
SELECT-OPTIONS:S_AGE FOR TAB1-AGE OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-TTT.
*单选,一般是多个单选组成一组
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:C_1 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT 3(5) TEXT-RI1."3(5):文本在本行第3个位置开始展示,文本占用本行5个位置
SELECTION-SCREEN POSITION 11.                               "表示是10个空格符
PARAMETERS:C_2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT 13(8) TEXT-RI2."
SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN:SKIP 1."空白行


PARAMETERS:C_3 RADIOBUTTON GROUP G2,
                         C_4 RADIOBUTTON GROUP G2 DEFAULT 'X'.
*checkbox
PARAMETERS:CH1 TYPE C AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B2.


LOAD-OF-PROGRAM."程序运行开始

INITIALIZATION."初始化

AT SELECTION-SCREEN OUTPUT."调用屏幕时,假如没有屏幕时这里不会执行

AT SELECTION-SCREEN."屏幕输入后点执行后,假如没有屏幕时这里不会执行

START-OF-SELECTION."选择开始事件,点击运行后执行
  WRITE '成功'.

END-OF-SELECTION."选择结束事件,一般用于输出

6、SELECTION-SCREEN用法

6.1、同一行

让屏幕元素位于同一行。

SELECTION-SCREEN BEGIN OF LINE.
屏幕元素1
屏幕元素2
SELECTION-SCREEN END OF LINE.
6.2、屏幕元素之间用空格隔开

这条语句的作用是将该语句后面的第一个Screen element定位在这一行的XX位置,最大值为79。值得注意的是,如果同一行中多个Position语句因为空间不够或Element所占空间重叠,将导致Screen创建时的错误(如上面4.622),无法激活。此时并无具体的提示。只能仔细观察代码。

SELECTION-SCREEN POSITION n."一个空格n=1,两个空格n=2...
6.3、在指定位置显示文本

这条语句的作用是在当前行的指定列位置处输出一段文本,For field则表示文本与某个element 关联,当此语句使用时,可以不必设定屏幕的Text element,系统会自动关联。XX表示位置,Y表示长度,注意,如果长度不足,超常的文字将被截掉。此处似乎还有一个小BUG,当Y小于5时,输出的文字字体会变大一号。不知道为什么。

SELECTION-SCREEN COMMENT XX(Y) TEXT-XXX FOR FIELD XXX.

SELECTION-SCREEN COMMENT /10(30) comm1.
INITIALIZATION.
comm1 ='Auswahlknopfgruppe 1'.
6.4、跳过n空白行.

类似于用WRITE写Report时的SKIP n.也可以跳过多行。

SELECTION-SCREEN SKIP n.
6.5、屏幕上画横线
SELECTION-SCREEN ULINE /1(50).
6.6、内存记忆 留有上次输入过的记录
parameters test(16) type c memory id rid.
6.7、检查输入值 如果不在表中 不用做代码检查了
PARAMETERS p_carr TYPE spfli-carrid OBLIGATORY VALUE CHECK.
6.8 复选框
PARAMETERS: a AS CHECKBOX,
b AS CHECKBOX DEFAULT 'X'.
6.9 单选框
PARAMETERS: r1 RADIOBUTTON GROUP rad1,
r2 RADIOBUTTON GROUP rad1 DEFAULT 'X',
r3 RADIOBUTTON GROUP rad1,

s1 RADIOBUTTON GROUP rad2,
s2 RADIOBUTTON GROUP rad2,
s3 RADIOBUTTON GROUP rad2 DEFAULT 'X'.
6.10 单输入
PARAMETERS: P_NAME LIKE ZLION_TEST-NAME DEFAULT '张三'.
6.11 区间输入/必填

SELECT-OPTIONS:区间输入

OBLIGATORY:必填

SELECT-OPTIONS:S_AGE FOR TAB1-AGE OBLIGATORY.
6.12 modif id(暂缺)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值