ABAP 代码自定义本地搜索帮助(F4IF_INT_TABLE_VALUE_REQUEST)

2023-10-28 08:50

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

目录

1. 简介

2. 功能点

2.1 常规用法

2.2 搜索帮助数据表头自定义文本描述

2.3 根据选中行数据自动填充多个屏幕字段

2.4 多行选择

3. 其它自定义控制


1. 简介

        函数名:F4IF_INT_TABLE_VALUE_REQUEST

        主要功能: 通过代码逻辑取值,提供搜索帮助可选数据,自定义本地搜索帮助。一般用在选择屏幕或者屏幕开发。

2. 功能点

2.1 常规用法

        参考代码:

lt_value_tab = VALUE #( ( ebeln = '1' ebelp = '10' ) ( ebeln = '1' ebelp = '20' ) ( ebeln = '2' ebelp = '10' ) ).CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield        = 'EBELN'            " 展示列表中的字段名dynpprog        = sy-repiddynpnr          = '1000'             " 屏幕号dynprofield     = 'P_EBELN'         " 屏幕字段   
*     WINDOW_TITLE    = WINDOW_TITLE       " value_org       = 'S'TABLESvalue_tab       = lt_value_tab       " 搜索帮助可选数据EXCEPTIONSparameter_error = 1no_values_found = 2OTHERS          = 3.

        效果:

        双击选中数据会将搜索帮助内表中选中行的EBELN字段值填充到1000屏幕的P_EBELN字段中

2.2 搜索帮助数据表头自定义文本描述

        参考代码:

lr_tabdescr ?= cl_abap_structdescr=>describe_by_data( ls_value_tab ).lt_dfies = cl_salv_data_descr=>read_structdescr( lr_tabdescr ).LOOP AT lt_dfies INTO ls_dfies.ls_dfies-lfieldname = ls_dfies-fieldname.ls_dfies-offset     = lv_offset.CASE ls_dfies-fieldname.WHEN 'EBELN'.ls_dfies-scrtext_l = ls_dfies-scrtext_m = ls_dfies-scrtext_s = ls_dfies-reptext = '贸易采购订单号'.WHEN 'EBELP'.ls_dfies-scrtext_l = ls_dfies-scrtext_m = ls_dfies-scrtext_s = ls_dfies-reptext = '订单行项目'.WHEN OTHERS.ENDCASE.lv_offset = lv_offset + ls_dfies-intlen.MODIFY lt_dfies FROM ls_dfies.ENDLOOP.lt_value_tab = VALUE #( ( ebeln = '1' ebelp = '10' ) ( ebeln = '1' ebelp = '20' ) ( ebeln = '2' ebelp = '10' ) ).CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield        = 'EBELN'dynpprog        = sy-repiddynpnr          = '1000'dynprofield     = 'P_EBELN'
*     WINDOW_TITLE    = WINDOW_TITLEvalue_org       = 'S'
* IMPORTING
*     USER_RESET      = USER_RESETTABLESvalue_tab       = lt_value_tabfield_tab       = lt_dfiesEXCEPTIONSparameter_error = 1no_values_found = 2OTHERS          = 3.IF sy-subrc <> 0.ENDIF.

        效果:

注意:搜索帮助数据表数据和 field_tab中字段的关联不是通过field_name,而是通过offset偏移对应,且是根据内部长度偏移(即一个字符两个长度)

2.3 根据选中行数据自动填充多个屏幕字段

        参考代码:

lr_tabdescr ?= cl_abap_structdescr=>describe_by_data( ls_value_tab ).lt_dfies = cl_salv_data_descr=>read_structdescr( lr_tabdescr ).LOOP AT lt_dfies INTO ls_dfies.ls_dfies-lfieldname = ls_dfies-fieldname.ls_dfies-offset     = lv_offset.CASE ls_dfies-fieldname.WHEN 'EBELN'.ls_dfies-scrtext_l = ls_dfies-scrtext_m = ls_dfies-scrtext_s = ls_dfies-reptext = '贸易采购订单号'.WHEN 'EBELP'.ls_dfies-scrtext_l = ls_dfies-scrtext_m = ls_dfies-scrtext_s = ls_dfies-reptext = '订单行项目'.WHEN OTHERS.ENDCASE.lv_offset = lv_offset + ls_dfies-intlen.MODIFY lt_dfies FROM ls_dfies.ENDLOOP.ls_dynpfld_mapping-dyfldname = 'P_EBELN'.ls_dynpfld_mapping-fldname   = 'EBELN'.APPEND ls_dynpfld_mapping TO lt_dynpfld_mapping.ls_dynpfld_mapping-dyfldname = 'P_EBELP'.ls_dynpfld_mapping-fldname   = 'EBELP'.APPEND ls_dynpfld_mapping TO lt_dynpfld_mapping.lt_value_tab = VALUE #( ( ebeln = '1' ebelp = '10' ) ( ebeln = '1' ebelp = '20' ) ( ebeln = '2' ebelp = '10' ) ).CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield        = 'P_EBELN'dynpprog        = sy-repiddynpnr          = '1000'dynprofield     = 'P_EBELN'
*     WINDOW_TITLE    = WINDOW_TITLEvalue_org       = 'S'
* IMPORTING
*     USER_RESET      = USER_RESETTABLESvalue_tab       = lt_value_tabfield_tab       = lt_dfies
*     return_tab      = return_tabdynpfld_mapping = lt_dynpfld_mappingEXCEPTIONSparameter_error = 1no_values_found = 2OTHERS          = 3.IF sy-subrc <> 0.ENDIF.

        效果:

注意:此时参数retfield的传值不再是内表字段名

2.4 多行选择

        参考代码:

  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield        = 'S_EBELN'dynpprog        = sy-repiddynpnr          = '1000'dynprofield     = 'S_EBELN'
* IMPORTING
*     USER_RESET      = USER_RESETTABLESvalue_tab       = lt_value_tabreturn_tab      = lt_return_tabEXCEPTIONSparameter_error = 1no_values_found = 2OTHERS          = 3.

          效果:

注意:此时需要结合return_tab(返回参数,为搜索帮助页面选择的数据)对屏幕字段进行赋值,一行多列的实现也可以选择使用该返回参数中值进行页面数据的填充.

3. 其它自定义控制

        补充参数CALLBACK_FORM,可以提供类似SE11中搜索帮助出口函数的个性化设置,通过对搜索帮助的参数更改来实现各种自定义的功能,比如一行多列数据的填充可以在该form中对参数shlp-interface进行更改达到目的。

        参考代码:

lt_value_tab = VALUE #( ( ebeln = '1' ebelp = '10' ) ( ebeln = '1' ebelp = '20' ) ( ebeln = '2' ebelp = '10' ) ).CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'EXPORTINGretfield         = 'P_EBELN'dynpprog         = sy-repiddynpnr           = '1000'dynprofield      = 'P_EBELN'
*     WINDOW_TITLE     = WINDOW_TITLEcallback_program = sy-repidcallback_form    = 'S_EBELN_EXITFORM'
* IMPORTING
*     USER_RESET       = USER_RESETTABLESvalue_tab        = lt_value_tabreturn_tab       = lt_return_tabEXCEPTIONSparameter_error  = 1no_values_found  = 2OTHERS           = 3.ENDFORM.FORM s_ebeln_exitform TABLES record_tab STRUCTURE seahlpresCHANGING shlp TYPE shlp_descr_tcallcontrol LIKE ddshf4ctrl.ENDFORM.

这篇关于ABAP 代码自定义本地搜索帮助(F4IF_INT_TABLE_VALUE_REQUEST)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

利用c++判断水仙花数并输出示例代码

《利用c++判断水仙花数并输出示例代码》水仙花数是指一个三位数,其各位数字的立方和恰好等于该数本身,:本文主要介绍利用c++判断水仙花数并输出的相关资料,文中通过代码介绍的非常详细,需要的朋友可以... 以下是使用C++实现的相同逻辑代码:#include <IOStream>#include <vec

SpringBoot全局异常拦截与自定义错误页面实现过程解读

《SpringBoot全局异常拦截与自定义错误页面实现过程解读》本文介绍了SpringBoot中全局异常拦截与自定义错误页面的实现方法,包括异常的分类、SpringBoot默认异常处理机制、全局异常拦... 目录一、引言二、Spring Boot异常处理基础2.1 异常的分类2.2 Spring Boot默

Java 接口定义变量的示例代码

《Java接口定义变量的示例代码》文章介绍了Java接口中的变量和方法,接口中的变量必须是publicstaticfinal的,用于定义常量,而方法默认是publicabstract的,必须由实现类... 在 Java 中,接口是一种抽象类型,用于定义类必须实现的方法。接口可以包含常量和方法,但不能包含实例

自定义注解SpringBoot防重复提交AOP方法详解

《自定义注解SpringBoot防重复提交AOP方法详解》该文章描述了一个防止重复提交的流程,通过HttpServletRequest对象获取请求信息,生成唯一标识,使用Redis分布式锁判断请求是否... 目录防重复提交流程引入依赖properties配置自定义注解切面Redis工具类controller

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

mybatis-plus分表实现案例(附示例代码)

《mybatis-plus分表实现案例(附示例代码)》MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生,:本文主要介绍my... 目录文档说明数据库水平分表思路1. 为什么要水平分表2. 核心设计要点3.基于数据库水平分表注意事项示例

Nginx服务器部署详细代码实例

《Nginx服务器部署详细代码实例》Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,:本文主要介绍Nginx服务器部署的相关资料,文中通过代码... 目录Nginx 服务器SSL/TLS 配置动态脚本反向代理总结Nginx 服务器Nginx是一个‌高性

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req

HTML5的input标签的`type`属性值详解和代码示例

《HTML5的input标签的`type`属性值详解和代码示例》HTML5的`input`标签提供了多种`type`属性值,用于创建不同类型的输入控件,满足用户输入的多样化需求,从文本输入、密码输入、... 目录一、引言二、文本类输入类型2.1 text2.2 password2.3 textarea(严格