多表查询
需求:查询出头表 vbak 中 ernam 为 CHENGA,audat 为 20190401 的订单详情,订单详情表在 vbap 中,外键是字段 vbeln。
思路:
1.先查询出ernam 为 CHENGA,audat 为 20190401的所有订单头表数据
2.根据第一步查询出的数据中的主键vbeln查询出每笔订单的订单详情
- 第一种:FOR ALL ENTRIES IN:限定一个表中的字段,从而查询另一个表
*声明一个内表gt_vbak存储数据库表vbak
DATA:gt_vbak TYPE TABLE OF vbak.
*声明一个内表gt_vbap存储数据库表vbap
DATA:gt_vbap TYPE TABLE OF vbap.
*声明一个结构体存放每条数据
DATA:gs_vbak TYPE vbak.
*声明一个结构体存放每条数据
DATA:gs_vbap TYPE vbap.
*先清空数据,避免让遗留数据影响
REFRESH gt_vbak.
*在vbak中查询出来的数据是条件:vbeln字段是两张表关联的主外键,ernam audat这两个字段是where后的查询条件
SELECT vbeln ernam audat FROM vbak
"匹配字段查询后的数据放在内表gt_vbak中
INTO CORRESPONDING FIELDS OF TABLE gt_vbak
WHERE ernam = 'CHENGA'
AND audat = '20190401'.
"先判断限制表是否为空
IF gt_vbak IS NOT INITIAL.
"先清空数据,避免让遗留数据影响
REFRESH gt_vbap.
"vbeln字段是两表关联的主外键,posnr matnr arktx这三个字段是查询表vbap想要展示的字段
SELECT vbeln posnr matnr arktx FROM vbap
"匹配字段查询后的数据放在内表gt_vbap中
INTO CORRESPONDING FIELDS