将两个选择循环放入单个 SELECT 中?

sum*_*til 0 abap opensql

我最近一直在学习abap并致力于选择操作,但后来我遇到了这个问题。如何将这 2 个 select 语句放入单个 select 语句中?

SELECT * FROM SPFLI INTO SPFLI_WA.

      SELECT * FROM SFLIGHT INTO SFLIGHT_WA    
            WHERE CARRID = SPFLI_WA-CARRID    
             AND CONNID = SPFLI_WA-CONNID.

      ENDSELECT.

ENDSELECT.
Run Code Online (Sandbox Code Playgroud)

mky*_*oft 5

您可以使用内连接从其他表中获取匹配的记录。

SELECT SFLIGHT~*
  INTO @SFLIGHT_WA
  FROM SFLIGHT
 INNER JOIN SPFLI ON SFLIGHT~CARRID = SPFLI~CARRID
                   AND SFLIGHT~CONNID = SPFLI~CONNID.

ENDSELECT.
Run Code Online (Sandbox Code Playgroud)


San*_*ssi 5

这是 mkysoft 正确答案的扩展,只是为了好玩,完全模仿原始代码;它从 ABAP 7.40 开始工作:

SELECT *
      INTO @DATA(spfli_sflight_wa)
      FROM spfli
      INNER JOIN sflight ON sflight~carrid = spfli~carrid
                        AND sflight~connid = spfli~connid.

  DATA(spfli_wa) = spfli_sflight_wa-spfli.
  DATA(sflight_wa) = spfli_sflight_wa-sflight.

  ...

ENDSELECT.
Run Code Online (Sandbox Code Playgroud)