我的数据库表:
db_1
db_2
db_3
我的内部表:
it_comb
it_comb的结构包含db_1,db_2,db_3。
中的一些字段所有数据库表都有不同的结构。
我想从db_1,db_2,db_3到it_comb的正确字段中选择where where条件。
我想做这样的事情:(这不起作用)
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将会感谢代码示例。
答案 0 :(得分:4)
您可以使用内部联接 -
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
,否则您将获得转储。
另外check the SELECT - JOIN documentaion
答案 1 :(得分:0)
没有JOIN,我逐个执行SELECT语句,如下所示
data it_comb type TABLE OF vbak.
select * APPENDING CORRESPONDING FIELDS OF TABLE it_comb FROM vbak UP TO 10 ROWS.
select * APPENDING CORRESPONDING FIELDS OF TABLE it_comb FROM vbrk UP TO 10 ROWS.
select * APPENDING CORRESPONDING FIELDS OF TABLE it_comb FROM likp UP TO 10 ROWS.
答案 2 :(得分:0)
在较新的ABAP版本中,您可以做的另一件事是
DagRun
这将在一步中定义和填充您的内部表,而无需单独的数据"声明。
请注意,在带*的连接中,您将获得一个内部表,其中包含基于表名的子结构 - 由于结构隐含在select的字段列表中,您还可以执行类似的操作以获取更多信息高效的数据库查询(因此它不需要返回所有字段),这也消除了子结构:
running
希望这有帮助!