搜索帮助
當(dāng)選擇屏幕上的一個字段所參考的數(shù)據(jù)元素沒有建立搜索幫助時,可以手工建立一個:
1、在se11創(chuàng)建一個搜索幫助ZAUTEST,需要輸入:
(1)描述;
(2)選擇方法:即搜索幫助顯示字段所在的透明表;
(3)搜索幫助參數(shù):即搜索幫助要顯示的字段;
(4)IMP:輸入字段,勾上即表示顯示該字段;
(5)EXP:輸出字段,勾上即表示該字段是搜索幫助需要的輸入字段;
??????? (6)Lpos:搜索幫助下半部分字段排序;Spos:搜索幫助上半部分字段排序。
如下圖:
在Dialog屏幕中給輸入字段建立搜索幫助,有以下三種情況:
一:直接使用系統(tǒng)已有的搜索幫助,對于系統(tǒng)已存在搜索幫助的輸入字段可直接使用:在屏幕格式器里雙擊輸入字段框,在其“屬性”欄的“搜索幫助”框內(nèi)填入該字段的搜索幫助名稱。如物料“matnr”的搜索幫助名稱為“MAT1”。注意:MAT1一定要大寫,對于所有在屏幕輸入的字符,不管以任何形式輸入都要大寫,否則系統(tǒng)是不認(rèn)識的,就如在代碼里引號內(nèi)的字符串要大寫才正確一樣。
二:自建搜索幫助,其過程如下:
1、在dialog屏幕的邏輯流里在user_command后定義module,如下:
process before output.
...
process after input.
module user_command_0100.
process on value-request. "輸入字段的響應(yīng)
field t_pline module f4_help_for_pline. "“t_plnnr”是輸入字段的“name”,“f4_help_for_pline”是module名,自己隨便起吧
2、雙擊“f4_help_for_pline”創(chuàng)建該module,這時進入程序代碼編輯,module如下:
module f4_help_for_pline input.
? call function 'F4IF_INT_TABLE_VALUE_REQUEST' "調(diào)用函數(shù)
??? exporting
????? retfield??? = 'PLINE'? "搜索幫助內(nèi)表要輸出的的幫助字段名,注:要大寫
????? dynpprog??? = sy-repid
????? dynpnr????? = sy-dynnr
*????? dynprofield = ''
????? value_org?? = 'S'
??? tables
????? value_tab?? = ithp_pline. "存儲搜索幫助內(nèi)容的內(nèi)表
endmodule.???????????????? " f4_help_for_pline? INPUT
注:“retfield”的內(nèi)表輸出字段的名字要和輸入字段保持一致,并最好和透明表的字段名一致,否則彈出的搜索幫助會顯示不了字段名。
3、在屏幕輸出前或在上一屏幕進入本屏幕的動作發(fā)生后,取得搜索幫助的內(nèi)容,如下:
??? clear ithp_pline[].
??? select pline pltxt
???? into corresponding fields of table ithp_pline
???? from afpo
???? where dwerk = t_werks
???? and matnr = t_matnr.
內(nèi)表ithp_pline有兩個字段pline、pltxt即是搜索幫助將顯示的兩個列,其中ithp_pline是輸入字段。
三:聯(lián)動搜索幫助的建立:有兩個輸入字段要建立搜索幫助,并且這兩個字段是相互關(guān)聯(lián)的,選擇一個字段的輸入值同時也選擇了另一個字段的值,比如順序與工序的關(guān)系必需是相互的。
1、定義
data:field_tab_vgn type dfies occurs 0,
???? dynpfld_mapping_vgn type dselc occurs 0,
???? wa_map_vgn type dselc,
???? field_tab_pln type dfies occurs 0,
???? dynpfld_mapping_pln type dselc occurs 0,
???? wa_map_pln type dselc.
2、在dialog屏幕的邏輯流里在user_command后定義module,如下:
process before output.
...
process after input.
module user_command_0100.
process on value-request.
field:it_bg-plnfl module f4_help_for_vornr, "順序、工序的聯(lián)動搜索
????? it_bg-vornr module f4_help_for_vornr.
3、雙擊“f4_help_for_vornr”創(chuàng)建該module,這時進入程序代碼編輯,module如下:
module f4_help_for_vornr input.
? call function 'F4IF_INT_TABLE_VALUE_REQUEST'
??? exporting
????? retfield??? = 'PLNFL'? "搜索幫助要輸出的的幫助字段名
????? dynpprog??? = sy-repid
????? dynpnr????? = sy-dynnr
????? dynprofield = 'T_PLNFL'?? "“T_PLNFL”為輸入字段,在此用T_VORNR也可以但上面的retfield名也要改
????? value_org?? = 'S'
??? tables
????? field_tab?? = field_tab_vgn? "聯(lián)動關(guān)系表
????? dynpfld_mapping = dynpfld_mapping_vgn "存儲聯(lián)動內(nèi)容的內(nèi)表
????? value_tab?? = ithp_vgn. "存儲搜索幫助的內(nèi)表
endmodule.???????????????? " f4_help_for_vornr? INPUT
4、在屏幕輸出前或在上一屏幕進入本屏幕的動作發(fā)生后,取得搜索幫助的內(nèi)容,如下:
?? clear ithp_vgn[].
?? select plnfl vornr ltxa1
??? into corresponding fields of table ithp_vgn
??? from afko
??? inner join afvc on afvc~aufpl = afko~aufpl
??? where afko~aufnr = t_aufnr.
? "調(diào)用聯(lián)動函數(shù)
? call function 'ZSET_F4_FIELD_FROM_VALUE_TAB'
??? tables
????? value_tab = ithp_vgn?????? "存儲搜索幫助的內(nèi)表
????? field_tab = field_tab_vgn. "聯(lián)動關(guān)系表
? clear dynpfld_mapping_vgn[].
? wa_map_vgn-fldname = 'PLNFL'.? "幫助內(nèi)表字段
? wa_map_vgn-dyfldname = 'T_PLNFL'. "輸入字段
? append wa_map_vgn to dynpfld_mapping_vgn.
? wa_map_vgn-fldname = 'VORNR'.
? wa_map_vgn-dyfldname = 'T_VORNR'.
? append wa_map_vgn to dynpfld_mapping_vgn.
總結(jié)
- 上一篇: 数据元素和基本类型对应关系
- 下一篇: SAP 常用查看库存的T-CODES