作為abaper ,open sql中的select和in 子查詢屬於日常必備的技能。然而,open sql還有一些語法你可能沒用過甚至沒聽過,這些語法用好了可以大大減少**複雜度和提高效能,下面就來看看這些用法吧。
場景1**1取建立日期晚於憑證日期的採購憑證,用於統計補單率。
select eneln bedat aedat into
table lt_ekko from ekko where..
.loop at lt_ekko into ls_ekko.
check ls_ekko-bedat >= ls_ekko-aedat. "檢查憑證日期是否大於等於建立日期
write:/ ls_ekko.
endloop.
**2
select eneln bedat aedat into
table lt_ekko from ekko as a
where a~bedat >= a~aedat.
對比兩段**,第一段將所有訂單資料載入到內錶中在做二次對比,
第二段**在資料庫層面就已經將資料篩選完成,無論是**複雜度還是處理時間都是第二段較好.
場景2**1取物料憑證中沒有沖銷的憑證.
select mblnr zeile gjahr sjahr smbln smblp into lt_mseg from mseg where..
.loop at lt_mseg into ls_mseg.
if ls_mseg-smbln is
not initial. "如果有被沖銷憑證,則將改憑證標識為已沖銷.
ls_mseg01-is_cancled = abap_true.
modify lt_mseg from ls_mseg01 transporting is_cancled where gjahr = ls_mseg-sjahr mblnr = ls_mseg-smbln zeile = ls_mseg-smblp.
endif.
endloop.
*刪除所有標識為已沖銷或被沖銷憑證不為空的記錄
delete lt_mseg where is_cancled = abap_true or smbln is
not initial.
**2
select mblnr zeile gjahr sjahr smbln smblp into lt_mseg from mseg as a
where
not exist (
select
*from mseg as b on a~gjahr = b~sjahr and a~mblnr = b~smbln a~zeile = b~smblp )..
.
對比兩段**,第一段將所有憑證載入到內錶進行比較後排除沖銷憑證,第二段則通過exist
關鍵字從資料庫層面排除了沖銷憑證.明顯第二段處理邏輯**量和處理邏輯都較為簡單.
第二段**由於子查詢中未用到主鍵和索引,因此從效能來說比第一段要差,但這裡只是展示exist
關鍵字的用法,因此對時間不做過多考慮
你不一定知道的UrlPrefix路由規則
接上文,容器內web程式一般會繫結到或http 以確保使用容器ip可以訪問到web應用。正如我們在asp.net core官方映象顯示的,asp.net core程式在容器內80埠監聽請求 web程式啟動後,根據監聽位址urlprefix中的主機元素,會向系統元件http server api註冊不...
逃避不一定躲得過,面對不一定最難過
國王有七個女兒,這七位美麗的公主是國王的驕傲。她 們那一頭烏黑亮麗的長髮遠近皆知。所以國王送給她們每人一百個漂亮的髮夾。有一天 早上,大公主醒來,一如往常地用髮夾整理她的秀髮,卻發現少了乙個髮夾,於是她偷偷地到了二公主的房裡,拿走了乙個髮夾。二公主發現少了乙個髮夾,便到三公主房裡拿走乙個髮夾 三公主...
你不一定知道的幾個很有用的 Git 命令
這裡給大家分享一些很有用的git命令,其中很多用法你可能都不知道,無論你是工作在團隊環境中或在您的個人專案中,這些命令將對你幫助很大,讓你可以更加高效的進行專案開發,更輕鬆愉快的工作和生活。1.匯出最後一次提交修改過的檔案 我一直在使用這個命令定期進行傳送給其他人進行審查 整合。這條命令將把近期提交...