繁体   English   中英

ABAP 7.02 中 2 个表的左连接

[英]Left join on 2 tables in ABAP 7.02

我想加入 4 个表 T001、KNKK、KNB1 和 KNA1,以获取 KNB1/KNA1 中的所有客户及其在 KNKK 中的风险类别。

我们需要来自 KNKK 的左连接,但连接条件基于 2 个表:T001-KKBER 和 KNA1-KUNNR。

但我收到语法错误:

无法与“T001~KKBER”进行比较。 一个表最多可以使用 LEFT OUTER JOIN 与另一个表连接。

选择是:

SELECT knb1~kunnr kna1~name1 kna1~lifnr knb1~akont
       INTO TABLE git_kunnr_tab
       FROM kna1
       INNER JOIN knb1
       ON kna1~kunnr EQ knb1~kunnr
       INNER JOIN t001
       ON knb1~bukrs EQ t001~bukrs
       LEFT JOIN knkk
       ON knb1~kunnr EQ knkk~kunnr AND
          t001~kkber EQ knkk~kkber
       WHERE knb1~kunnr IN s_kunnr
          AND knb1~bukrs = p_bukrs.

我们的系统是旧的 ECC6 7.02,所以我们无法实现 ABAP 的新功能。

有没有办法在1次选择中做到这一点?

不确定,你得到了什么错误,但这在语法上是正确的:

SELECT ...
       INTO TABLE ...
       FROM kna1
       INNER JOIN knb1
       ON kna1~kunnr EQ knb1~kunnr
       INNER JOIN t001
       ON knb1~bukrs EQ t001~bukrs
       LEFT JOIN knkk
       ON knb1~kunnr EQ knkk~kunnr AND
          t001~kkber EQ knkk~kkber
       WHERE ...

我相信没有办法对所有这些表进行连接并从 KNA1 中选择所有客户,即使它们不存在于 KNKK 中。
也许 SubQuery 有一种方法,但我现在想不起来了。
因此,我进行了 2 个选择并填充了 2 个 ITAB,然后使用 KUNNR 和 CTLPC 循环到其中一个,并通过传递 CTLPC 值来修改第二个。 所以现在的代码是:

select knb1~kunnr kna1~name1 kna1~lifnr knb1~akont
           knb1~fdgrv knb1~frgrp 
          into table git_kunnr_tab
        from knb1 as knb1 left join kna1 as kna1
            on knb1~kunnr = kna1~kunnr
        where knb1~kunnr in s_kunnr
          and knb1~bukrs = p_bukrs.

select knkk~kunnr knkk~ctlpc into table lit_kunnr_risk
    from knkk as knkk inner join t001 as t001
        on knkk~kkber = t001~kkber
    where t001~bukrs = p_bukrs and
          knkk~ctlpc <> ''.

  sort git_kunnr_tab by kunnr.
  loop at lit_kunnr_risk into lwa_kunnr_risk.
    gwa_kunnr_tab-ctlpc = lwa_kunnr_risk-ctlpc.
    modify git_kunnr_tab from gwa_kunnr_tab transporting ctlpc
                         where kunnr = lwa_kunnr_risk-kunnr.
    clear gwa_kunnr_tab.
  endloop.

如果有更好的方法来做到这一点,请张贴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM