gpt4 book ai didi

subset - 表推导 : get subset from internal table into another one

转载 作者:行者123 更新时间:2023-12-05 00:20:00 31 4
gpt4 key购买 nike

正如主题中所述,我想要一个内部的有条件的子集
另一个内部表中的表。

让我们先看看老式的方式会是什么样子。

DATA: lt_hugeresult TYPE tty_mytype,
lt_reducedresult TYPE tty_mytype.

SELECT "whatever" FROM "wherever"
INTO CORRESPONDING FIELDS OF TABLE lt_hugeresult
WHERE "any_wherecondition".
IF sy-subrc = 0.
lt_reducedresult[] = lt_hugeresult[].
DELETE lt_reducedresult WHERE col1 EQ 'a value'
AND col2 NE 'another value'
AND col3 EQ 'third value'.
.
.
.


ENDIF.

我们都可能知道这一点。

现在我正在阅读有关减少表格的内容,这是介绍
使用 abap 7.40,似乎是 SP8。

表推导 - 功能性地构建表

表驱动:

VALUE tabletype( FOR line IN tab WHERE ( … )

(……行-…………行-…………)
)

对于源表中的每个选定行,在结果表中构造一行。值构造函数从静态行数到动态行数的泛化。

我正在尝试这样做,但结果似乎不太合适,
也许我做错了,或者我什至可能需要条件驱动的方法。

那么,如果我想用表格理解技术编写上述语句,它会是什么样子?

直到现在我有这个,而不是那个,我需要的,而且我已经看到了,那个
看来,好像“不等于”是不可能的......
DATA(reduced) =  VALUE tty_mytype( FOR checkline IN lt_hugeresult
WHERE ( col1 = 'a value' )
( col2 = 'another value' )
( col3 = space )
).

有人有一些提示吗?

编辑:似乎仍然不起作用。这是,正如我所做的:

可执行线:

enter image description here

调试器结果:

enter image description here

错误减少:

enter image description here

现在怎么办 ???

最佳答案

您可以使用 FILTER带有 EXCEPT WHERE 的运算符除了过滤掉与 where 子句匹配的任何行:

lt_reducedresult = FILTER # ( lt_hugeresult EXCEPT WHERE col1 = 'a value' 
AND col2 <> 'another value'
AND col3 = 'a third value' ).

请注意 lt_hugeresult必须是一个排序表,而 col1/ col2/ col3需要是关键组件(您可以使用 USING KEY 添加指定辅助键)。

documentation for FILTER明确指出:

Table filtering can also be performed using a table comprehension or a table reduction with an iteration expression for table iterations with FOR. The operator FILTER provides a shortened format for this special case and is more efficient to execute.

A table filter constructs the result row by row. If the result contains almost all rows in the source table, this method can be slower than copying the source table and deleting the surplus rows from the target table.



所以你使用 DELETE 的方法根据 table 的大小,实际上可能是合适的。

关于subset - 表推导 : get subset from internal table into another one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35359765/

31 4 0