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

相关文章

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

使用Python实现全能手机虚拟键盘的示例代码

《使用Python实现全能手机虚拟键盘的示例代码》在数字化办公时代,你是否遇到过这样的场景:会议室投影电脑突然键盘失灵、躺在沙发上想远程控制书房电脑、或者需要给长辈远程协助操作?今天我要分享的Pyth... 目录一、项目概述:不止于键盘的远程控制方案1.1 创新价值1.2 技术栈全景二、需求实现步骤一、需求

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

jupyter代码块没有运行图标的解决方案

《jupyter代码块没有运行图标的解决方案》:本文主要介绍jupyter代码块没有运行图标的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录jupyter代码块没有运行图标的解决1.找到Jupyter notebook的系统配置文件2.这时候一般会搜索到

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La