好记性不如烂笔头-ABAP之简单的搜索帮助例子

2023-10-28 08:50

本文主要是介绍好记性不如烂笔头-ABAP之简单的搜索帮助例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

选择屏幕调用自定义搜索帮助(Searchu Help)简单例子

  1. 选择屏幕调用:MATCHCODE OBJECT在这里插入图片描述
  2. 创建搜索帮助(Search Help):SE11在这里插入图片描述
  3. 搜索帮助的内容:在这里插入图片描述
    4. 主要内容说明:
    4.1 选择方法:指定搜索帮助表数据来源。
    4.2 对话类型
    在这里插入图片描述
    4.2.1 根据值集合的对话:如果数据量大于100条就不会直接展示数据,会先展示一个筛选界面;
    4.2.2 立即显示值:就是立即展示数据源表中的全部数据;
    4.2.3 具有值限制的对话:搜索帮助一开始不会将数据表中的全部数据展示出了,会给个筛选条件;
    在这里插入图片描述
    5. 搜索帮助出口: 通过SE37 参考SAP的预定义函数F4IF_SHLP_EXIT_EXAMPLE新建一个常规函数。在这里插入图片描述在这里插入图片描述6.出口函数详细代码例子:
FUNCTION zfm_vendtype_f4.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      SHLP_TAB TYPE  SHLP_DESCR_TAB_T
*"      RECORD_TAB STRUCTURE  SEAHLPRES
*"  CHANGING
*"     VALUE(SHLP) TYPE  SHLP_DESCR_T
*"     VALUE(CALLCONTROL) LIKE  DDSHF4CTRL STRUCTURE  DDSHF4CTRL
*"----------------------------------------------------------------------RANGES:ra_parentcode FOR zrre_d_bp_type_t-parentcode,ra_typecode FOR zrre_d_bp_type_t-typecode,ra_parentname FOR zrre_d_bp_type_t-parentname,ra_typename FOR zrre_d_bp_type_t-typename.DATA:BEGIN OF ls_type,typecode   LIKE zrre_d_bp_type_t-typecode,typename   LIKE zrre_d_bp_type_t-typename,parentcode LIKE zrre_d_bp_type_t-parentcode,parentname LIKE zrre_d_bp_type_t-parentname,END OF ls_type.DATA:lt_type LIKE TABLE OF ls_type.CHECK callcontrol-step = /rer/if_ccm_constants=>gc_step-select. "'SELECT'.LOOP AT shlp-selopt INTO DATA(ls_selopt).CASE ls_selopt-shlpfield.WHEN 'PARENTCODE'.ra_parentcode = CORRESPONDING #( ls_selopt ).APPEND ra_parentcode.WHEN 'PARENTNAME'.ra_parentname = CORRESPONDING #( ls_selopt ).APPEND ra_parentname.WHEN 'TYPEPCODE'.ra_typecode = CORRESPONDING #( ls_selopt ).APPEND ra_typecode.WHEN 'TYPENAME'.ra_typename = CORRESPONDING #( ls_selopt ).APPEND ra_typename.WHEN OTHERS.ENDCASE.ENDLOOP.SELECT typecode typenameparentcode parentnameFROM zrre_d_bp_type_tINTO TABLE lt_typeWHERE zstatus = '01'AND parentcode IN ra_parentcode AND typecode IN ra_typecodeAND parentname IN ra_parentname AND typename IN ra_typename.IF sy-subrc = 0.SORT lt_type BY typecode parentcode.ENDIF.CLEAR record_tab.REFRESH record_tab.
*  clear: shlp_tab, callcontrol.callcontrol-sortoff = abap_true.IF lt_type IS NOT INITIAL.CALL FUNCTION 'F4UT_RESULTS_MAP'TABLESshlp_tab          = shlp_tabrecord_tab        = record_tabsource_tab        = lt_typeCHANGINGshlp              = shlpcallcontrol       = callcontrolEXCEPTIONSillegal_structure = 1OTHERS            = 2.IF sy-subrc <> 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgnoWITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.ENDIF.*下一个时间点直接转到DISP,否则无法再屏幕上显示帮助列表callcontrol-step = 'DISP'.
ENDFUNCTION.

注意:输出字段避免长度过长,容易抛出异常Dump掉。

7.函数解读:(此处参考CSDN博客所搜索内容)
在选择一次搜索帮助时会调用四次出口,用参数CALLCONTROL-STEP来控制是第几次。
第一次:CALLCONTROL-STEP = ‘SELONE’.
第一次的调用仅用于复合搜索帮助,在这次调用中它可以被使用以减少SHLP_TAB中给出的基本搜索帮助的数量。

第二次:CALLCONTROL-STEP = ‘PRESEL’.
第二次的调用我们可以修改一下限制条件,或者为了完全跳过对话框。

第三次:CALLCONTROL-STEP = ‘SELECT’.
这一步可以用来完全取代数据选择。

第四次:CALLCONTROL-STEP = ‘DISP’.
第四次调用之后前台将展示表RECORD_TAB的数据,可以在这次调用中增减这个表的数据来影响最终展示数据;下一个时间点直接转到DISP,否则无法在屏幕上显示帮助列表。

这篇关于好记性不如烂笔头-ABAP之简单的搜索帮助例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要

springboot简单集成Security配置的教程

《springboot简单集成Security配置的教程》:本文主要介绍springboot简单集成Security配置的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录集成Security安全框架引入依赖编写配置类WebSecurityConfig(自定义资源权限规则

如何使用Python实现一个简单的window任务管理器

《如何使用Python实现一个简单的window任务管理器》这篇文章主要为大家详细介绍了如何使用Python实现一个简单的window任务管理器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起... 任务管理器效果图完整代码import tkinter as tkfrom tkinter i

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

Java中数组转换为列表的两种实现方式(超简单)

《Java中数组转换为列表的两种实现方式(超简单)》本文介绍了在Java中将数组转换为列表的两种常见方法使用Arrays.asList和Java8的StreamAPI,Arrays.asList方法简... 目录1. 使用Java Collections框架(Arrays.asList)1.1 示例代码1.

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

Java8需要知道的4个函数式接口简单教程

《Java8需要知道的4个函数式接口简单教程》:本文主要介绍Java8中引入的函数式接口,包括Consumer、Supplier、Predicate和Function,以及它们的用法和特点,文中... 目录什么是函数是接口?Consumer接口定义核心特点注意事项常见用法1.基本用法2.结合andThen链

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::