操作数中OpenSQL的合适类型



我有函数模块,该模块导入 my_values

my_values是字符串的自定义内部表类型。

此" 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_values的行错误

(该消息被翻译成英文。原件可能略有不同)

我可以通过my_values循环,但我想避免这种情况。

如何使用内部表的主机变量进行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中的2种类型:

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指定伪组件table_line。

请参阅:https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-us/abenwhere_logexp_itab.htm

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).

相关内容

  • 没有找到相关文章

最新更新