資料夾選擇對話方塊

2021-06-13 00:42:29 字數 3225 閱讀 6564

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...