然而僚饭,需要注意下面的警告:
在高效使用建議的替代方法之前,一定要檢查程序的正確性胧砰。
注意下面的注釋:
在下面的例子中浪慌,經(jīng)常訪問(wèn)幾個(gè)表
例如:
SELECT * FROM LEIN WHERE = ...
SELECT * FROM LTAP WHERE LGNUM = LEIN-LGNUM and TANUM = LEIN-BTANR
...
考慮到效能方面,這些方法可能會(huì)更受歡迎朴则。為相應(yīng)的表定義一個(gè)選擇視圖,在一次訪問(wèn)中同時(shí)訪問(wèn)兩個(gè)表钓简。
方案
1.訪問(wèn)傳輸請(qǐng)求
a)經(jīng)由存儲(chǔ)單元號(hào)
錯(cuò)誤:SELECT FROM LTAP WHERE VLENR = .... oder
SELECT FROM LTAP WHERE NLENR = ...
正確:SELECT FROM LEIN WHERE LENUM = ...
SELECT FROM LTAP WHERE LGNUM = LEIN-LGNUM and
AND TANUM = LEIN-BTANR
AND TAPOS = LEIN-BTAPS.
b)經(jīng)由SD發(fā)貨記錄
錯(cuò)誤: SELECT FROM LTAP WHERE NLPLA = LIPS-VBELN
AND POSNR = LIPS-POSNR.
正確:SELECT FROM VBFA WHERE VBELV = LIPS-VBELN
AND POSNV = LIPS- POSNR
AND VBTYP_N = 'Q'.
SELECT FROM LTAP WHERE LGNUM = LIPS-LGNUM
AND TANUM = VBFA-VBELN
AND TAPOS = VBFA-POSNN.
備注:如果為了銷售中的發(fā)貨而建立的運(yùn)輸訂單乌妒,那么這種訪問(wèn)模式才存在。
在這種情況中經(jīng)由VBFA表的文檔流外邓,運(yùn)輸訂單才能被檢測(cè)到撤蚊。LTAP-NLPLA字段
經(jīng)由動(dòng)態(tài)存儲(chǔ)箱賦值,由發(fā)貨號(hào)填充此字段损话。在WM自定義(參看WMS中的移動(dòng)類型)
中自動(dòng)賦值被取消激活侦啸。當(dāng)NLPLA字段用作數(shù)據(jù)選擇時(shí),這個(gè)副作用必須考慮到
2.訪問(wèn)物料文檔
a)經(jīng)由采購(gòu)訂單號(hào)
錯(cuò)誤: SELECT FROM MSEG WHERE EBELN = ... and EBELP = ...
正確: SELECT FROM EKBE WHERE EBELN = ..
AND EBELP = ...
AND VGABE IN (1,6,7,8,9).
SELECT FROM MSEG WHERE MBLNR = EKBE-BELNR
AND MJAHR = EKBE-GJAHR
AND ZEILE = EKBE-BUZEI.
備注:會(huì)計(jì)年度必須被聲明丧枪,所以系統(tǒng)能盡可能高效的經(jīng)由基本的索引訪問(wèn)光涂。
如果會(huì)計(jì)年度丟失,數(shù)據(jù)庫(kù)不再高效的使用條目數(shù)搜索(這是個(gè)問(wèn)題拧烦,
特別對(duì)于多條目的物料文檔忘闻。)如果操作類型VGABE被聲明,這些值又
限制相關(guān)的貨物移動(dòng)恋博。
b)經(jīng)由運(yùn)輸訂單號(hào)
錯(cuò)誤: SELECT FROM MSEG WHERE TANUM = ...
正確: SELECT FROM LTAP WHERE TANUM = ...
SELECT FROM MSEG WHERE MBELN = LTAP-WENUM
AND MJAHR = <requested year>
AND ZEILE = LTAP-WEPOS.
c)經(jīng)由轉(zhuǎn)移需求
錯(cuò)誤: SELECT MSEG WHERE TBNUM = ...
正確: SELECT LTBK WHERE TBNUM = ....
SELECT MSEG WHERE MBLNR = LTBK-MBLNR
AND MJAHR = LTBK-MJAHR.
備注:物料文檔所有條目被返回齐佳。通過(guò)物料編碼來(lái)限制一條物料文檔條目。
d)經(jīng)由供應(yīng)商號(hào)碼
錯(cuò)誤:SELECT FROM MSEG WHERE LIFNR = ...
正確:SELECT EKKO WHERE LIFNR = ....
SELECT EKBE WHERE EBELN = EKKO-EBELN
AND VGABE = '1'.
SELECT MSEG WHERE MBLNR = EKBE-BELNR
AND MJAHR = EKBE-GJAHR
AND ZEILE = EKBE-BUZEI.
備注:在特定的環(huán)境中訪問(wèn)EKKO和EKBE返回多個(gè)數(shù)據(jù)集债沮。在程序中必須考慮到炼吴。用操作類型VGABE=1,
只有采購(gòu)訂單的貨物移動(dòng)被選出疫衩。作為一個(gè)選擇硅蹦,可以用匹配代碼對(duì)象M_MEKKL替代表EKKO(例如
SELECT FROM M_EKKL WHERE LIFNR = ...).訪問(wèn)可以通過(guò)聲明附加限制加以改進(jìn)。
對(duì)于采購(gòu)組織EKORG隧土,采購(gòu)組EKGRP提针,文檔日期BEDAT,采購(gòu)文檔目錄BSTYP曹傀,
訂單類型BSART能提供更多訪問(wèn)選擇辐脖。
3.訪問(wèn)采購(gòu)需求
a)經(jīng)由預(yù)留數(shù)
錯(cuò)誤:SELECT FROM EBAN WHERE EBELN = ....AND EBELP = ....
正確:SELECT FROM EKET WHERE EBELN = .... AND EBELP = ....
SELECT FROM EBAN WHERE BANFN = EKET-BANFN
AND BANFPO = EKET-BANFPO.
4.經(jīng)由購(gòu)貨發(fā)票
a)經(jīng)由采購(gòu)訂單數(shù)
錯(cuò)誤:SELECT FROM RSEG WHERE EBELN = ...and EBELP = ...
正確:SELECT FROM EKBE WHERE EBELN = ...
AND EBELP = ...
AND VGABE IN (2,3,P).
SELECT FROM RSEG WHERE BELNR = EKBE-BELNR
AND GJAHR = EKBE-GJAHR
AND BUZEI = EKBE-BUZEI.
備注:通過(guò)聲明事物類型VGABE,值限制到相關(guān)的移動(dòng)類型皆愉。用GJAHR和BUZEI嗜价,基本索引被RSEG完全使用艇抠。