用php做圖書管理網(wǎng)站重慶百度關(guān)鍵詞推廣
基礎(chǔ)查數(shù)據(jù)
問題舉例:例如查物料類型為ZFRT、ZROH和ZRSA的物料編碼。
1、直接查詢,三種不同類型的物料類型是或的關(guān)系。
SELECT DISTINCT ma~matnr ma~mtartFROM mara AS maINNER JOIN mbewh AS mbON ma~matnr = mb~matnrINTO CORRESPONDING FIELDS OF TABLE gt_tabWHERE ma~mtart EQ 'ZFRT' ORma~mtart EQ 'ZROH' ORma~mtart EQ 'ZRSA'.
2、如果對1進行優(yōu)化,三種物料類型放在列表項中,使用關(guān)鍵字IN,這樣查詢等價于1.
SELECT DISTINCT ma~matnr ma~mtartFROM mara AS maINNER JOIN mbewh AS mbON ma~matnr = mb~matnrINTO CORRESPONDING FIELDS OF TABLE gt_tabWHERE ma~mtart IN ( 'ZFRT' , 'ZROH', 'ZRSA' ).
3、定義區(qū)間函數(shù),RANGE 內(nèi)表
https://www.cnblogs.com/buduzhiren/p/13131483.html
SAP ABAP編程 Ranges用法_m15188153014的博客-CSDN博客
定義區(qū)間結(jié)構(gòu):
TYPES: BEGIN OF ty_sign,sign TYPE sign,option TYPE option,low TYPE mtart,high TYPE mtart,END OF ty_sign. "定義區(qū)間結(jié)構(gòu)
(1)直接賦值,不建議這種直接堆疊賦值方式,代碼量比較多。
DATA: lt_mtart TYPE TABLE OF ty_sign WITH HEADER LINE. "定義區(qū)間表lt_mtart-sign = 'I'. "賦值lt_mtart-option = 'EQ'.lt_mtart-low = 'ZFRT'.APPEND lt_mtart TO lt_mtart.lt_mtart-sign = 'I'.lt_mtart-option = 'EQ'.lt_mtart-low = 'ZROH'.APPEND lt_mtart TO lt_mtart.lt_mtart-sign = 'I'.lt_mtart-option = 'EQ'.lt_mtart-low = 'ZRSA'.APPEND lt_mtart TO lt_mtart.CLEAR lt_mtart.
(2) 優(yōu)化:使用VALUE#() 進行賦值,建議這種方式,代碼量會大大減少。
DATA: lt_mtart TYPE TABLE OF ty_sign .lt_mtart = VALUE #( sign = 'I' option = 'EQ' ( low = 'ZFRT' high = '' )( low = 'ZROH' high = '' )( low = 'ZRSA' high = '' )).
(3)或者用APPEND VALUE#() TO ITAB. 與(2)二者等同。
DATA: lt_mtart TYPE TABLE OF ty_sign . APPEND VALUE #( sign = 'I' option = 'EQ' low = 'ZFRT' high = '' ) TO lt_mtart.
APPEND VALUE #( sign = 'I' option = 'EQ' low = 'ZROH' high = '' ) TO lt_mtart.
APPEND VALUE #( sign = 'I' option = 'EQ' low = 'ZRSA' high = '' ) TO lt_mtart.
對RANGE內(nèi)表 賦值完成后的,以上三種方式的查詢語句均相同。
SELECT DISTINCT ma~matnr ma~mtartFROM mara AS maINNER JOIN mbewh AS mbON ma~matnr = mb~matnrINTO CORRESPONDING FIELDS OF TABLE gt_tabWHERE ma~mtart IN lt_mtart.
總結(jié): 1、如果是多個字符,使用第二種,IN +列表項,查詢最為簡潔;
2、如果有多個區(qū)間,可以使用VALUE#()方式進行賦值。