ABAP中line_index函数如何组合内表表达式多条件查询行索引
可行性结论
使用line_index匹配多字段查询内表行索引的需求完全可以实现。
报错原因
你之前的链式方括号写法不符合ABAP语法规则:
lt[ carrid = 'LH' ]的返回值是匹配单条件的单行结构体(工作区),不是内表对象- 后续追加
[ connid = '2407' ]属于对结构体执行内表读取操作,因此触发语法错误 - 报错原文
LT[ ] is not an internal table翻译为:
LT[ ] 不是内表
正确实现方法
ABAP 7.40及以上版本的内表读取表达式,原生支持在同一组方括号内写入多字段匹配条件,不同条件之间用逗号分隔即可,直接传入line_index就能得到同时满足所有字段条件的行索引,正确代码示例:
lv_index = line_index( lt[ carrid = 'LH' , connid = '2407' ] ).
注意事项
- 多条件匹配时,只要内表中存在同时满足所有字段等值条件的行,就会被命中
- 如果内表中有多行同时符合匹配条件,
line_index会返回第一行命中记录的索引 - 该写法支持同时拼接任意多个属于内表行结构的字段作为匹配条件,没有数量限制
内容的提问来源于stack exchange,提问作者Abapito
相关产品推荐
相关产品推荐

