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. 肖sir ___性能测试____多线程

    一.理论 (一) (1)多线程是Python程序中实现多任务的一种方式(2)线程是程序执行的最小单位. (3)同属一个进程的多个线程共享进程所拥有的全部资源. (二)进程和线程对比 (1)关系对比: ...

  2. 使用a标签锚点实现顺滑效果

    scroll-behavior:smooth;//使用该方法使用a标签锚点的时候会实现平滑 xxx.scrollIntoView({ behavior: "smooth" })

  3. 阿里云服务器 jdk1.8 安装配置

     阿里云服务器 jdk1.8 安装配置 下载/上传 jdk安装包 解压到指定目录 重命名解压后的文件夹名称 配置环境变量 验证JAVA环境是否安装成功 step 0.安装包准备 1 wget --no ...

  4. vue项目去掉网页滚动条

    点击查看代码 <template> <div id="app"> <router-view /> </div> </templ ...

  5. Qt构造函数和析构函数报错undefinedreferenceto`vtable for 。。。。'

    百度了一堆,说各种的都有,无非就是说什么构造函数没有实现父类的纯虚函数,但是我明明继承并实现了,,,最后发现可能就是单纯的Qtcreater抽风了,一开始在构造里面清理了项目,发现不行. 于是一不做二 ...

  6. vim 小记录

    将str1批量替换成str2 , 特殊符号前用转译符 \ :%s/str1/str2/g

  7. application.yaml

    spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver username: root password: root url: j ...

  8. shell 脚本实现二进制安装 LAMP 架构的 wordpress

    #!/bin/bash##***********************************************************************#Author:         ...

  9. axios和ajax对响应是文件流用blob处理

    先看axios请求处理,下载文件 this.$axios.get(api.exportMortgageOrderExcelVisit, { params: params, responseType: ...

  10. Android学习——控件Notification

    1.创建Notification和NotificationManager 2.NotificationChannel 3.常用方法说明