一、select語句中使用for all entries in需要注意的問題
在abap程式設計中,使用for all entries in是必不可少的語句,使用這個語句是先取出一些資料放到乙個內錶中,然後參考這張內錶的資料取出其它的資料,這在abap開發中非常常用,例如:
data: begin of ig_bseg occurs 0,
werks like bseg-werks,
belnr like bseg-belnr,
gjahr like bseg-gjahr,
dmbtr like bseg-dmbtr,
end of ig_mseg.
if not ig_bkpf is initial.
select werks belnr gjahr dmbtr
into corresponding fields of table ig_bseg
from bseg for all entries in ig_bkpf
where werks = ig_bkpf-werks
and belnr = ig_bkpf-belnr
and gjahr = ig_bkpf-gjahr.
endif.
需要注意以下問題
1、首先,必須要判斷for all entries in後面的內錶是否為空,如果它為空的話,那麼在where條件中的與內錶中字段進行比較的結果全部為真,也就是全部滿足條件,這會導致取出非常多的資料,極大地影響系統的效能。
2、對於上例,按照邏輯分析可以取出某個憑證的所有行專案,但是實際情況會與你預期的不一致,如果某個憑證的多個行專案的dmbtr值是完全一樣的,那麼在內表ig_bseg中你只會得到一行記錄,而不是多行,它自動使用了distinct,或者說刪除了重複的行,這是個非常致命的問題,會導致你的程式邏輯錯誤,而且很難以查詢,解決的辦法就是要保證內錶ig_bseg中取出的資料必須要有主鍵字段,在本例中,需要再新增buzei欄位。
二、自建表和從系統外匯入資料需要注意的問題
1、自建表中建立文字型別的字段(自己建立domain)時,需要注意是否允許字段可以保留文字的大小寫狀態,否則缺省會全部轉換為大寫字母。
2、在某個建立的自建表中,某個欄位的資料元素為matnr(物料編號),型別為char(18),但是匯入的資料的長度只有char(12),比資料庫欄位要短,如果直接匯入,不進行任何處理。
2.1 首先匯入資料肯定不會出現錯誤,但是在使用中會出現問題,例如我通過匯入進去的物料編號找物料描述,是找不到資料的,因為我們匯入物料編號的長度只有12位,而系統標準表中的物料編號前面都是用0補齊18位的,所以我們在匯入資料時,有些字段不能直接寫入資料庫,需要進行一定的處理。
2.2 我們可以呼叫系統的函式來實現補0這個功能。
conversion_exit_alpha_input 對話退出alpha,外部->內部 這個是補0函式
conversion_exit_alpha_output 對話退出alpha,內部->外部 這個是除0函式
函式呼叫非常簡單,如下
call function 'conversion_exit_alpha_input'
exporting
input = ig_upload-hkont_nis
importing
output = wa_zdflnis-hkont_nis
三、提高程式執行效率的一些小方法
1、 我們在abap程式中定義的內錶,在我們從資料庫中查詢資料的時候,查詢資料的順序最好可以和內錶定義的順序一樣,這樣可以提高效率的允許效率。
2、 我們在查詢簇表資料的時候,例如bseg表,對於乙個簇表來說,除了主鍵專案外,其他專案都被編輯到乙個長文字專案中,一起儲存在表簇rfblg中的vardata專案中,這就決定了作為簇表的bseg無法再建立鍵值以外的索引(index),而這張表對我們來說,很多報表程式要用到這張表,而如果直接用其他專案的字段查詢bseg表的資料,效率非常的底下,所以我們需要在另外的表中找到bseg的主鍵專案,來加快查詢bseg表的速度。
另外最有效率的方法是改善應用和需求,要使需求合理規範,這才能使效率達到最高化。
socket程式設計需要注意的問題
1.connect tcp sock stream 是連線到服務端,udp sock dgram 是把本地位址埠和服務端的對應起來,並沒有建立連線 connect前也可以用bind 繫結本地位址埠到clientfd,bind的引數是本地位址埠 不使用bind則會自動繫結個 2.如果是udp,則可以不...
android 開發部分需要注意的小問題
android 由於版本的更迭,部分操作需要有一些小改動,通常只在專案開始的時候用一下,時間長了容易忘記,在此做個筆記。目錄 1 android 檔案操作 2 android 相機拍照 3 flutter修改sdk路徑 android 開發中經常需要讀取檔案,除了正常的許可權變更獲取之外還需要在 a...
一,初次接觸html css需要注意的小問題
html最基礎的,入門學習的是標籤,常用的標籤有 定義錨。定義粗體字。單標籤 定義簡單的折行。定義按鈕 push button 定義文件中的節。不贊成使用。定義文字的字型 尺寸和顏色。定義供使用者輸入的 html 表單。定義 html 標題。定義斜體字。定義內聯框架。定義影象。定義輸入控制項。定義段...