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. 写出干净的 JavaScript 5 个小技巧

    携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情 降低阅读负担,启发创作心智,轻松学习 JavaScript 技巧,日拱一卒,jym,冲~ 1. 将数字定 ...

  2. Docker之Redis保姆级别安装

    Docker之Redis保姆级别安装: 如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样) 学英语网站项目:自己先保证Redis.N ...

  3. PHP后端 H5页面 打开微信小程序

    /** * 功能:获取小程序access_token * Author:郑康凯 * Date: 2023/2/6 0006 15:14 */ public function hhsGetAccessT ...

  4. element-ui组件Table排序(sort-by),某些数据无需排序

    在列中设置 sortable 属性即可实现以该列为基准的排序, 接受一个 Boolean,默认为 false. 可以通过 Table 的 default-sort 属性设置默认的排序列和排序顺序. 可 ...

  5. vs 工具 dumpbin & corflags

    dumpbin 查看 dll 接口函数 > dumpbin /exports "/path/to/dll" dumpbin 查看 exe.dll 依赖的动态库 > du ...

  6. k8s部署-kubeadm

    环境配置 内核配置 基本组件安装 高可用组件安装 kubeadm集群初始化

  7. 利用shell脚本来监控linux系统的负载与CPU占用情况

    一.安装linux下面的一个邮件客户端msmtp软件(类似于一个foxmail的工具) 1.下载安装: http://downloads.sourceforge.net/msmtp/msmtp-1.4 ...

  8. shell语法4-printf命令、test命令和判断符号[]、逻辑运算符&&和||

    一.printf命令 printf命令用于格式化输出,类似于C/C++中的printf函数. 默认不会在字符串末尾添加换行符!!! 例如: printf "%10d.\n" 123 ...

  9. Linux 第七节(LVM,网卡配置)

    LVM 逻辑卷管理器: 解决分区灵活调整大小问题 PV 物理卷 VG 卷组 LV 逻辑卷 pvcreate /dev/sdc vgcreate xiaochong  /dev/sdb /dev/sdc ...

  10. zabbix连接Mysql提示Can’t connect to local MySQL server through socket的解决方法

    要解决此错误,有两种解决方法: 1.将连接参数"host"的值由"localhost"改成"127.0.0.1": 2.按下面方法,在&qu ...