ABAP 中的搜索帮助

2024-06-12 09:58
文章标签 搜索 帮助 abap

本文主要是介绍ABAP 中的搜索帮助,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.简介:在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'EXPORTINGPROGRAM_NAME = ''            " 输入的路劲IMPORTINGFILE_NAME    = P_FILE.       " 输出路径

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

"屏幕事件中
*&--------------------------------------------------------*
*&    实现搜索帮助                                           
*&--------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_SAKNR.CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGRETFIELD    = 'SAKNR'  "搜索帮助内表要输出的帮助字段名DYNPPROG    = SY-REPIDDYNPNR      = SY-DYNNRDYNPROFIELD = 'P_SAKNR'VALUE_ORG   = 'S'TABLESVALUE_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'.

这样就自动实现了搜索帮助功能。
(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.获得数据用于搜索帮助
"得到工作中心搜索帮助所需内表SELECTA~WERKSA~VERWEA~ARBPLB~KTEXTINTO CORRESPONDING FIELDS OF TABLE IT_CRHDFROM CRHD AS AJOIN CRTX AS B ON B~OBJTY = A~OBJTY AND B~OBJID = A~OBJIDWHERE 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_9000FOR EVENT ONF4 OF CL_GUI_ALV_GRIDIMPORTING 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_NOER_EVENT_DATA .ENDMETHOD.
ENDCLASS."4.实现具体form
*&--------------------------------------------------------*
*&      Form  HANDLE_ON_F4_HELP
*&--------------------------------------------------------*
*       text 工作中心搜索帮助
*---------------------------------------------------------*
FORM HANDLE_ON_F4_HELP_9000  USING E_FIELDNAMEES_ROW_NO TYPE LVC_S_ROIDER_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."调用functionCALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGRETFIELD        = 'ARBPL' "返回字段VALUE_ORG       = 'S'TABLESVALUE_TAB       = IT_CRHDRETURN_TAB      = LT_RET_TABEXCEPTIONSPARAMETER_ERROR = 1NO_VALUES_FOUND = 2OTHERS          = 3.IF SY-SUBRC = 0."更新内表READ TABLE LT_RET_TAB INDEX 1.IF LT_RET_TAB-FIELDVAL <> ''."增加前导零CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT  = LT_RET_TAB-FIELDVALIMPORTINGOUTPUT = E_MDV01 .WA_SHOW-MDV01 = E_MDV01.ENDIF.MODIFY IT_SHOW FROM WA_SHOW INDEX E_INDEX.ENDIF."刷新ALVPERFORM REFRESH_TABLE_DISPLAY USING PP_ALV_GRID.ENDIF.
ENDFORM.                    " HANDLE_ON_F4_HELP"5.设置fieldcatWA_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_FIELDSEXPORTINGIT_F4 = LT_F4[].SET HANDLER GR_EVENT_HANDLER->HANDLE_ON_F4_HELP_9000FOR PP_ALV_GRID.

这篇关于ABAP 中的搜索帮助的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1053893

相关文章

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

hdu 4517 floyd+记忆化搜索

题意: 有n(100)个景点,m(1000)条路,时间限制为t(300),起点s,终点e。 访问每个景点需要时间cost_i,每个景点的访问价值为value_i。 点与点之间行走需要花费的时间为g[ i ] [ j ] 。注意点间可能有多条边。 走到一个点时可以选择访问或者不访问,并且当前点的访问价值应该严格大于前一个访问的点。 现在求,从起点出发,到达终点,在时间限制内,能得到的最大

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

hdu4277搜索

给你n个有长度的线段,问如果用上所有的线段来拼1个三角形,最多能拼出多少种不同的? import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

【python计算机视觉编程——7.图像搜索】

python计算机视觉编程——7.图像搜索 7.图像搜索7.1 基于内容的图像检索(CBIR)从文本挖掘中获取灵感——矢量空间模型(BOW表示模型)7.2 视觉单词**思想****特征提取**: 创建词汇7.3 图像索引7.3.1 建立数据库7.3.2 添加图像 7.4 在数据库中搜索图像7.4.1 利用索引获取获选图像7.4.2 用一幅图像进行查询7.4.3 确定对比基准并绘制结果 7.

记忆化搜索【下】

375. 猜数字大小II 题目分析 题目链接:375. 猜数字大小 II - 力扣(LeetCode) 题目比较长,大致意思就是给一个数,比如说10,定的数字是7,让我们在[1, 10]这个区间猜。 如果猜大或猜小都会说明是大了还是小了,此外,我们还需要支付猜错数字对应的现金。 现在就是让我们定制一个猜测策略,确保准备最少的钱能猜对 如果采用二分查找,只能确保最小次数,题目要求的