【发布时间】:2021-12-28 18:17:08
【问题描述】:
我的目标是使用FOR 循环实现以下目标。
DATA(lt_wherecondn) = VALUE string_table( ).
DATA(lt_fields) = VALUE rsds_frange_t(
( fieldname = 'A~FLD1' ) ( fieldname = 'A~FLD2' ) ).
DATA(lv_lines) = lines( lt_fields ).
LOOP AT lt_fields ASSIGNING FIELD-SYMBOL(<fields>).
DATA(lv_length) = strlen( <fields>-fieldname ) - 2.
DATA(lv_line) = COND string(
WHEN lv_lines <> sy-tabix
THEN <fields>-fieldname+2(lv_length) && | IN | && |@| && <fields>-fieldname && | AND |
ELSE <fields>-fieldname+2(lv_length) && | IN | && |@| && <fields>-fieldname ).
APPEND lv_line TO lt_wherecondn.
ENDLOOP.
还有:
-
LT_FIELDS中有字段名。 - 将
LT_FIELDS-FIELDNAME数据连接成特定格式。 - 将其附加到
LT_WHERE。
结果为@987654327@:
FLD1 IN @A~FLD1 AND
FLD2 IN @A~FLD2
下面是我的代码(不知道在哪里添加我的 lv_length 逻辑在循环中):
TYPES: BEGIN OF ty_whr,
fieldname TYPE string,
END OF ty_whr.
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 ) ).
上面的sn-p是用fieldname创建一个深层结构lt_where,并且只保存一行数据。似乎是语法问题。这里需要纠正什么?
【问题讨论】:
-
在这里查看我的问题stackoverflow.com/q/55640273/911419