1.資料夾選擇對話方塊
parameters: p_fpath like rlgrap-filename lower case obligatory
at selection-screen on value-request for p_fpath.
data :
lw_dir type rlgrap-filename,
lw_length type i.
*----- tmp_gui_browse_for_folder
call function 'tmp_gui_browse_for_folder'
importing
selected_folder = lw_dir "folder
exceptions
cntl_error = 1
others = 2.
if sy-subrc <> 0 or lw_dir is initial.
exit.
endif.
lw_length = strlen( lw_dir ) - 1 .
if lw_dir+lw_length(1) = cns_path.
w_path = lw_dir.
else.
concatenate lw_dir cns_path into w_path .
endif.
concatenate w_path 'temp.txt' into p_fpath .
w_path = p_fpath.
2.檔案選擇對話方塊
data: it_tabfile type filetable,
gd_subrcfile type i.
refresh: it_tabfile.
*----- 檔案選擇對話方塊
call method cl_gui_frontend_services=>file_open_dialog
exporting
window_title = '選擇檔案'
default_extension = '*.txt'
default_filename = 'temp.txt'
file_filter = '*.txt'
initial_directory = 'd:\'
multiselection = ' ' "no multiple selection
changing
file_table = it_tabfile
rc = gd_subrcfile.
if sy-subrc <> 0.
exit.
endif.
read table it_tabfile index 1 into p_fpath.
如果 multiselection 引數值不為'',表示可以選擇多個檔案,此時要用loop迴圈從
it_tabfile中獲取各個檔案的完整路徑(含檔名)
3.關於檔案選擇對話方塊,找到另一function tmp_gui_file_open_dialog.
call function 'tmp_gui_file_open_dialog'
exporting
window_title = '選擇檔案'
default_extension = '*.txt'
default_filename = 'temp.txt'
file_filter = '*.txt'
initial_directory = 'c:\'
multiselection = '' "no multiple selection
changing
filetable = it_tabfile
rc = gd_subrcfile "selected file amount
exceptions
cntl_error = 1.
以上呼叫**編譯沒問題,但執行時總是報file_table 引數錯誤,
可是這個引數難道不是和2.中一樣賦值嗎?莫名其妙的abap啊,又讓我不爽
4.按日期條件取憑證的優化**
data: tab_bseg_zj type standard table of typ_bseg with header line.
data: tab_bkpf type standard table of typ_bkpf .
*取本月的憑證號用於過濾bseg的資料.
refresh: tab_bkpf,tab_bseg_zj.
*bkpf中有記賬日期欄位和輸入的期間匹配(bseg中則沒有)
where bukrs = p_bukrs and budat <= l_datl and budat >= l_datf.
*從bseg取數,按憑證號和bkpf關聯
select bseg~dmbtr bseg~belnr bseg~shkzg bseg~xnegp
bseg~anln1 bseg~anln2 bseg~gjahr
from bseg " 獲得本月折舊增減的憑證號、記賬方向和反記賬標記
for all entries in tab_bkpf
where bukrs = p_bukrs
and gjahr = tab_bkpf-budat+0(4)"考慮跨年度的情況
and koart = 'a' " 賬戶型別
and altkt like '001502%' "科目,表示折舊
and belnr = tab_bkpf-belnr.
這裡先把滿足條件的所有憑證全取到tab_bseg_zj裡,然後在後面對其迴圈處理
從而避免了在迴圈中用sql語句訪問資料庫的低效率做法,換句話說,是典型的用空間換時間
(內錶tab_bseg_zj中儲存了大量資料),mseg和mkpf也可以用同樣的做法進行優化。
call function 'ws_upload'
exporting
filename = w_path "file name
filetype = 'dat' "file type
importing
filelength = filelen
tables
data_tab = td_txt
exceptions
others = 1.
選擇資料夾對話方塊
選擇資料夾對話方塊 在乙個專案中用到了選擇資料夾對話方塊,為了方便特意寫了函式來顯示並返回使用者選擇的資料夾的路徑 其中具體引數的含義可以參考http tag.csdn.net tag browseinfo.xml 呼叫時只需要 if folderbrowsedialog struserselect...
開啟資料夾選擇對話方塊
browseinfo bi char szpathname max path char sztitle 選擇路徑 zeromemory bi,sizeof browseinfo bi.hwndowner getsafehwnd bi.pszdisplayname szpathname bi.lpsz...
開啟資料夾選擇對話方塊
當我們想要對檔案操作時,會用到cfile 類和 cfilefind 類。並且呼叫domodal時,會彈出檔案選擇對話方塊,直到選擇某個檔案結束。但是,如果只是想選擇某個資料夾,而不是選擇某個特定檔案,這種方法就行不通。可參照以下 browseinfo bi wchar t buffer max pa...