首页 > 解决方案 > OpenSQL IN 操作数的正确类型

问题描述

我有导入的功能模块my_values

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

这个“my_values”变量包含例如:[“foo”,“bar”]

我想从Z_MYTABmy_col在 my_values 中的表中选择所有值。

我试过这个:

SELECT * FROM Z_MYTAB WHERE 
       my_col in @my_values INTO TABLE @DATA(my_rows).

但这失败并显示错误消息:

表 my_values 的行结构错误

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

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

如何IN使用作为内部表的主机变量执行 SQL?

标签: abapopensql

解决方案


选择 withIN只能使用范围表。

可以像这样将内部表转换为范围表:

DATA ltr_value TYPE RANGE OF string.

ltr_value  = VALUE #( FOR <my_value> IN my_values
                      ( sign   = 'I'
                        option = 'EQ'
                        low    = <my_value> )
                    ).

推荐阅读