Abap 操作数中OpenSQL的正确类型
我有导入我的_值的功能模块 my_值是字符串的自定义内部表类型 此my_values变量包含例如:[foo,bar] 我想从表Z_MYTAB中选择所有值,其中列my_col位于my_values中 我试过这个:Abap 操作数中OpenSQL的正确类型,abap,opensql,Abap,Opensql,我有导入我的_值的功能模块 my_值是字符串的自定义内部表类型 此my_values变量包含例如:[foo,bar] 我想从表Z_MYTAB中选择所有值,其中列my_col位于my_values中 我试过这个: SELECT * FROM Z_MYTAB WHERE my_col in @my_values INTO TABLE @DATA(my_rows). 但此操作失败,并显示一条错误消息: 表my_值的行结构错误 消息被翻译成英语。原作可能略有不同 我可以循环使用我的_值
SELECT * FROM Z_MYTAB WHERE
my_col in @my_values INTO TABLE @DATA(my_rows).
但此操作失败,并显示一条错误消息:
表my_值的行结构错误
消息被翻译成英语。原作可能略有不同
我可以循环使用我的_值,但我希望避免这种情况
如何使用内部表中的主机变量执行SQL IN?只有在表中才能使用IN进行选择
将内部表转换为范围表的操作如下:
DATA ltr_value TYPE RANGE OF string.
ltr_value = VALUE #( FOR <my_value> IN my_values
( sign = 'I'
option = 'EQ'
low = <my_value> )
).
在openands中,可以有两种类型:
SELECT ... WHERE my_col IN ( value1, value2 , value3)
在这种情况下,主机表达式不能用作右操作数
SELECT ... WHERE my_col IN sel_tab[]
在这种情况下,sel_tab是一个类似
因此,您可以使用以下内容:
DATA sel_tab type range of string.
sel_tab = value #( for ls in my_values ( sign = 'I' option = 'EQ' low = ls ) ).
SELECT * FROM Z_MYTAB WHERE
my_col in @sel_tab[] INTO TABLE @DATA(my_rows).
向用户JozsefSzikszai致以最诚挚的问候,让我为所有条目选择 我在文档中找到了: 对于基本行类型,必须为comp指定伪组件表_行 见:
我担心这是不可能的,在一个范围内是预期的,这在技术上也是一个内部表,只是结构给出了符号,选项,低,高。您有两个选项:将my_值更改为一个范围,或用于表my的所有条目,而不是IN_values@JozsefSzikszai谢谢你的提示。我现在使用了所有条目,并在下面写了一个答案。请注意,在第一个变体中,value1中的value1之前不应有空格,…我在7.52中使用,但是它仍然不是一个有效的语法my_col IN@VALUE ty_range\u my_col sign='I'option='EQ'low='value1'low='value2'在7.53中仍然不可用,根据文档,主机表达式在第一个变量中是不可能的,但是主机变量是可能的:其中my_col IN@value1,@值2以及“foo”和“bar”中的非宿主经典文本
IF my_values is initial.
exit.
endif.
SELECT * FROM Z_MYTAB
FOR ALL ENTRIES IN @my_values WHERE
column_name = @my_values-table_line
INTO TABLE @DATA(result_rows).