2015-08-08 64 views

回答

3

範圍表可用於open sql查詢(使用IN子句)作爲限制。您可以在查詢結果中定義幾個範圍以包含或排除。例如:

report ZZTEST. 

types: 
    lt_kunrng type range of kunnr_d. 

data: 
    it_rnrng type standard table of lt_kunrng, 
    wa_rnrng type lt_kunrng, 
    it_kna1 type standard table of kna1. 

START-OF-SELECTION. 

move: 
    'I' to wa_rnrng-sign, 
    'EQ' to wa_rnrng-option, 
    '0001000000' to wa_rnrng-low, 
    '0002999999' to wa_rnrng-high. 
append wa_rnrng to it_rnrng. 

move: 
    'I' to wa_rnrng-sign, 
    'EQ' to wa_rnrng-option, 
    '0003500000' to wa_rnrng-low, 
append wa_rnrng to it_rnrng. 

select * from kna1 into corresponding fields of table it_kna1 
    where kna1~kunnr in it_rnrng. 

這個例子中手動定義一個RANGE表,增加了兩排它然後查詢表透明與KNA1此範圍表。內部表it_kna1應該包含所有KNA1記錄,其中KUNNR在1000000和2999999之間,而記錄則使用KUNNR 35000000.因此,您可以在單個範圍表中組合多個範圍。

字段SIGN包含任一「I」爲包含或「E」爲排除(意味着該行應包括或排除匹配所定義的範圍的記錄),場OPTION定義比較器(「EQ」爲相等,' GT'大於','GE'大於或等於等等)。字段HIGHLOW包含實際的範圍。如果您只想查詢單個值,則不必同時提供LOWHIGH,只需提供LOW(當然還有SIGNOPTION)。

RANGE表格也在您在報告中定義SELECT-OPTION時創建。用戶然後可以使用選擇屏幕來定義他們想要在報告中使用的範圍。

REPORT ZZTEST. 

TABLES: kna1. 

DATA: it_kna1 type standard table of kna1. 

SELECT-OPTION: 
    so_kndrng for kna1-kunnr. 

START-OF-SELECTION. 

select * from kna1 into corresponding fields of it_kna1 
    where kna1~kunnr in so_kndrng. 

有關範圍表,你也可以參考官方文檔here

+0

範圍表的使用不限於打開的SQL。它也可以用於if語句等。 –

相關問題