首页 > 解决方案 > 具有不同域的字段的内部连接

问题描述

我有一个看起来有点像这样的查询:

 SELECT a~matnr AS material,
        b~aedat AS date,
        SUM( c~ormng ) AS dummy
    INTO TABLE @gt_dummy
    FROM ekpo AS a
    INNER JOIN ekko AS b
      ON b~ebeln = a~ebeln
    INNER JOIN lips AS c
      ON c~vgbel = a~ebeln
      AND c~vgpos = a~ebelp
    INNER JOIN likp AS d
      ON d~vbeln = c~vbeln
    WHERE a~matnr IN @gr_dummy1
      AND a~werks IN @gr_dummy2
    GROUP BY a~matnr, b~aedat
    ORDER BY a~matnr, b~aedat.

它不会起作用,因为LIPS-VGPOS并且EKPO-EBELP有不同的域,所以 '00010' inEBELP将是 '000010' in VGPOS. 另一种方法是只获取 EKPO 数据,使用转换退出函数,然后使用FOR ALL ENTRIES查询来获取 LIPS 条目。然后,由于您不能使用并且SUM我需要手动进行汇总。GROUP BYFOR ALL ENTRIES

当然,做这一切的工作量并不大,但我很感兴趣是否有更快的方法来做到这一点,例如在单个查询中?谢谢。

编辑:我们在 7.40

标签: abapopensql

解决方案


不幸的是,我在 ABAP 7.50 之前只看到了两种可能性:

  • FOR ALL ENTRIES正如你所建议的
  • 直接在连接到 ABAP 软件的数据库上执行“本机”SQL。这可以使用EXEC SQLADBC(类CL_SQL_STATEMENT等)或 AMDP(如果您的数据库是 HANA)来完成。

推荐阅读