2012-01-05 50 views
3

我有一個Loop循環使用條件,即一個表中的某個屬性與另一個表相同。爲了更好地解釋我會過去的代碼。這並不困難,但我不明白我犯了什麼錯誤。ABAP:循環在<itab>到<wa>其中<cond>

LOOP AT gt_spfli INTO wa_spfli. 
    AT NEW carrid. 
    WRITE:/ wa_spfli-carrid. 
    ENDAT. 
    LOOP AT gt_sflight INTO wa_sflight WHERE carrid EQ wa_sflight-carrid. 
    WRITE:/ wa_sflight-carrid, 
      wa_sflight-connid, 
      wa_sflight-price. 
    ENDLOOP. 

    ULINE. 
    ENDLOOP. 

對於spfli中的每個carrid,我想顯示sflight包含哪個carrid。但它只寫wa_spfli-carrid。它永遠不會寫第二個。當我調試時,我得到的那個wa_sflight總是空的。 (或從來沒有得到它)​​gt_sflight和gt_spfli被填充,所以問題來自哪裏?如果我刪除「Carrid EQ wa_sflight-carrid」的作品......但不是我想要在屏幕上顯示的內容。

附加信息(不知道它是否有用):gt_spfli和gt_sflight通過我自己製作的功能模塊進行填充。

回答

7

在內部循環,你想與wa_spfli-CARRID(這是從外循環),而不是用wa_sflight-CARRID比較CARRID。

+1

正確,在這一點上你還沒有填寫wa_sflight,但你確實有wa_spfli的值。 – tomdemuyt 2012-01-05 21:08:50

+0

謝謝!愚蠢的錯誤:)我認爲「carrid」來自spfli,因此我需要它與sflight進行比較。 – kookies 2012-01-06 15:37:21