- 自建搜索帮助
SELECT *
INTO CORRESPONDING FIELDS OF TABLE gt_ZDWSCUS
FROM ZDWSCUS_14062.
call function 'F4IF_INT_TABLE_VALUE_REQUEST'
exporting
retfield = 'ZNAME1' "表格要显示的字段
dynpprog = sy-repid "返回的程序
dynpnr = sy-dynnr "屏幕
dynprofield = 'ZNAME1' "往页面回填值的地方
value_org = 'S' "显示类型
tables
value_tab = GT_ZDWSCUS "传进去的表格 帮助的内表
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3. .
根据不同的要求,可以定义GT_ZDWSCUS里值(可查询可传值)
给屏幕建立搜索帮助
以下代码在选择屏幕的逻辑流里面写
FIELD zname1 MODULE ztable_user_zname1 ON REQUEST.
"触发事件SEARCH HELP
MODULE user_command_9000."系统自定义的触发事件
PROCESS ON VALUE-REQUEST.
FIELD zname1 MODULE user_command_zname1."双击生成主函数写搜索帮助的程序
优点:操作性较强,处理方便
缺点:应用范围小
-
SE11建立搜索帮助
image.png
image.png
image.png
带过滤的搜索帮助
Tcode:se11创建视图
image.png
image.png
此处的选择条件相当于select后面的where条件,这个视图中的数据都是满足条件的视图。
Tcode:se11创建搜索帮助
image.png
出口增强搜索帮助
有时根据业务要求取不同表里的不同数据,但从se11筛选是做不到的,就要写出口增强。
首先写一个函数组,定义一个函数模块,如下:
image.png
image.png
定义个内表,对内表的数据进行处理(也就是说你要的数据存放在内表中)
然后调函数 'F4UT_RESULTS_MAP'
" 该函数的作用是将内表 lt_tab 中的数据转换成 record_tab ,即将某内表中的数据显示在命中清单中
" 结果展示
CALL FUNCTION 'F4UT_RESULTS_MAP'
TABLES
SHLP_TAB = SHLP_TAB
RECORD_TAB = RECORD_TAB
SOURCE_TAB = GT_TAB "自定义内表
CHANGING
SHLP = SHLP
CALLCONTROL = CALLCONTROL
EXCEPTIONS
ILLEGAL_STRUCTURE = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE 'I' NUMBER SY-MSGNO WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
RETURN.
ELSE.
CALLCONTROL-STEP = 'DISP'.
ENDIF.
Tcode:se11
image.png
- 搜索帮助联动
一般做搜索帮助我们需要回车才能带出和搜索帮助相关的值,例:
点击物料的搜索帮助回车带出物料描述,现在帮你省掉敲回车的动作,物料和描述同步粗来啦!
首先在PAI里写:
PROCESS ON VALUE-REQUEST.
FIELD ZPRPEOPL MODULE USER_NAME_F4-1."问题提出人
MODULE USER_NAME_F4-1 INPUT.
DATA: RETURN_TAB LIKE DDSHRETVAL OCCURS 1 WITH HEADER LINE,
FIELD_TAB LIKE DFIES OCCURS 1 WITH HEADER LINE,
DYNPFIELDS LIKE DYNPREAD OCCURS 3 WITH HEADER LINE.
*取开发人员(名字)
SELECT
USERID "用户名字ID
USERNAME "用户名ID描述(名字)
INTO CORRESPONDING FIELDS OF TABLE GT_UNAME
FROM ZVXXDEV_UNAME
.
SORT GT_UNAME BY USERID USERNAME.
DELETE ADJACENT DUPLICATES FROM GT_UNAME.
*&----调用展示函数
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
* DDIC_STRUCTURE = ' '
RETFIELD = 'USERID' "表格要显示的字段
* PVALKEY = ' '
DYNPPROG = SY-REPID "返回才程序
DYNPNR = SY-DYNNR "屏幕
DYNPROFIELD = 'ZPRPEOPL' "往页面回填值的地方
* STEPL = 0
* WINDOW_TITLE =
* VALUE = ' '
VALUE_ORG = 'S'
* MULTIPLE_CHOICE = ' '
* DISPLAY = ' '
CALLBACK_PROGRAM = SY-REPID "当前程序
CALLBACK_FORM = 'BO_CALLBACK_FORM' "回调函数
* CALLBACK_METHOD =
* MARK_TAB =
* IMPORTING
* USER_RESET =
TABLES
VALUE_TAB = GT_UNAME
FIELD_TAB = FIELD_TAB
RETURN_TAB = RETURN_TAB
** DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDMODULE.
FORM BO_CALLBACK_FORM TABLES RECORD_TAB STRUCTURE SEAHLPRES
CHANGING SHLP TYPE SHLP_DESCR_T
CALLCONTROL LIKE DDSHF4CTRL.
DATA: INTERFACE LIKE LINE OF SHLP-INTERFACE,
FP LIKE LINE OF SHLP-FIELDPROP.
READ TABLE SHLP-INTERFACE INTO INTERFACE INDEX 1.
INTERFACE-SHLPFIELD+4(1) = '2'.
INTERFACE-VALFIELD = 'ZPRPEOPL2'.
APPEND INTERFACE TO SHLP-INTERFACE.
ENDFORM.
网友评论