表表达式中的组合条件?



我正在使用line_index函数,并希望搜索两个值,不仅为carrid,而且为connid。这可能吗?如果是,以什么方式?

因为现在,这是有效的:

lv_index = line_index( lt[ carrid = 'LH' ] ).

但是像这样添加代码[ connid = '2407' ]之后:

lv_index = line_index( lt[ carrid = 'LH' ][ connid = '2407' ] ).

出现语法错误:

LT[]不是内部表

所有字段(条件)一个接一个地放在一个括号内:

lv_index = line_index( lt[ carrid = 'LH'
connid = '2407' ] ).

我想评论一下表表达式的链接。

因此,对应于OP示例的答案是,必须使用单个表表达式(itab[...])与所需的尽可能多的组件,而不是像(itab[...][...])那样使用表表达式链。

lt[ carrid = 'LH' ][ connid = '2407' ]永远不可能是有效的(因为connid = '2407'暗示LT的每一行本身都是一个内部表,但carrid = 'LH'是矛盾的,因为它意味着LT的每一行都是一个结构)。

但是链表表达式的其他语法也是有效的,例如(只要内部表被充分定义)

itab[ 1 ][ comp1 = 'A' ]
itab[ comp1 = 'A' ][ 1 ]
itab[ comp1 = 'A' ]-itabx[ compx = 42 ]

下面是一个你可以使用的例子:

TYPES: BEGIN OF ty_structure,
connid TYPE c LENGTH 4,
END OF ty_structure,
ty_table TYPE STANDARD TABLE OF ty_structure WITH EMPTY KEY,
BEGIN OF ty_structure_2,
carrid TYPE c LENGTH 2,
table  TYPE ty_table,
END OF ty_structure_2,
ty_table_2 TYPE STANDARD TABLE OF ty_structure_2 WITH EMPTY KEY,
ty_table_3 TYPE STANDARD TABLE OF ty_table_2 WITH EMPTY KEY.
DATA(lt) = VALUE ty_table_3( ( VALUE #( ( carrid = 'LH' table = VALUE #( ( connid = '2407' ) ) ) ) ) ).
DATA(structure) = lt[ 1 ][ carrid = 'LH' ]-table[ connid = '2407' ].

最新更新