"String calculation not permitted here" 在 REDUCE 上抛出
"String calculation not permitted here" is thrown on REDUCE
我在 LT_FIELDS
中有几个字段名称。我正在尝试以特定格式连接内部 table 中的数据,并将其附加到 LT_WHERE
以进行动态 select 查询。
下面是我写的片段:
TYPES: BEGIN OF ty_whr,
fieldname TYPE string,
END OF ty_whr.
DATA(lt_fields) = VALUE rsds_frange_t( ).
DATA(lt_where) = REDUCE ty_whr(
INIT whereclause = VALUE ty_whr( )
FOR <fields> IN lt_fields
NEXT whereclause =
COND #( WHEN whereclause IS NOT INITIAL
THEN <fields>-fieldname && | IN | && |@| && <fields>-fieldname && | AND |
ELSE <fields>-fieldname && | IN | && |@| && <fields>-fieldname
) ).
我在串联部分遇到此错误:
String calculation not permitted here
这里的语法错误吗?
构造函数表达式的语法消息有点奇怪。
实际上问题是由于目标 (whereclause
) 是一个结构,您不能将文本文字分配给结构,而应该将其分配给它的文本组件 whereclause-fieldname
(在 NEXT
之后):
TYPES: BEGIN OF ty_whr,
fieldname TYPE string,
END OF ty_whr.
DATA(lt_fields) = VALUE rsds_frange_t( ).
DATA(lt_where) = REDUCE ty_whr(
INIT whereclause = VALUE ty_whr( )
FOR <fields> IN lt_fields
NEXT whereclause-fieldname =
COND #( WHEN whereclause IS NOT INITIAL
THEN <fields>-fieldname && | IN | && |@| && <fields>-fieldname && | AND |
ELSE <fields>-fieldname && | IN | && |@| && <fields>-fieldname
) ).
我在 LT_FIELDS
中有几个字段名称。我正在尝试以特定格式连接内部 table 中的数据,并将其附加到 LT_WHERE
以进行动态 select 查询。
下面是我写的片段:
TYPES: BEGIN OF ty_whr,
fieldname TYPE string,
END OF ty_whr.
DATA(lt_fields) = VALUE rsds_frange_t( ).
DATA(lt_where) = REDUCE ty_whr(
INIT whereclause = VALUE ty_whr( )
FOR <fields> IN lt_fields
NEXT whereclause =
COND #( WHEN whereclause IS NOT INITIAL
THEN <fields>-fieldname && | IN | && |@| && <fields>-fieldname && | AND |
ELSE <fields>-fieldname && | IN | && |@| && <fields>-fieldname
) ).
我在串联部分遇到此错误:
String calculation not permitted here
这里的语法错误吗?
构造函数表达式的语法消息有点奇怪。
实际上问题是由于目标 (whereclause
) 是一个结构,您不能将文本文字分配给结构,而应该将其分配给它的文本组件 whereclause-fieldname
(在 NEXT
之后):
TYPES: BEGIN OF ty_whr,
fieldname TYPE string,
END OF ty_whr.
DATA(lt_fields) = VALUE rsds_frange_t( ).
DATA(lt_where) = REDUCE ty_whr(
INIT whereclause = VALUE ty_whr( )
FOR <fields> IN lt_fields
NEXT whereclause-fieldname =
COND #( WHEN whereclause IS NOT INITIAL
THEN <fields>-fieldname && | IN | && |@| && <fields>-fieldname && | AND |
ELSE <fields>-fieldname && | IN | && |@| && <fields>-fieldname
) ).