ABAP_ALV01-选择屏

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(暂缺)
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
### 回答1: 使用 ABAP 语言删除 GT_ALV 内的某一条数据 LS_ALV 可以使用以下代码: LOOP AT GT_ALV INTO LS_ALV. IF LS_ALV-FIELD1 = 'VALUE1' AND LS_ALV-FIELD2 = 'VALUE2'. DELETE GT_ALV WHERE CURRENT GT_ALV. ENDIF. ENDLOOP. 其中,IF语句用于判断要删除的行的条件,并在满足条件时使用DELETE语句将当前行从GT_ALV中删除。 还可以使用DELETE ADJACENT DUPLICATES FROM GT_ALV 与 DELETE GT_ALV 删除重复的数据. 注意:在删除后你需要重新绑定GT_ALV数据到ALV组件里,否则不会更新界面。 ### 回答2: 在ABAP语言中,我们可以使用DELETE语句来删除内表GT_ALV中的某一条数据LS_ALV。 首先,我们需要确定要删除的数据在内表中的位置。可以通过LOOP语句遍历内表,使用READ TABLE语句来判断每一个数据项是否与要删除的数据项匹配。 以下是一个示例代码: DATA: lv_index TYPE sy-tabix. LOOP AT gt_alv INTO ls_alv. IF ls_alv = ls_alv_to_delete. "假设ls_alv_to_delete是要删除的数据项 lv_index = sy-tabix. "记录要删除的数据位置 EXIT. "退出循环 ENDIF. ENDLOOP. IF lv_index > 0. "如果找到了要删除的数据 DELETE gt_alv INDEX lv_index. "使用DELETE语句删除指定位置的数据 WRITE: '成功删除数据'. "输出成功删除数据的消息 ELSE. WRITE: '未找到要删除的数据'. "输出未找到要删除的数据的消息 ENDIF. 通过以上代码,我们先遍历内表GT_ALV,判断每一个数据项是否与要删除的数据项(LS_ALV_TO_DELETE)匹配。当找到匹配项后,将它的位置记录在LV_INDEX中,然后使用DELETE语句删除该位置的数据。最后,根据删除的结果输出相应的消息。 请注意,在实际应用中,可能需要使用更加具体的条件来匹配数据项,而不仅仅是相等判断。 ### 回答3: 在ABAP语言中,要删除内表GT_ALV中的某一条数据LS_ALV,可以按照以下步骤进行操作: 1. 首先,声明一个临时的工作区间,用于储存要删除的数据,例如:DATA: ls_temp TYPE ty_alv. 2. 使用LOOP语句遍历内表GT_ALV,通过条件判断找到要删除的数据行,例如:LOOP AT gt_alv INTO ls_alv WHERE (condition). 3. 将要删除的数据行赋值给临时工作区间,例如:ls_temp = ls_alv. 4. 跳出循环,使用DELETE语句将临时工作区间的数据从内表GT_ALV中删除,例如:DELETE gt_alv WHERE (condition). 5. 如果需要,可以将删除的数据备份到另一个内表或变量中,以便进一步处理,例如:APPEND ls_temp TO gt_deleted. 以下是一个具体的代码示例: ``` DATA: gt_alv TYPE TABLE OF ty_alv, " 声明内表 ls_alv TYPE ty_alv, ls_temp TYPE ty_alv, gt_deleted TYPE TABLE OF ty_alv. " 声明用于备份的内表 LOOP AT gt_alv INTO ls_alv WHERE (condition). " 遍历内表 查找要删除的数据行 ls_temp = ls_alv. " 将要删除的数据行赋值给临时工作区间 EXIT. " 跳出循环 ENDLOOP. DELETE gt_alv WHERE (condition). " 从内表中删除临时工作区间的数据 IF sy-subrc = 0. " 判断删除是否成功 APPEND ls_temp TO gt_deleted. " 将删除的数据备份到另一个内表中 ELSE. " 处理删除失败的情况 ENDIF. ``` 以上代码示例演示了如何使用ABAP语言描述删除内表GT_ALV中的某一条数据LS_ALV,并将删除的数据备份到另一个内表中。请注意,在实际开发中,你需要根据自己的实际需求和数据结构,对代码进行相应的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值