SAP查询。根据选择屏幕

时间:2016-05-16 18:07:28

标签: sap abap infoset

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

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

    选择参数中的
  1. 每次我都会输入查询 为ESLL-EXTSRVNO提供不同的值;
  2. 基于该值,查询自动应根据给定的ESLL-EXTSRVNO选择ESLL-PACKNO;
  3. 然后查询应该使ESLL-SUB_PACKNO相等 到之前步骤的ESLL-PACKNO值;
  4. 然后查询应该 将新的ESLL-PACKNO值等于EKPO-PACKNO并检索 以下领域:EKPO-EBELN,EKPO-EBELP,EKPO-MATKL。
  5. 我已经在信息集中写了一些代码,但我不知道如何修复它。

    在"数据"我写的部分:

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

    在"开始选择"我写的部分:

     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. 埃克波-EBELN
    2. 埃克波-EBELP
    3. 埃克波-MATKL
    4. EKKO-BSART
    5. 埃克波-PACKNO
    6. 你能帮我吗?

1 个答案:

答案 0 :(得分:1)

一个选项可能是在您的信息集中使用Alias表,如下所示:

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

所以你可以避免ABAP

Infoset Join