在ABAP中选择带偏移量的语句(Select statement with offset in ABAP)
我正在尝试在ABAP中使用此SELECT语句:
SELECT DISTINCT * FROM dbtab INTO CORRESPONDING FIELDS OF TABLE itab WHERE field1+7(16) IN s_field1 AND field2 IN s_field2.但我不能使用offset作为dbtab列。 我怎么解决这个问题?
我试图避免像循环一样
SELECT DISTINCT * FROM dbtab WHERE field2 IN s_field2. IF field1+7(16) IN s_field1 ... endif. endselect.I'm trying to use this SELECT statement in ABAP:
SELECT DISTINCT * FROM dbtab INTO CORRESPONDING FIELDS OF TABLE itab WHERE field1+7(16) IN s_field1 AND field2 IN s_field2.but I can't use offset for a dbtab column. How can I solve this problem?
I'm trying to avoid loop like
SELECT DISTINCT * FROM dbtab WHERE field2 IN s_field2. IF field1+7(16) IN s_field1 ... endif. endselect.最满意答案
您不能在OPEN SQL中使用偏移量。
我建议将SELECT转换为内部表并像这样循环它。
SELECT DISTINCT * FROM dbtab INTO CORRESPONDING FIELDS OF TABLE itab WHERE field2 IN s_field2. LOOP AT dbtab into wa_itab. IF wa_itab-field1+7(16) IN s_field1 ... ENDIF. ENDLOOP.另一方面,我还将内部表定义为SORTED或HASHED,或者如果您更喜欢尝试按正在进行比较的字段排序itab。 场符号也可以是替代品。
希望能帮助到你。
You can't use offset in OPEN SQL.
I would recommend to make a SELECT into an internal table and loop over it like this.
SELECT DISTINCT * FROM dbtab INTO CORRESPONDING FIELDS OF TABLE itab WHERE field2 IN s_field2. LOOP AT dbtab into wa_itab. IF wa_itab-field1+7(16) IN s_field1 ... ENDIF. ENDLOOP.On the other hand I would also define the internal table as SORTED or HASHED or if you prefer try to SORT itab by the field you are making the comparison. Field symbols could be an alternative also.
Hope it helps.
更多推荐
发布评论