如何建立SAP F4搜索帮助

如何建立SAP F4搜索帮助,第1张

在写ABAP代码的时候,我们经常会遇到这样的问题,当你自己在数据字典中建立了一个配置表时,你在屏幕上引用了表中的某个字段.同时你想要在屏幕上提供选择,让用户可以直接选择而不用输入内容.这时我们就会用到-F4搜索帮助.接下来我将给大家介绍两种建立搜索帮助的方法. 方法一:在ABAP数据字段中直接建立相关字段的搜索帮助.具体步骤:1.事务码SE11打开数据字典,选中搜索帮助,填写名称,点击创建.2.填写基本相关信息,搜索帮助描述,取数的表,显示的对话框类型.3.填写搜索帮助参数,字段名称,输入输出属性,显示位置次序,数据元素.4.保存,激活.5.打开要建立搜索帮助的表,选中要建立搜索帮助的字段,点击SRCH HELP,填入你建立好的搜索帮助的名称.6.保存,激活表.7.重新保存要用到表中搜索帮助的程序,激活后就可以使用搜索帮助来选择值了.注:此方法比较直观,但是有相关的前提:要添加搜索帮助的表中的字段,必须要有参照的数据元素. 没有数据元素无法建立搜索帮助.所以前提就是我们要事先维护好数据元素. 方法二:在ABAP程序中直接写相关代码来实现.具体步骤:1.添加VALUE-REQUEST事件.示例代码:AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_XILEI-LOW. PERFORM FRM_XILEI_SELECT.2.在子程序中实现搜索帮助功能.示例代码:FORM FRM_XILEI_SELECT .*细类的搜索帮助DATA: RT_TAB LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.DATA: BEGIN OF IT_XILEI OCCURS 0, XILEI LIKE ZSFQ10-XILEI, END OF IT_XILEI.SELECT XILEI INTO CORRESPONDING FIELDS OF TABLE IT_XILEI FROM ZSFQ10.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' EXPORTING RETFIELD = 'XILEI' DYNPPROG = SY-REPID DYNPNR = SY-DYNNR DYNPROFIELD = 'S_XILEI-LOW' VALUE_ORG = 'S' CALLBACK_PROGRAM = SY-REPID TABLES VALUE_TAB = IT_XILEI RETURN_TAB = RT_TAB EXCEPTIONS PARAMETER_ERROR = 1 NO_VALUES_FOUND = 2 OTHERS = 3 .IF SY-SUBRC <>0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " FRM_XILEI_SELECT 3.保存,激活程序后,即可在屏幕上使用搜帮助了.注:此方法不是太直观,但是不用在数据字典中建立相关的数据,只需在程序中动态提取显示. 总结:两种实现方法,均可以实现搜索帮助的功能,各有特点,可以视具体情况使用.

1、选择字段参照数据库内标准字段,系统会自带F4选择帮助。

2、在报表中增加一个事件:AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILEDNAME "P_FILEDNAME是要增加F4帮助的字段名

在该事件中调用函数:CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

想看实例或代码,你可以搜索这个函数名、事件名或搜索关键字"ABAP选择屏幕 F4帮助"。

第一种办法:对表中某字段的引用,设置ref_table、ref_field,将自动触发该字段所带的搜索帮助。\x0d\x0a第二种办法:就是利用自定义代码来实现ALV的搜索帮助,显然它的功能更强大、更灵活。针对在OO ALV中实现搜索帮助,\x0d\x0a其主要步骤有:\x0d\x0a1、在ALV的事件处理类中添加个Method,其DEFINITION如下:\x0d\x0ahandle_onf4 FOR EVENT onf4 OF cl_gui_alv_grid\x0d\x0a IMPORTING e_fieldname es_row_no er_event_data.\x0d\x0a其IMPLEMENTATION中就是我们希望执行的代码,用来d出可选择对话框。e_fieldname代表用户点击了ALV的哪个字段来触发搜索帮助,es_row_no代表了当前行信息,\x0d\x0aes_row_no-row_id就是ALV中内表记录的INDEX。er_event_data代表了当前用户对ALV进行了哪些编辑的信息。在Method的最后,记得加上\x0d\x0aer_event_data->m_event_handled = 'X'.\x0d\x0a通知系统搜索事件处理完毕,这样就不会调用系统标准的Search Help。\x0d\x0a2、那就是对需要自定义搜索帮助的字段,设置其field catalog时:\x0d\x0als_fieldcat-f4availabl = 'X'.\x0d\x0a3、在创建ALV对象之后,要对需要自定义搜索帮助的字段进行注册。\x0d\x0aDATA: lt_f4 TYPE lvc_t_f4 WITH HEADER LINE.\x0d\x0aCLEAR lt_f4.\x0d\x0alt_f4-fieldname = 'FIELD_NAME'.\x0d\x0alt_f4-register = 'X'.\x0d\x0alt_f4-chngeafter = 'X'.\x0d\x0aAPPEND lt_f4.\x0d\x0aCALL METHOD mygrid->register_f4_for_fields\x0d\x0a EXPORTING\x0d\x0ait_f4 = lt_f4[].\x0d\x0alvc_s_f4中的字段getbefore和changeafter应该代表是否触发data_changed事件。\x0d\x0a4、然后我们为其指定事件处理类(假设go_evt_receiver是自定义事件处理类的一个对象):\x0d\x0aCREATE OBJECT go_evt_receiver.\x0d\x0aSET HANDLER go_evt_receiver->handle_onf4 FOR go_alv_grid.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11868380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存