我的数据库表:
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条件 .
我想做这样的事情:(这不起作用)
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的赞赏 .
3 回答
你可以使用内连接 -
APPENDING
不会覆盖内部表it_comb
中的上一条记录 .警告:如果内部表是
TYPE STANDARD
,请使用APPENDING
否则您将获得转储 . 还check the SELECT - JOIN documentaion没有JOIN,我按如下方式逐个执行SELECT语句
在较新的ABAP版本中,您可以做的另一件事是
这将在一个步骤中定义和填充内部表,而无需单独的“数据”语句 .
请注意,在与*的连接中,您将获得一个内部表,其中包含基于表名的子结构 - 由于结构隐含在select的字段列表中,您还可以执行类似这样的操作以获得更有效的数据库查询(因此它不需要返回所有字段),这也消除了子结构:
希望这可以帮助!