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. 我的WafBypass之道(SQL注入篇)

    原帖地址:https://xianzhi.aliyun.com/forum/read/349.html 0x00 前言 去年到现在就一直有人希望我出一篇关于waf绕过的文章,我觉得这种老生常 谈的话题 ...

  2. git 设置tracking information

    There is no tracking information for the current branch.Please specify which branch you want to merg ...

  3. windows下eclipse实现操作虚拟机ubantu中的hdfs hbase

    1.首先打开虚拟机,查看虚拟机的ip地址 2.修改C:\Windows\System32\drivers\etc下的主机名与ip的映射文件 3.配置Map/reduce 配置成功后可以查看hdfs文件 ...

  4. 补充:MySQL经典45道题型

    一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher). 四个表的结构分别如表1-1的表(一)~表 ...

  5. 我了解到的新知识之—MPLS

    下周末运营商来公司要对MPLS升级,对于一个多年权限管理经验的我来说未免有些陌生,幸好现在网络资源丰富,就开始了搜索之旅,找到了一些信息,所以在想干脆以后就开一个系列就叫<我了解到的新知识> ...

  6. iview form 表单的怪异小BUG

    当同一个弹窗中的表单重复利用时: 我原先的代码逻辑是: <Form :label-width="100" class="mt20" ref="c ...

  7. 【实战】Docker入门实践二:Docker服务基本操作 和 测试Hello World

    操作环境 操作系统:CentOS7.2 内存:1GB CPU:2核 Docker服务常用命令 docker服务操作命令如下 service docker start #启动服务 service doc ...

  8. Linux 从源码编译安装 OpenSSH

    https://blog.csdn.net/bytxl/article/details/46639073 Linux 从源码编译安装 OpenSSH以及各问题解决 2015年06月25日 17:37: ...

  9. 15.3-uC/OS-III资源管理(多值信号量)

    多值信号量是 uC/OS 操作系统的一个内核对象, 主要用于标志事件的发生和共享资源管理. 1.如果想要使用多值信号量,就必须事先使能多值信号量. 多值信号量的使能位于“os_cfg.h”. 2.OS ...

  10. Oracle 数据库逻辑结构.md

    一.存储关系Oracle 数据库逻辑上是由一个或多个表空间组成的,表空间物理上是由一个或多个数据文件组成的:而在逻辑上表空间又是由一个或多个段组成的.在Oracle 数据库中,通过为每种不同的数据对象 ...