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

相关文章

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java