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

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

一文教你使用Python实现本地分页

《一文教你使用Python实现本地分页》这篇文章主要为大家详细介绍了Python如何实现本地分页的算法,主要针对二级数据结构,文中的示例代码简洁易懂,有需要的小伙伴可以了解下... 在项目开发的过程中,遇到分页的第一页就展示大量的数据,导致前端列表加载展示的速度慢,所以需要在本地加入分页处理,把所有数据先放