[ABAP编程宝典]获取有关内表、表行、表类型的信息

检查内表中行的存在性

当你不需要获取表行的内容,只是想知道是否存在匹配指定索引或键的行时,可以使用 READ TABLE 语句和 TRANSPORTING NO FIELDS 附加项。该附加项表示不实际读取内容。如果搜索成功并且存在条目,系统字段 sy-subrc 将被设置为 0。
另一种较新的检查行存在性的方法是使用函数 line_exists()。该函数支持一个内表表达式作为参数。不过,表表达式不会设置系统字段。

通过键读取
READ TABLE it WITH KEY b = 2 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.
  " 行存在,执行相应的逻辑
ENDIF.
通过索引读取
READ TABLE it INDEX 1 TRANSPORTING NO FIELDS.

IF sy-subrc = 0.
  " 行存在,执行相应的逻辑
ENDIF.
使用函数 line_exists() 通过键检查
IF line_exists( it[ b = 2 ] ).
  " 行存在,执行相应的逻辑
ENDIF.
使用谓词函数 line_exists() 通过索引检查
IF line_exists( it[ 1 ] ).
  " 行存在,执行相应的逻辑
ENDIF.

代码示例

下面是一个完整的代码示例,展示了如何使用这两种方法检查内表中的行是否存在:

DATA: itab TYPE TABLE OF i WITH UNIQUE KEY table_line,
      wa TYPE i.

" 填充内表
itab = VALUE #( ( 1 ) ( 2 ) ( 3 ) ).

" 通过键读取
DATA: itab TYPE SORTED TABLE OF i WITH UNIQUE KEY table_line,
IF sy-subrc = 0.
  WRITE:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李威威wiwi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值