ABAP F4帮助.docx
《ABAP F4帮助.docx》由会员分享,可在线阅读,更多相关《ABAP F4帮助.docx(12页珍藏版)》请在冰豆网上搜索。
![ABAP F4帮助.docx](https://file1.bdocx.com/fileroot1/2023-4/16/985be539-814e-4659-8cba-f6d28b560bd6/985be539-814e-4659-8cba-f6d28b560bd61.gif)
ABAPF4帮助
ABAP中的F4帮助怎么用?
Admin
2010年9月16日
名人名言:
个人如果但靠自己,如果置身于集体的关系之外,置身于任何团结民众的伟大思想的范围之外,就会变成怠惰的、保守的、与生活发展相敌对的人。
——高尔基
ABAP中的F4帮助怎么用?
ABAP中的F4帮助怎么用?
当我们在sap的界面上,焦点放到一个字段上的时候,按F4,会出现选择或者搜索的界面,这就是abap中的f4帮助。
有多种实现f4帮助的方法,现在就把我指导的一点点说出来:
1,固定值。
我们在Domain中可以定义valuerange,在valuerange中定义的值,就可以出现在f4帮助中。
这是最简单的实现f4帮助的方法。
2,数据类型关联。
加入我们在选择屏幕上定义一个dats类型的参数,她就自动调用了日期类型的f4帮助。
3,se11创建f4帮助。
(
将se11创建的搜索帮助挂到表上的时候,又可以分为以下三种类型:
用检查表实现输入帮助
字段的外部搜索帮助附件
数据元素的明确搜索帮助附件
她们之间有啥区别,我也不知道。
等我知道了再补充。
)
用se11创建的f4帮助可以分为两类:
基本搜索帮助
集中搜索帮助
基本搜索帮助是搜索帮助的最小单元,集中搜索帮助还可以包括集中搜索帮助,也可以包括基本搜索帮助。
在基本搜索帮助中可以定义数据来源,但是集中搜索帮助不可以定义数据来源。
无论是基本搜素偶帮助还是集中搜索帮助都包含输出输出字段定义,并可以定义搜索帮助exit,用于调用一个远程的functionmodule来对数据进行过滤和处理。
如果将这些搜索帮助与表挂上之后,我们在使用的时候就会自动出现该搜索帮助。
在synpro程序中。
也可以通过属性(属性名叫搜索帮助)为字段重新指定自定义的搜索帮助
也可以在选择屏幕或者screen中重新指定搜索帮助,下面举几个例子来说明使用的方法
一,根据搜索帮助的名字来指定搜索帮助
1选择屏幕
REPORTz_ljc_078LINE-SIZE200.
parameters:
mama(18)typec.
INITIALIZATION.
ATSELECTION-SCREENonvalue-requestformama.
DATA:
v_mamaLIKEhelp_info-dynprofld.
v_mama="MAMA".
CALLFUNCTION"F4IF_FIELD_VALUE_REQUEST"
EXPORTING
tabname=""
fieldname=""
SEARCHHELP="ZFI_CRC_001"
DYNPPROG=SY-REPID
DYNPNR=SY-DYNNR
DYNPROFIELD=v_mama
.
start-OF-SELECTION.
writemama.
2dynproscreen
流逻辑:
PROCESSBEFOREOUTPUT.
MODULEINIT.
PROCESSAFTERINPUT.
PROCESSONVALUE-REQUEST.
FIELDmatnrMODULEVALUE_matnr.
report:
MODULEinitOUTPUT.
progname=sy-repid.
dynnum=sy-dynnr.
ENDMODULE.
MODULEvalue_matnrINPUT.
CALLFUNCTION"F4IF_FIELD_VALUE_REQUEST"
EXPORTING
tabname=""
fieldname=""
SEARCHHELP="MAT1"
DYNPPROG=SY-REPID
DYNPNR=SY-DYNNR
DYNPROFIELD="MATNR"
ENDMODULE.
无论是在选择屏幕或者是dynpro中,如果指定了searchhelp属性,则tabname和fieldname属性就不起作用了。
当不指定searchhelp属性,而制定了tabname和fieldname属性,则会调用tabname-fieldname挂接的搜素偶帮助。
CALLFUNCTION"F4IF_FIELD_VALUE_REQUEST"
EXPORTING
tabname="mara"
fieldname="matnr"
*SEARCHHELP=""
DYNPPROG=SY-REPID
DYNPNR=SY-DYNNR
DYNPROFIELD="MATNR"
二,用内表生成f4帮助
1选择屏幕
TYPES:
BEGINOFty_aenr,
aennrtypeaenr-aennr,
datuvtypeaenr-datuv,
aenamtypeaenr-aenam,
aegrutypeaenr-aegru,
ccarttypeaenr-ccart,
aetxttypeaenr-aetxt,
ENDOFty_aenr.
DATA:
gt_aenrTYPETABLEOFty_aenr,
gs_aenrTYPEty_aenr.
INITIALIZATION.
PERFORMfrm_read_aenr.
*获得图幅的f4帮助
ATSELECTION-SCREENONVALUE-REQUESTFORso_aennr-low.
PERFORMfrm_search_help_file.
FORMfrm_read_aenr.
DATAl_objnrTYPEjest-objnr.
DATAl_lineTYPEbsvx-sttxt."订单状态
SELECTa~aennra~datuva~aenama~aegrua~ccarta~aetxt
INTOTABLEgt_aenr
FROMaenrasa
innerjoinUSGRP_USERasc
ona~annam=c~bname
wherec~usergroup="CCCAR".
loopatgt_aenrintogs_aenr.
CLEAR:
l_objnr,l_line.
***组建更改编号对象号
CONCATENATE"CD"gs_aenr-aennrINTOl_objnr.
***获得系统状态,调用函数
CALLFUNCTION"STATUS_TEXT_EDIT"
EXPORTING
objnr=l_objnr
spras=sy-langu
IMPORTING
line=l_line
EXCEPTIONS
object_not_found=1
OTHERS=2.
***判断该更改单是否批准
IFsy-subrc=0.
SEARCHl_lineFOR"ECOR".
IFsy-subrc<>0.
DELETEgt_aenr."没有下达的就删掉
ENDIF.
ENDIF.
endloop.
.
ENDFORM."frm_read_proj
FORMfrm_search_help_file.
DATA:
v_aennrLIKEhelp_info-dynprofld.
v_aennr="SO_aennr".
CALLFUNCTION"F4IF_INT_TABLE_VALUE_REQUEST"
EXPORTING
retfield="AENNR"
value_org="S"
dynprofield=v_aennr
dynpprog=sy-repid
dynpnr=sy-dynnr
TABLES
value_tab=gt_aenr
EXCEPTIONS
parameter_error=1
no_values_found=2
OTHERS=3.
*IFsy-subrc<>0.
*WRITE:
"error".
*ENDIF.
ENDFORM."frm_search_help_file
2dynproscreen:
流逻辑:
PROCESSBEFOREOUTPUT.
MODULEINIT.
PROCESSAFTERINPUT.
PROCESSONVALUE-REQUEST.
FIELDaenamMODULEVALUE_aenam.
report:
TYPES:
BEGINOFvalues,
aenamTYPEmara-aenam,
matnrTYPEmara-matnr,
ENDOFvalues.
DATA:
matnr(18)TYPEc,
aenam(12)TYPEc.
DATA:
prognameTYPEsy-repid,
dynnumTYPEsy-dynnr
.
CALLSCREEN100.
MODULEinitOUTPUT.
progname=sy-repid.
dynnum=sy-dynnr.
ENDMODULE.
MODULEvalue_aenamINPUT.
selectaenammatnrintotablevalues_tabfrommarawherematnrBETWEEN"000000000000001199"and"000000000000001250".
CALLFUNCTION"F4IF_INT_TABLE_VALUE_REQUEST"
EXPORTING
retfield="AENAM"
dynpprog=progname
dynpnr=dynnum
dynprofield="AENAM"
value_org="S"
TABLES
value_tab=values_tab.
ENDMODULE.
当然,也可以根据一个字段的选择过滤另一个字段的f4帮助的数据。
下面给出一个在dynproscreen中的例子。
在选择屏幕上就不给出例子了。
实现的方法都差不多。
甚至更简单。
流逻辑:
PROCESSBEFOREOUTPUT.
*MODULESTATUS_0100.
*
MODULEINIT.
PROCESSAFTERINPUT.
*MODULEUSER_COMMAND_0100.
MODULECANCELATEXIT-COMMAND.
PROCESSONVALUE-REQUEST.
FIELDmatnrMODULEVALUE_matnr.
FIELDaenamMODULEVALUE_aenam.
report:
*&
TYPES:
BEGINOFvalues,
aenamTYPEmara-aenam,
matnrTYPEmara-matnr,
ENDOFvalues.
DATA:
matnr(18)TYPEc,
aenam(12)TYPEc.
DATA:
prognameTYPEsy-repid,
dynnumTYPEsy-dynnr,
dynpro_valuesTYPETABLEOFdynpread,
field_valueLIKELINEOFdynpro_values,
values_tabTYPETABLEOFvalues.
CALLSCREEN100.
MODULEinitOUTPUT.
progname=sy-repid.
dynnum=sy-dynnr.
CLEAR:
field_value,dynpro_values.
field_value-fieldname="AENAM".
APPENDfield_valueTOdynpro_values.
ENDMODULE.
MODULEcancelINPUT.
LEAVEPROGRAM.
ENDMODULE.
MODULEvalue_aenamINPUT.
selectaenammatnrintotablevalues_tabfrommarawherematnrBETWEEN"000000000000001199"and"000000000000001250".
CALLFUNCTION"F4IF_INT_TABLE_VALUE_REQUEST"
EXPORTING
retfield="AENAM"
dynpprog=progname
dynpnr=dynnum
dynprofield="AENAM"
value_org="S"
TABLES
value_tab=values_tab.
ENDMODULE.
MODULEvalue_matnrINPUT.
CALLFUNCTION"DYNP_VALUES_READ"
EXPORTING
dyname=progname
dynumb=dynnum
translate_to_upper="X"
TABLES
dynpfields=dynpro_values.
READTABLEdynpro_valuesINDEX1INTOfield_value.
SELECTAENAMMATNR
FROMMARA
INTOCORRESPONDINGFIELDSOFTABLEvalues_tab
WHEREAENAM=field_value-fieldvalue.
CALLFUNCTION"F4IF_INT_TABLE_VALUE_REQUEST"
EXPORTING
retfield="AENAM"
dynpprog=progname
dynpnr=dynnum
dynprofield="MATNR"
value_org="S"
TABLES
value_tab=values_tab.
ENDMODULE.
好了,关于f4帮助,目前就知道这么一点点。
就讲这么多吧。
f4帮助与check没有关系,只是用来搜索数据,并不进行数据的检查!