abap 如何使用FOR ALL ENTRIES进行4个表的关联,其中一个表是内表,其他表是物理表,其中一个物理表的字段需要进行字符串截取后关联,代码示例
时间: 2024-01-25 07:02:21 浏览: 111
Spring Data JPA 实现多表关联查询的示例代码
可以使用 `FOR ALL ENTRIES` 语句和 `INNER JOIN` 语句结合使用来实现4个表的关联。以下是一个示例代码,其中有一个物理表的字段需要进行字符串截取后关联:
```
TYPES: BEGIN OF ty_itab,
field1 TYPE char10,
field2 TYPE char10,
END OF ty_itab.
TYPES: BEGIN OF ty_dbtab1,
field1 TYPE char10,
field2 TYPE char10,
field3 TYPE char20,
END OF ty_dbtab1.
TYPES: BEGIN OF ty_dbtab2,
field1 TYPE char10,
field2 TYPE char10,
field3 TYPE char20,
END OF ty_dbtab2.
TYPES: BEGIN OF ty_dbtab3,
field1 TYPE char10,
field2 TYPE char10,
field3 TYPE char20,
END OF ty_dbtab3.
DATA: itab TYPE STANDARD TABLE OF ty_itab WITH HEADER LINE,
dbtab1 TYPE STANDARD TABLE OF ty_dbtab1,
dbtab2 TYPE STANDARD TABLE OF ty_dbtab2,
dbtab3 TYPE STANDARD TABLE OF ty_dbtab3.
SELECT field1 field2
FROM itab
INTO CORRESPONDING FIELDS OF TABLE dbtab1.
SELECT field1 field2 field3
FROM dbtab1
INNER JOIN dbtab2
ON dbtab1-field3+2(2) = dbtab2-field3+2(2)
INTO CORRESPONDING FIELDS OF TABLE dbtab3
FOR ALL ENTRIES IN dbtab1
WHERE dbtab1-field1 = dbtab2-field1.
LOOP AT dbtab3 INTO DATA(wa).
WRITE: / wa-field1, wa-field2, wa-field3.
ENDLOOP.
```
在上面的示例代码中,首先通过 `SELECT` 语句从内表 `itab` 中选取需要的字段,并将结果存储到物理表 `dbtab1` 中。然后使用 `INNER JOIN` 语句将 `dbtab1` 和 `dbtab2` 表进行关联,并使用 `FOR ALL ENTRIES` 语句将 `dbtab1` 中的字段作为关联条件,从 `dbtab3` 中选取需要的字段并输出。在 `INNER JOIN` 语句中,使用 `+2(2)` 对 `field3` 进行了截取,去掉了前两个字符,并将剩余部分作为关联条件。最后使用 `LOOP AT ... INTO ...` 语句遍历结果,并输出需要的字段。
阅读全文