ABAP 中的搜索帮助

https://blog.csdn.net/u011576750/article/details/50999078

一.简介:在abap中,用到的搜索帮助个人遇到的情况如下,进行简要总结进行记录: 
1.选中屏幕中的搜索帮助 
(1).选择屏幕中的搜索帮助个人理解是指选择屏幕中的字段可以提供用户选择功能。有些字段,例如公司,日期等可以自动带出搜索帮助,这些都是基于数据元素或者数据域等的搜索帮助,如图: 

(2).有些字段我们就需要自己实现搜索帮助了,常用的如:在我们上传excel等数据的时候得到文件路径的选择帮助,主要使用的代码如下:

"选择屏幕字段
PARAMETERS :
P_FILE LIKE RLGRAP-FILENAME MODIF ID M1. "文件目录 *&--------------------------------------------------------*
*& 触发选择屏幕中自定义事件
*&--------------------------------------------------------*
AT SELECTION-SCREEN.
*&---文件路径搜索帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = '' " 输入的路劲
IMPORTING
FILE_NAME = P_FILE. " 输出路径

(3).非上传路径字段的选择帮助,主要用到的代码片段如下:

"屏幕事件中
*&--------------------------------------------------------*
*& 实现搜索帮助
*&--------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_SAKNR.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'SAKNR' "搜索帮助内表要输出的帮助字段名
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'P_SAKNR'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_SKAT. "存储搜索帮助内容的内表
IF SY-SUBRC <> 0.
MESSAGE '没有相关搜索帮助' TYPE 'I'.
ENDIF.

2.ALV中的选择帮助(例子使用OOALV) 
(1).如果ALV中的需要搜索帮助的字段所在的表有提供搜索帮助,例如:MKAL-MATNR,其中的搜索帮助是参考MARA表的MATNR,而且还带有自动检查编码是否合法的功能,那么我们就可以在设置fieldecat的时候针对字段设置:

   WA_FIELDCAT-REF_FIELD = 'MKAL'.
WA_FIELDCAT-REF_TABLE = 'MATNR'.
  • 1
  • 2

这样就自动实现了搜索帮助功能。 
(2).如果标准的搜索帮助满足不了需求,并且有自己的自建表用到了这个字段,那么我们可以自己创建一个搜索帮助提供给自定义的数据元素,步骤如下: 
1).SE11-创建搜索帮助,如图: 
 
点击创建之后,简单的我们就创建‘基本索引搜索帮助’,‘集合搜索帮助’是用多个基本或者集合搜索帮助创建的,这里不做介绍: 
 
接下来,在如下图中输入:描述(自定义),选择方法(字段参考的表名如果有文本表会自动带出,就可以在选择帮助中使用描述等),对话类型、快捷键根据自己的需要选择,搜索帮助出口是自己创建的一个function,实现搜索帮助的增强(必须参考F4IF_SHLP_EXIT_EXAMPLEH函数接口,可以复制出来然后修改),最后填入你要在搜索帮助中出现的字段(参数输入输出,输出坐标等) 

输入好以上内容后,保存激活,就可以在自建表中使用此搜索帮助了,如下图:在对应的数据元素上添加搜索帮助: 
 
然后在需要实现搜索帮助的alv字段的fieldcat中依然要添加如下代码:

   WA_FIELDCAT-REF_FIELD = '自建表名'.
WA_FIELDCAT-REF_TABLE = '参考字段'.

(3).有的时候,SE11创建的搜索帮助也不能完全适用所有情况,比如上面的例子中CRHD表并没有对应的文本表,所以带不出工作中心的描述,如果业务要求搜索帮助的时候一定要有描述出来,那么我们可以使用下面的方法实现:为alv创建搜索帮助事件,然后注册事件,最后实现事件,步骤如下:

"1.定义搜索帮助展示的内表

TYPES : BEGIN OF T_CRHD,
WERKS LIKE CRHD-WERKS,
VERWE LIKE CRHD-VERWE,
ARBPL LIKE CRHD-ARBPL,
KTEXT LIKE CRTX-KTEXT,
END OF T_CRHD. DATA : IT_CRHD TYPE TABLE OF T_CRHD,
WA_CRHD LIKE LINE OF IT_CRHD. "2.获得数据用于搜索帮助
"得到工作中心搜索帮助所需内表
SELECT
A~WERKS
A~VERWE
A~ARBPL
B~KTEXT
INTO CORRESPONDING FIELDS OF TABLE IT_CRHD
FROM CRHD AS A
JOIN CRTX AS B ON B~OBJTY = A~OBJTY AND B~OBJID = A~OBJID
WHERE A~ARBPL LIKE 'ZRP%' AND B~SPRAS = SY-LANGU. "3.定义响应事件
*&--------------------------------------------------------*
*& CLASS LCL_EVENT_HANDLER DEFINITION
*&--------------------------------------------------------*
* TEXT alv事件定义
*---------------------------------------------------------*
CLASS LCL_EVENT_HANDLER DEFINITION.
PUBLIC SECTION.
METHODS: *--工作中心搜索帮助
HANDLE_ON_F4_HELP_9000
FOR EVENT ONF4 OF CL_GUI_ALV_GRID
IMPORTING E_FIELDNAME ES_ROW_NO ER_EVENT_DATA.
ENDCLASS. *&--------------------------------------------------------*
*& CLASS LCL_EVENT_HANDLER IMPLEMENTATION
*&--------------------------------------------------------*
* TEXT ALV事件实现
*---------------------------------------------------------*
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
*--工作中心搜索帮助
METHOD HANDLE_ON_F4_HELP_9000.
PERFORM HANDLE_ON_F4_HELP_9000 USING E_FIELDNAME ES_ROW_NO
ER_EVENT_DATA .
ENDMETHOD.
ENDCLASS. "4.实现具体form
*&--------------------------------------------------------*
*& Form HANDLE_ON_F4_HELP
*&--------------------------------------------------------*
* text 工作中心搜索帮助
*---------------------------------------------------------*
FORM HANDLE_ON_F4_HELP_9000 USING E_FIELDNAME
ES_ROW_NO TYPE LVC_S_ROID
ER_EVENT_DATA.
DATA : E_INDEX TYPE I,
E_MDV01 LIKE ZTPP_CONF_ITEM07-MDV01,
LT_RET_TAB TYPE TABLE OF DDSHRETVAL WITH HEADER LINE. IF E_FIELDNAME = 'MDV01'. "我们自定义搜索的字段名
E_INDEX = ES_ROW_NO-ROW_ID.
READ TABLE IT_SHOW INTO WA_SHOW INDEX E_INDEX. CHECK SY-SUBRC = 0.
"调用function
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'ARBPL' "返回字段
VALUE_ORG = 'S'
TABLES
VALUE_TAB = IT_CRHD
RETURN_TAB = LT_RET_TAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC = 0.
"更新内表
READ TABLE LT_RET_TAB INDEX 1.
IF LT_RET_TAB-FIELDVAL <> ''.
"增加前导零
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
INPUT = LT_RET_TAB-FIELDVAL
IMPORTING
OUTPUT = E_MDV01 . WA_SHOW-MDV01 = E_MDV01.
ENDIF.
MODIFY IT_SHOW FROM WA_SHOW INDEX E_INDEX.
ENDIF.
"刷新ALV
PERFORM REFRESH_TABLE_DISPLAY USING PP_ALV_GRID.
ENDIF.
ENDFORM. " HANDLE_ON_F4_HELP "5.设置fieldcat
WA_FIELDCAT-F4AVAILABL = 'X'. "6.注册事件
"工作中心F4帮助
DATA: LT_F4 TYPE LVC_T_F4 WITH HEADER LINE.
CLEAR LT_F4.
LT_F4-FIELDNAME = 'MDV01'.
LT_F4-REGISTER = 'X'.
LT_F4-CHNGEAFTER = 'X'.
* LT_F4-GETBEFORE = 'X'.
* LT_F4-INTERNAL = 'X'.
APPEND LT_F4.
CALL METHOD PP_ALV_GRID->REGISTER_F4_FOR_FIELDS
EXPORTING
IT_F4 = LT_F4[]. SET HANDLER GR_EVENT_HANDLER->HANDLE_ON_F4_HELP_9000
FOR PP_ALV_GRID.

ABAP 中的搜索帮助的更多相关文章

  1. 字符串处理:ABAP中的正则表达式

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  2. ABAP search help (搜索帮助) 几种种方法

    ABAP search help (搜索帮助) 几种种方法    域范围  ABAP 的搜索帮助有很多种方法,掌握下面的几种基本差不多了 *&------------------------- ...

  3. ABAP 中JSON格式的转换与解析

    RT,JSON是当今十分流行的一种轻量数据格式,广泛地应用于各种数据交换场景中.本文会介绍一种比较简单的将ABAP中的数据转换为JSON格式的方法. (如果你是因为引号的问题搜索到了这篇文章,请直接拉 ...

  4. SAP CRM 在Web UI中创建搜索帮助

    多数情况下,在Web UI为一个特定的字段提供搜索帮助需要在事务SE11中创建搜索帮助. (注:也可以通过在SE24中创建一个类并实现实现IF_BSP_WD_CUSTOM_F4_CALLBACK接口来 ...

  5. 解决Select2控件不能在jQuery UI Dialog中不能搜索的bug

    本文使用博客园Markdown编辑器进行编辑 1.问题呈现 项目中使用了jQuery UI的Dialog控件,一般用来处理需要提示用户输入或操作的简单页面.逻辑是修改一个广告的图片和标题. 效果截图如 ...

  6. 理解CSV文件以及ABAP中的相关操作

    在很多ABAP开发中,我们使用CSV文件,有时候,关于CSV文件本身的一些问题使人迷惑.它仅仅是一种被逗号分割的文本文档吗? 让我们先来看看接下来可能要处理的几个相关组件的词汇的语义. Separat ...

  7. 详细解读Android中的搜索框—— SearchView

    以前总是自己写的 今天看看别人做的 本篇讲的是如何用searchView实现搜索框,其实原理和之前的没啥差别,也算是个复习吧. 一.Manifest.xml 这里我用一个activity进行信息的输入 ...

  8. 在stream流和byte[]中查找(搜索)指定字符串

    在 stream流 和 byte[] 中查找(搜索)指定字符串 这里注重看的是两个 Search 的扩展方法,一个是 stream 类型的扩展,另一个是 byte[] 类型的扩展, 如果大家有更好的“ ...

  9. ABAP中使用浏览器打开网页

    在SAP ABAP中可以在Screen中嵌入Html control打开网页,也可以通过调用本地的IE浏览器打开. 1.在Screen中嵌入Html control的例子,在系统中有,se38:SAP ...

随机推荐

  1. C#实现WinForm禁止最大化、最小化、双击标题栏、双击图标等操作的方法

    from:http://www.jb51.net/article/71319.htm 本文实例讲述了C#实现WinForm禁止最大化.最小化.双击标题栏.双击图标等操作的方法.分享给大家供大家参考.具 ...

  2. python语法_注释

    #加需要注释的内容,#号后面的单行注释 #这一段注释 左右各三个注释单引号或者双引号 中间的内容为注释,可以包含多行 '''这一段注释''' """这一段注释" ...

  3. 团队作业记账本开发NABCD

    N(Need)需求 现如今大学生的消费存在很大问题,很多情况下都是图一时之快,冲动消费,但是其实这些东西并不是特别需要.这样慢慢的堆积也就导致了大学生月月精光的局面.另外,现在基本上人手一部手机,许多 ...

  4. ADB命令(全)

    当熟悉Shell命令的人使用adb是没有任何难度的,因为adb中绝大多少命令都是引用的shell命令 以下命令进行归类,红色部分字体是测试人员常用的adb命令 基础命令 1.启动adb服务 adb s ...

  5. Ecplise通过Git将项目提交到GitHub

    一.参考https://blog.csdn.net/bendanany/article/details/78891804 二.注意点: 1.仓库名必须和项目名相同: 2.若提交出现Can't conn ...

  6. 洛谷P2569 股票交易 [SCOI2010] dp

    正解:dp+单调队列优化 解题报告: 先放个传送门鸭qwq umm首先dp转移挺好想的?就买和不买 f[i][j]表示第i天手上有j的股份的最多钱,转移也很好想?就枚举第1天到第i-w-1天枚举买k股 ...

  7. session_unset 与 session_destroy 区别

    session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id session_destroy() 删除当前用户对 ...

  8. py三个面试小问题

    1.是否遇到过Python的模块间循环引用的问题,如何避免它? 这是代码结构设计的问题,模块依赖和类依赖,如果老是觉得碰到循环引用可能的原因有几点: a.可能是模块的分界线划错地方了 b.可能是把应该 ...

  9. python练习题-day14

    一.选择题 1. python不支持的数据类型有:A. charB. intC. floatD. list ans:A 2.x = ‘foo’y = 2print(x + y) A. fooB. fo ...

  10. 20190412 T-SQL语言一

    -- T-SQL ------------------------------------------------------ 例如1 什么是注释符 单行注释select *from kc /*sel ...