首页 > 解决方案 > 从多个表中选择一个内部表

问题描述

我的数据库表:

db_1
db_2
db_3

我的内部表:

it_comb

it_comb 有一个结构,其中包含来自 db_1、db_2、db_3 的一些字段。

所有 db 表都有不同的结构。

我想从 db_1、db_2、db_3 中选择所有内容到带有 where 条件的 it_comb 的正确字段中。

我想做这样的事情:(这不起作用)

SELECT * From db_1, db_2, db_3 into CORRESPONDING FIELDS OF TABLE it_comb WHERE db_1-MATNR LIKE db_2-MATNR AND db_1-MATNR LIKE db_3-MATNR.

显然,这不起作用,因为我不能像那样使用','。我如何在 ABAP 中写这个?以便 it_comb 填充来自 db_1、db_2 和 db_3 的数据。

另一个问题是,每次我在 it_comb 中选择一些东西时,我以前的数据都会被覆盖。

ABAP-Beginner 将不胜感激代码示例。

标签: selectabap

解决方案


您可以使用内部连接 ​​-

SELECT * APPENDING CORRESPONDING FIELDS OF TABLE it_comb
FROM db_1 AS a
INNER JOIN db_2 AS b
ON a~matnr = b~matnr
INNER JOIN db_3 AS c
ON a~matnr = c~matnr
WHERE (Your any other condition).

APPENDING不会覆盖内部表中的先前记录it_comb

警告:APPENDING如果内部表是则使用,TYPE STANDARD否则你会得到转储。还要检查 SELECT - JOIN 文档


推荐阅读