SAP 查询。根据选择屏幕上的输入检索值

SAP query. Retrieve values basing on input on selection screen

我对编写 SAP 查询感到困惑。我是 ABAP 的新手。

我想要实现的是表 ESLL、EKPO、EKKO 之间的连接。 具体来说,这些是我想要实现的步骤:

  1. 在selection参数每次输入查询我都会 为 ESLL-EXTSRVNO 提供不同的值;
  2. 基于该值,查询自动应该 select ESLL-PACKNO 基于给定的 ESLL-EXTSRVNO;
  3. 那么查询应该让 ESLL-SUB_PACKNO 等于 之前步骤的 ESLL-PACKNO 值;
  4. 那么查询应该 将新的 ESLL-PACKNO 值设置为等于 EKPO-PACKNO 并检索 以下字段:EKPO-EBELN、EKPO-EBELP、EKPO-MATKL。

我已经在信息集中写了一些代码,但我不知道如何修复它。

在 "data" 部分我写了:

DATA: it_esll TYPE TABLE OF esll.
DATA: it_esll2 TYPE TABLE OF esll.
DATA: it_ekpo TYPE TABLE OF ekpo.

在"start-of-selection"部分我写了:

 SELECT packno
  FROM esll
  INTO TABLE it_esll.
IF sy-subrc EQ 0.
SELECT packno  FROM esll
  into TABLE it_esll2
  for ALL ENTRIES IN it_esll
  where sub_packno EQ it_esll-packno.
IF sy-subrc EQ 0.
  SELECT ebeln ebelp bukrs werks matkl menge netpr peinh
       FROM ekpo
       into TABLE it_ekpo
        for ALL ENTRIES IN it_esll2
       WHERE packno   EQ it_esll2-packno.
endif.
endif.

并且,为了显示我想要的所有信息,我加入了以下连接: ESLL-PACKNO --> EKPO-PACKNO --> EKPO-EBELN --> EKKO-EBELN

最后我想显示这些信息:

  1. EKPO-EBELN
  2. EKPO-EBELP
  3. EKPO-MATKL
  4. EKKO-BSART
  5. EKPO-PACKNO

你能帮帮我吗?

一种选择是在您的信息集中使用别名 table,如下所示:

  • 第一个table:ESLL;
  • 第二个 table ZESLL(ESLL 上的别名)加入 ZESLL-PACKNO = ESLL-SUB_PACKNO;
  • 第三个 table:EKPO 加入 EKPO-PACKNO = ZESLL-PACKNO;
  • 第四个 table:EKKO 加入 EBELN;

所以你可以避免 ABAP

Infoset Join