我有两个标准表,VBAP
和MAKT
。我想要MAKT-MAKTX的元素,其中MAKT-MATNR = VBAP - MATNR。
SELECT MATNR FROM VBAP INTO IT_VBAP.
SELECT MATNR MAKTX FROM MAKT INTO IT_MAKT FOR ALL ENTRIES WHERE MATNR = IT_VBAP.
此代码是否选择只有这些 matnr 字段相等的it_makt值?
对所有条目的确切作用。
谢谢。
select field_1 field_2 field_n from table into internal_table for all
entries in another_internal_table where some_field_in_table = another_internal_table-same_field_in_another_internal_table.
当您要根据另一个内部表中的值填充内部表时,可以使用所有条目。
您可以尝试使用以下方法
select matnr from vbap into it_vbap.
select maktx from makt into it_makt for all entries in it_vbap where matnr = it_vbap-matnr.
对于所有条目来说,您可能会在阅读时认为。它是这样的:
"对于 in 中的所有条目"允许您使用内部表的子集作为 select 语句中的 where 条件,方法是在 select 语句中提供此内部表的字段作为 where 条件参数。
所以,在内部它也只是一个循环,你可以使用 sql-monitor 事务,并且大多数情况下会看到,如果我没记错的话,所有条目的行为确实像循环中的选择。它非常有帮助,并且通常相对频繁地使用。
如果用作参数表的子集表为空,则执行全表选择(全表扫描),如果您仅将表字段用作 where 参数。因此,请始终注意填充您的位置表的选择或检查其内容 if lines( the_table ) > 0.
尽管如此,看看 vwegert 的链接,它描述了所有条目的优缺点。您需要更多信息吗?