ABAP 选择屏幕 自定义搜索帮助

物料号为例

如图展示的物料,是不经过自定义搜索帮助处理的,如果我只需要物料描述和物料号,且只限定20开头的物料,就需要用到自定义搜索帮助了

当使用自定义帮助后 效果如下:

代码详解

构建选择屏幕

SELECTION-SCREEN BEGIN OF BLOCK blk1.
PARAMETERS:
p_matnr TYPE makt-matnr.
SELECTION-SCREEN END OF BLOCK blk1.

构建自定义帮助

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr. "
PERFORM frm_create_matnr_help. " 创建自定义帮助的例程

处理帮助字段

"在屏幕初始化前 构建用户自定义帮助的例程
INITIALIZATION .
PERFORM frm_get_matnr_f4. "创建例程 例程里面是 需要的字段 也就啊是 20 开头的物料以及 物料描述

帮助字段的程逻辑

" 构建全局变量内表
TYPES:BEGIN OF ty_f4,
matnr TYPE mara-matnr,
maktx TYPE makt-maktx,
END OF ty_f4. DATA : gt_f4 TYPE STANDARD TABLE OF ty_f4. "获取数据的例程
FORM frm_get_matnr_f4.
SELECT
from makt
FIELDS
makt~matnr,
makt~maktx
WHERE right( makt~matnr,8 ) LIKE '20%'
AND makt~spras eq @sy-langu
INTO CORRESPONDING FIELDS OF TABLE @gt_f4. "此处取数逻辑按自己的业务需求来 ENDFORM.

创建自定义帮助

FORM frm_create_matnr_help .
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR' " 参考的表字段
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_MATNR' " 用于选择屏幕上的哪一个
value_org = 'S'
TABLES
value_tab = gt_f4 " 自定义的表 需要全局变量 一般来说也是通过例程处理的 frm_get_matnr_f4
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.

自定义表头描述

例程代码如下

FORM frm_create_matnr_help .

  DATA: lt_dfies    TYPE TABLE OF dfies,
lr_tabdescr TYPE REF TO cl_abap_structdescr,
lv_offset TYPE DOFFSET. READ TABLE gt_f4 INTO DATA(gs_f4) INDEX 1.
IF sy-subrc EQ 0. lr_tabdescr ?= cl_abap_structdescr=>describe_by_data( gs_f4 ). " ?= 显示向下转换
lt_dfies = cl_salv_data_descr=>read_structdescr( lr_tabdescr ). " 获取结构 LOOP AT lt_dfies ASSIGNING FIELD-SYMBOL(<fs_dfies>). " 填入相关描述
<fs_dfies>-lfieldname = <fs_dfies>-fieldname.
<fs_dfies>-offset = lv_offset.
IF <fs_dfies>-fieldname = 'MATNR'.
<fs_dfies>-scrtext_l = '测试修改表头描述'.
<fs_dfies>-scrtext_m = '测试修改表头描述'.
<fs_dfies>-scrtext_s = '测试修改表头描述'.
<fs_dfies>-reptext = '测试修改表头描述'.
ELSEIF <fs_dfies>-fieldname = 'MAKTX'.
<fs_dfies>-scrtext_l = '测试'.
<fs_dfies>-scrtext_m = '测试'.
<fs_dfies>-scrtext_s = '测试'.
<fs_dfies>-reptext = '测试'.
ENDIF.
lv_offset = lv_offset + <fs_dfies>-intlen.
ENDLOOP.
ENDIF. CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR' " 参考的表字段
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_MATNR' " 用于选择屏幕上的哪一个
value_org = 'S'
TABLES
value_tab = gt_f4 " 自定义的表 需要全局变量 一般来说也是通过例程处理的 frm_get_matnr_f4
field_tab = lt_dfies " 表头描述
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
ENDFORM.

样例展示

abap 自定义搜索帮助的更多相关文章

  1. Qt之自定义搜索框

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...

  2. 【Qt】Qt之自定义搜索框【转】

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 简述 效果 细节分析 Coding 源码下载 效果 ...

  3. Android自定义View——自定义搜索框(SearchView)

    Android自定义View——自定义搜索框(SearchView) http://www.apkbus.com/android-142064-1-1.html

  4. bootStrap-table服务器端后台分页的使用,以及自定义搜索框的实现,前端代码到数据查询超详细讲解

    关于分页,之前一直纯手写js代码来实现,最近又需要用到分页,找了好多最终确定bootstrap-table,正好前端页面用的是bootstrap. 首先下载BootStrap-table的js和CSS ...

  5. FastAdmin Bootstrap-Table 自定义搜索的重写提示

    Bootstrap-Table 自定义搜索的重写提示 群友询问:这个搜索能自己写么? [群主]Karson-深圳(请勿@) "★找大神-山西 10:59:32 查看原文 [图片] 这个搜索能 ...

  6. Angular4.x 自定义搜索组件

    Angular4 随笔(三)  ——自定义搜索组件 1.简介 本组件主要是实现了搜索功能,主要是通过父子组件传值实现. 基本逻辑: 1.创建一个搜索组件,如:ng g component  searc ...

  7. iOS开发UI篇 -- UISearchBar 属性、方法详解及应用(自定义搜索框样式)

    很多APP都会涉及到搜索框,苹果也为我们提供了默认的搜索框UISearchBar.但实际项目中我们通常需要更改系统默认搜索框的样式.为了实现这一目标,我们需要先搞懂 UISearchBar 的属性及方 ...

  8. element-UI中el-select下拉框可搜索时候,filter-method自定义搜索方法

    使用element-UI框架的使用,我们经常使用el-select下拉框,很多时候还需要使用可搜索的下拉框,然后elementUI官网的实例中只是提了一下filter-method可以自定义搜索方法, ...

  9. Qt之自定义搜索框——QLineEdit里增加一个Layout,还不影响正常输入文字(好像是一种比较通吃的方法)

    简述 关于搜索框,大家都经常接触.例如:浏览器搜索.Windows资源管理器搜索等. 当然,这些对于Qt实现来说毫无压力,只要思路清晰,分分钟搞定. 方案一:调用QLineEdit现有接口 void ...

  10. iOS商城demo、音乐播放器、视频通话、自定义搜索、转场动画等源码

    iOS精选源码 微信自定义搜索框实现 一个商城Demo,持续更新中 在Object-C中学习数据结构与算法之排序算法 iOS 音乐播放器之锁屏歌词+歌词解析+锁屏效果 XLsn0wPushTimePi ...

随机推荐

  1. sheet.getLastRowNum()获取行数不准的问题

    // 获得总共有多少行int rowNum = 0;//存在样式的空行.会被统计进来.所以主要的问题是要判断是否是空行.for (int num = 1; num <= sheet.getLas ...

  2. plugin的原理

    plugin插件的原理 扩展webpack, 加入自定义的构建行为 webpack内部的钩子 hooks tap: 可以注册同步钩子和异步钩子 tapAsync: 回调方式注册异步钩子 tapProm ...

  3. 蓝牙mesh组网实践(手机配网例程配合wch mesh手机app的使用)

    目录 CH582的官方EVT在22年7月更新后,修改了手机配网代码以支持wch mesh手机app.使用该app可以保存手动配网信息,设置订阅地址分组,OTA升级,极大方便了用户管理节点. 老版本的E ...

  4. textfsm

    from concurrent.futures import ThreadPoolExecutor import netmiko import os from threading import Loc ...

  5. 通过parameters用python造数据

    1.先通过命令安装allpairs库.allpairspy,命令为:pip install allpairs.pip install parameters,安装成功 2.通过python去写出来,如图 ...

  6. win10上打包的qt程序放到win7上打不开的解决方法

    在win 10 上编写并打包发布了qt5.12.3 msvc2017 32bit的qt程序,在其他win10 电脑上都能正常运行,但是放到win7电脑上,运行exe时依次出现缺少"msvcp ...

  7. Asp.net中web.config配置文件最全面详解 (转载至CSDN)

    转载至csdn链接如下 https://blog.csdn.net/u011966339/article/details/64905062 web.config是一个XML文件,用来储存Asp.net ...

  8. myod od -tx -tc功能的c语言实现1210

    一.实验要求 1. 复习c文件处理内容: 2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能: 3. main与其他分开,制作静态库和动态库: 4. 编写Ma ...

  9. 7.29关灯游戏,用script实现

    <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8 ...

  10. 数据表主键设置自增后插入数据的mabatis写法

    研究出两种写法,因为画蛇添足修改了好久. 下面写两种正确的. <insert id="Insert" parameterType="com.aged.www.Poj ...