检查内表中行的存在性
当你不需要获取表行的内容,只是想知道是否存在匹配指定索引或键的行时,可以使用 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:


1246

被折叠的 条评论
为什么被折叠?



