加入 returns 意外的空结果

Join returns unexpected empty result

希望你能帮帮我。

我有 2 个表(例如 T1、T2):

T1 和 T2 分别包含 2 行和 3 行:

T1:             T2:
   ID MAKTX        ID TABNAME FIELDNAME FIELDVALUE
   -- -----        -- ------- --------- ----------
   1  text1        1  X       MATNR     MATNR1
   2  text2        2  X       WERKS     WERKS2
                   2  X       LGORT     LGORT2

SQL 代码应输出如下:

ID1 MAKTX ID2 TABNAME FIELDNAME FIELDVALUE
--- ----- --- ------- --------- ----------
1   text1 1   X       MATNR     MATNR1
2   text2 2   X       WERKS     WERKS2

下面是我试过的代码:

    ir_id    = VALUE #( ).
    ir_matnr = VALUE #( sign = 'I' option = 'EQ' ( low = 'MATNR1' ) ).
    ir_werks = VALUE #( sign = 'I' option = 'EQ' ( low = 'WERKS2' ) ).
    SELECT *
        FROM T1
        JOIN T2 on T1~id = T2~id
        INTO CORRESPONDING FIELDS OF table <et_result>
        WHERE T1~id IN ir_id[]
        AND   ( T2~fieldname = 'MATNR' AND T2~fieldvalue IN ir_matnr[] )
        AND   ( T2~fieldname = 'WERKS' AND T2~fieldvalue IN ir_werks[] )

T1 和 T2 结构不同,但 ID 相同。

我的问题是它returns没什么。我不知道如何解决这个问题。

P.S。我不是这个系统的创造者,不能对其进行任何结构上的改变,只是想解决这个问题。

如有任何帮助,我们将不胜感激。

一个字段不能同时有两个不同的值(MATNR和WERKS),所以AND条件要改成OR:

SELECT *
    FROM T1
    JOIN T2 on T1~id = T2~id
    INTO CORRESPONDING FIELDS OF table <et_result>
    WHERE T1~id IN ir_id[]
    AND  ( ( T2~fieldname = 'MATNR' AND T2~fieldvalue IN ir_matnr[] )
    OR     ( T2~fieldname = 'WERKS' AND T2~fieldvalue IN ir_werks[] ) ).