RERCS系统开发实战案例-Part05 FPM Application的Feeder Class搜索组件的实施

1、通过事务码 SE24对Feeder Class实施

1)接口页签的简单说明:
在这里插入图片描述① IF_FPM_GUIBB:通用UI构建块,整个UIBB模块的基础接口;
② IF_FPM_GUIBB_SEARCH:通用搜索UI构建块,搜索组件UIBB的基础接口;
③ IF_FPM_GUIBB_LIST:通用列表UI构建块,列表组件UIBB的基础接口;
④ IF_FPM_GUIBB_OVS_SEARCH:FPM搜索:用于相关搜索的特殊OVS接口,用于特殊搜索条件字段扩展(例如搜索帮助引用等);
⑤ IF_FPM_GUIBB_OVS:接口提供回调方法使用OVS(Object Value Selector)与POWL(Personal Object Worklist),添加IF_FPM_GUIBB_OVS_SEARCH时会自动带出该接口,一般是嵌套使用;
备注:IF_FPM_GUIBB_OVS_SEARCH提供GUIBB搜索的搜索条件,IF_FPM_GUIBB_OVS返回搜索条件的结果。
IF_FPM_GUIBB_OVS包括以下四个方法:
在这里插入图片描述HANDLE_PHASE_0:OVS配置,通过调用IF_WD_OVS->set_configuration返回配置的字段;
HANDLE_PHASE_1:OVS初始化字段;
HANDLE_PHASE_2:获取数据,通过调用IF_WD_OVS->set_output_table返回配置字段的结果;
HANDLE_PHASE_3:设置返回值;
2)Feeder Class中的基本方法:在接口页签继承的接口,自然也会把其中的方法继承过来;
在这里插入图片描述备注:后续列表组件List UIBB的FeederClass的实施便是此处的List UIBB的方法

3)搜索组件Search UIBB方法的实施(包括OVS的方法);
①、方法IF_FPM_GUIBB_OVS_SEARCH~SET_CURRENT_SEARCH_CRITERIA:传递当前搜索界面的信息

  METHOD IF_FPM_GUIBB_OVS_SEARCH~SET_CURRENT_SEARCH_CRITERIA.MT_SEARCH_CRITERIA = IT_FPM_SEARCH_CRITERIA.ENDMETHOD.

②、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_0:配置OVS返回值字段;

METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_0 .DATA: LS_COLUNM_TEXT TYPE WDR_NAME_VALUE.DATA: LT_COLUNM_TEXT TYPE WDR_NAME_VALUE_LIST.DATA: LV_HEADER_TEXT TYPE STRING.CASE IV_FIELD_NAME.WHEN 'ZJBBM'.LV_HEADER_TEXT = '总监部'.LS_COLUNM_TEXT-NAME = 'ORGID'.LS_COLUNM_TEXT-VALUE = '总监部编码'.APPEND LS_COLUNM_TEXT TO LT_COLUNM_TEXT.CLEAR LS_COLUNM_TEXT.LS_COLUNM_TEXT-NAME = 'ORGNM'.LS_COLUNM_TEXT-VALUE = '总监部名称'.APPEND LS_COLUNM_TEXT TO LT_COLUNM_TEXT.CLEAR LS_COLUNM_TEXT.CALL METHOD IO_OVS_CALLBACK->SET_CONFIGURATIONEXPORTINGGROUP_HEADER = LV_HEADER_TEXTCOLUMN_TEXTS = LT_COLUNM_TEXTCOL_COUNT    = 2ROW_COUNT    = 20.ENDCASE.
ENDMETHOD.

③、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_1:
无实施要求,直接激活;
④、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_2:获取配置字段的值;

METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_2 .DATA: LV_QYBM TYPE PHINR.DATA: LT_ZJB TYPE STANDARD TABLE OF TS_ORG.DATA:LT_ZJBBM TYPE TABLE OF ZSJBBM,LS_ZJBBM TYPE ZSJBBM.CASE IV_FIELD_NAME.WHEN 'ZJBBM'.READ TABLE MT_SEARCH_CRITERIA ASSIGNING FIELD-SYMBOL(<FS_SEARCH_CRITERIA>) WITH KEY SEARCH_ATTRIBUTE = 'QYBM'.IF SY-SUBRC = 0.LV_QYBM = <FS_SEARCH_CRITERIA>-LOW.ENDIF.IF LV_QYBM IS NOT INITIAL.DATA(LT_ZJBBM_FIXED_VALUES) = ZRRE_CL_LIB_CCM_UTIL=>GET_ZJB_FIXED_VALUES( IV_QYBM = LV_QYBM ).SORT LT_ZJBBM_FIXED_VALUES BY VALUE.ENDIF.CALL FUNCTION 'ZFM_GET_RCS_AUTH'EXPORTINGIV_OBJECT = 'ZRRE_CONT'TABLESOT_JBBM   = LT_ZJBBM.LOOP AT LT_ZJBBM_FIXED_VALUES ASSIGNING FIELD-SYMBOL(<FS_FIXED_VALUES>).READ TABLE LT_ZJBBM INTO DATA(PS_ZJBBM) WITH KEY ID = '*'."* 号直接汇总IF SY-SUBRC = 0.APPEND INITIAL LINE TO LT_ZJB ASSIGNING FIELD-SYMBOL(<FS_ZJB>).<FS_ZJB>-ORGID = <FS_FIXED_VALUES>-VALUE.<FS_ZJB>-ORGNM = <FS_FIXED_VALUES>-TEXT.ELSE.READ TABLE LT_ZJBBM INTO LS_ZJBBM WITH KEY ID = <FS_FIXED_VALUES>-VALUE.IF SY-SUBRC = 0."非 * 号按照授权范围汇总APPEND INITIAL LINE TO LT_ZJB ASSIGNING FIELD-SYMBOL(<FS_ZJBBM>).<FS_ZJBBM>-ORGID = <FS_FIXED_VALUES>-VALUE.<FS_ZJBBM>-ORGNM = <FS_FIXED_VALUES>-TEXT.ENDIF.ENDIF.ENDLOOP.SORT LT_ZJB BY ORGID.CALL METHOD IO_OVS_CALLBACK->SET_OUTPUT_TABLEEXPORTINGOUTPUT = LT_ZJB.ENDCASE.
ENDMETHOD.

⑤、方法IF_FPM_GUIBB_OVS~HANDLE_PHASE_3:设置返回值;

METHOD IF_FPM_GUIBB_OVS~HANDLE_PHASE_3 .FIELD-SYMBOLS: <FS_ZJB> TYPE TS_ORG.DATA: LO_FPM TYPE REF TO IF_FPM.LO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).CASE IV_FIELD_NAME.WHEN 'ZJBBM'.ASSIGN IO_OVS_CALLBACK->SELECTION->* TO <FS_ZJB> .IF <FS_ZJB> IS ASSIGNED.CALL METHOD IO_OVS_CALLBACK->CONTEXT_ELEMENT->SET_ATTRIBUTE(NAME  = IO_OVS_CALLBACK->CONTEXT_ATTRIBUTEVALUE = <FS_ZJB>-ORGID ).CREATE OBJECT EO_FPM_EVENTEXPORTINGIV_EVENT_ID = 'HANDLE_ENTERED'.ENDIF.ENDCASE.
ENDMETHOD.

⑥、方法IF_FPM_GUIBB~INITIALIZE:初始化UIBB页面,根据BOPF的常量接口的SC_BO_KEY指定BO对象

METHOD IF_FPM_GUIBB~INITIALIZE.MO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).MO_SRV_MGR = /BOBF/CL_TRA_SERV_MGR_FACTORY=>GET_SERVICE_MANAGER( ZRRE_IF_YSYFBL_C=>SC_BO_KEY ).ENDMETHOD.

⑦、方法IF_FPM_GUIBB~GET_PARAMETER_LIST:获取表单提供程序支持的参数列表;
无实施需求,直接激活。
⑧、方法IF_FPM_GUIBB_SEARCH~GET_DEFINITION:搜索条件字段引用搜索帮助等;

 DATA: LT_ENUMERATION TYPE FPMGB_T_NAMEVALUE,LT_FIXED_VALUE TYPE WDR_CONTEXT_ATTR_VALUE_LIST.EO_FIELD_CATALOG_ATTR ?= CL_ABAP_TABLEDESCR=>DESCRIBE_BY_NAME( 'ZRRE_S_BO_YSYFBL_ROOT_C' ).APPEND VALUE #( NAME = 'PRJID' DDIC_SHLP_NAME = 'ZRRE_H_PRJ' ) TO ET_FIELD_DESCRIPTION_ATTR.APPEND VALUE #( NAME = 'LIFNR' DDIC_SHLP_NAME = 'ZRRE_H_BP' ) TO ET_FIELD_DESCRIPTION_ATTR.CLEAR:LT_FIXED_VALUE,LT_ENUMERATION.LT_FIXED_VALUE = ZRRE_CL_LIB_CCM_UTIL=>GET_QY3_FIXED_VALUES( ).LT_ENUMERATION  = CORRESPONDING #( LT_FIXED_VALUE MAPPING NAME = TEXT ).APPEND VALUE #( NAME = 'QYBM' ENUMERATION = LT_ENUMERATION MAX_1_VALUE = ABAP_FALSE ) TO ET_FIELD_DESCRIPTION_ATTR.APPEND VALUE #( NAME = 'ZJBBM' OVS_NAME  = 'ZRRE_CL_FD_YSYFBL_SEARCH' MAX_1_VALUE = ABAP_FALSE ) TO ET_FIELD_DESCRIPTION_ATTR.

⑨方法IF_FPM_GUIBB_SEARCH~GET_DATA:发起SEARCH操作事件,用于搜索条件下一步获取数据;

 METHOD IF_FPM_GUIBB_SEARCH~GET_DATA.DATA: LO_SRV_MGR TYPE REF TO /BOBF/IF_TRA_SERVICE_MANAGER,LO_FPM     TYPE REF TO IF_FPM.DATA: LT_SELECTION_PARAMETERS TYPE /BOBF/T_FRW_QUERY_SELPARAM,LS_SELECTION_PARAMETERS TYPE /BOBF/S_FRW_QUERY_SELPARAM,LS_QUERY_OPTIONS        TYPE /BOBF/S_FRW_QUERY_OPTIONS.DATA CORE_OBJECT TYPE REF TO /BOBF/IF_TRA_SERVICE_MANAGER .DATA: LS_RSDS TYPE RSDSSELOPT.DATA: LV_AUTH TYPE BOOLEAN.DATA:LT_JBBM           TYPE TABLE OF ZSJBBM,LS_JBBM           TYPE ZSJBBM,LS_MESSAGES       TYPE FPMGB_SEARCH_S_T100_MESSAGE,LS_QUERY_SELPARAM TYPE /BOBF/S_FRW_QUERY_SELPARAM,LV_MSG            TYPE STRING.LO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).LO_SRV_MGR = /BOBF/CL_TRA_SERV_MGR_FACTORY=>GET_SERVICE_MANAGER( ZRRE_IF_YSYFBL_C=>SC_BO_KEY ).CASE IO_EVENT->MV_EVENT_ID.WHEN 'FPM_EXECUTE_SEARCH'.LOOP AT CT_FPM_SEARCH_CRITERIA ASSIGNING FIELD-SYMBOL(<FS_FPM_SEARCH>) WHERE LOW IS NOT INITIAL.LS_SELECTION_PARAMETERS-ATTRIBUTE_NAME = <FS_FPM_SEARCH>-SEARCH_ATTRIBUTE.TRY.LS_RSDS = CL_FPM_GUIBB_SEARCH_CONVERSION=>TO_ABAP_SELECT_OPTION( IS_FPM_SEARCH_ROW = <FS_FPM_SEARCH> ).CATCH CX_FPMGB.CONTINUE.ENDTRY.LS_SELECTION_PARAMETERS-SIGN = LS_RSDS-SIGN.LS_SELECTION_PARAMETERS-OPTION = LS_RSDS-OPTION.LS_SELECTION_PARAMETERS-LOW = LS_RSDS-LOW.LS_SELECTION_PARAMETERS-HIGH = LS_RSDS-HIGH.APPEND LS_SELECTION_PARAMETERS TO LT_SELECTION_PARAMETERS.CLEAR  LS_SELECTION_PARAMETERS.ENDLOOP.IF MV_MAXLINES IS NOT INITIAL.LS_QUERY_OPTIONS-MAXIMUM_ROWS = MV_MAXLINES.ENDIF."不输入总监部情况下 获取权限内所有总监部READ TABLE LT_SELECTION_PARAMETERS INTO DATA(LS_SEL) WITH KEY ATTRIBUTE_NAME = 'ZJBBM'.IF SY-SUBRC <> 0.CALL FUNCTION 'ZFM_GET_RCS_AUTH'EXPORTINGIV_OBJECT = 'ZRRE_CONT'TABLESOT_JBBM   = LT_JBBM.IF LT_JBBM[] IS INITIAL.MESSAGE E237(/RER/CO) INTO LV_MSG.LS_MESSAGES-MSGID = SY-MSGID.LS_MESSAGES-MSGNO = SY-MSGNO.LS_MESSAGES-SEVERITY = 'E'.APPEND LS_MESSAGES TO ET_MESSAGES.RETURN.ENDIF.READ TABLE LT_JBBM INTO DATA(PS_JBBM) WITH KEY ID = '*'.IF SY-SUBRC <> 0.LOOP AT LT_JBBM INTO LS_JBBM WHERE ID <> '*'.LS_QUERY_SELPARAM-ATTRIBUTE_NAME ='ZJBBM'.LS_QUERY_SELPARAM-SIGN = 'I'.LS_QUERY_SELPARAM-OPTION = 'EQ'.LS_QUERY_SELPARAM-LOW = LS_JBBM-ID.APPEND LS_QUERY_SELPARAM TO LT_SELECTION_PARAMETERS.ENDLOOP.ENDIF.ENDIF.LO_SRV_MGR->QUERY(EXPORTINGIV_QUERY_KEY = ZRRE_IF_YSYFBL_C=>SC_QUERY-ROOT-SELECT_BY_ATTRSIT_SELECTION_PARAMETERS = LT_SELECTION_PARAMETERSIS_QUERY_OPTIONS = LS_QUERY_OPTIONSIV_FILL_DATA     = ABAP_TRUEIMPORTINGET_DATA = MT_RESULT ).IF MT_RESULT[] IS INITIAL.MESSAGE E229(/RER/CO) INTO LV_MSG.LS_MESSAGES-MSGID = SY-MSGID.LS_MESSAGES-MSGNO = SY-MSGNO.LS_MESSAGES-SEVERITY = 'E'.APPEND LS_MESSAGES TO ET_MESSAGES.RETURN.ENDIF.CALL METHOD LO_FPM->RAISE_EVENT_BY_IDEXPORTINGIV_EVENT_ID = 'REFRESH'.ENDCASE.ENDMETHOD.

其他无实施需求方法不再一一列举了。
到此,Search UIBB对应Feeder Class的基本实施已完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/359151.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中东文明史

转自&#xff1a;想要了解完整的中东文明史&#xff1f;这篇文章成全你 - 知乎 (zhihu.com) 写在前面 中东文明是人类历史上最古老的文明。人类祖先从东非大裂谷走出之后&#xff0c;首先选择定居在中东地区的新月沃土上&#xff0c;并建立了人类历史上有文字记载的第一个文明…

Mybatis-映射文件中select标签resultType属性的使用

数据库的最最基本操作“增删改查”&#xff0c;“查”是最复杂的&#xff0c;有各种各样的查询&#xff0c;所以对应到Mybatis中的select标签也是这四个操作中最复杂的 resultType属性的使用 1.返回的结果是List集合的类型 select标签里的resultType类型设置为List集合里的元…

关于正点原子stm32f103精英板v1的stlink通信失败问题解决方案

由于最新的固件不适配&#xff0c;我们要想其工作要下载007的固件。 https://www.st.com/en/development-tools/stsw-link007.html?dlredirect 版本选择最低的。然后选择windows文件夹&#xff0c;更新程序 然后进keil就能正常识别到了

mediasoup源码分析(三)channel创建及信令交互

mediasoup源码分析--channel创建及信令交互 概述跨职能图业务流程图代码剖析tips 概述 在golang实现mediasoup的tcp服务及channel通道一文中&#xff0c;已经介绍过信令服务中tcp和channel的创建&#xff0c;本文主要讲解c中mediasoup的channel创建&#xff0c;以及信令服务和…

【C++高阶】掌握AVL树:构建与维护平衡二叉搜索树的艺术

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;STL-> map与set &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀AVL树 &#x1f4d2;1. AVL树…

MySQL理解-下载-安装

MySQL理解: mysql:是一种关系型数据库管理系统。 下载&#xff1a; 进入官网MySQLhttps://www.mysql.com/ 找到download 滑动到最下方&#xff1a;有一个开源社区版的链接地址&#xff1a; 然后就下载完成了 安装&#xff1a; 双击&#xff1a; 一直next 一直next这一步&…

Spire.PDF for .NET【文档操作】演示:设置 PDF 文档的 XMP 元数据

XMP 是一种文件标签技术&#xff0c;可让您在内容创建过程中将元数据嵌入文件本身。借助支持 XMP 的应用程序&#xff0c;您的工作组可以以团队以及软件应用程序、硬件设备甚至文件格式易于理解的格式捕获有关项目的有意义的信息&#xff08;例如标题和说明、可搜索的关键字以及…

java基于ssm+jsp 美食推荐管理系统

1前台首页功能模块 美食推荐管理系统&#xff0c;在系统首页可以查看首页、热门美食、美食教程、美食店铺、美食社区、美食资讯、我的、跳转到后台等内容&#xff0c;如图1所示。 图1前台首页功能界面图 用户注册&#xff0c;在注册页面可以填写用户名、密码、姓名、联系电话等…

仓库管理系统01--数据库介绍

1、表结构 1&#xff09;UserInfo 用户表 2&#xff09;Supplier供应商表 3&#xff09;Store 仓库表 4&#xff09;其他表 Customer 客户表&#xff0c;Spec 规格表&#xff0c;GoodsType 货物类别表&#xff0c;Goods 货物表&#xff0c;InStore 入库表&#xff0c;OutSto…

LearnOpenGL - Android OpenGL ES 3.0 绘制纹理

系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGLLearnOpenGL 笔记 - 入门 02 创建窗口LearnOpenGL 笔记 - 入门 03 你好&#xff0c;窗口LearnOpenGL 笔记 - 入门 04 你好&#xff0c;三角形OpenGL - 如何理解 VAO 与 VBO 之间的关系LearnOpenGL - Android OpenGL ES 3.0 绘制…

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?!

有趣的 Oracle JDBC 驱动包命名问题 - ojdbc6 和 ojdbc14 哪个新?! 1 背景概述 最近协助一个小兄弟排查了某作业使用 sqoop 采集 oracle 数据的失败问题&#xff0c;问题现象&#xff0c;问题原因和解决方法都挺直观&#xff0c;但在此过程中发现了一个有趣的 Oracle JDBC 驱…

特氟龙深水采样器FEP贝勒管水质取样器密封性好

贝勒管深水采样器(bailers tube),是一种经济型便携式水质采样器&#xff0c;操作简单&#xff0c;使用方便&#xff0c;性价比高&#xff0c;能大限度的保证样品的真实性。采样管直径很小&#xff0c;能够采取小口径的深水井水样。是一款简单实用&#xff0c;性价比高的水质采样…

C语言入门课程学习笔记8:变量的作用域递归函数宏定义交换变量

C语言入门课程学习笔记8 第36课 - 变量的作用域与生命期&#xff08;上&#xff09;第37课 - 变量的作用域与生命期&#xff08;下&#xff09;实验—局部变量的作用域实验-变量的生命期 第38课 - 函数专题练习第39课 - 递归函数简介实验-递归小结 第40课 - C 语言中的宏定义实…

C语言 while循环1

在C语言里有3种循环&#xff1a;while循环 do while 循环 for循环 while语句 //while语法结构 while&#xff08;表达式&#xff09;循环语句; 比如在屏幕上打印1-10 在while循环中 break用于永久的终止循环 在while循环中&#xff0c;continue的作用是跳过本次循环 …

如何安全进行亚马逊、沃尔玛测评?

在亚马逊、沃尔玛、速卖通、阿里国际站等电商平台上&#xff0c;测评已成为一种高效的推广手段&#xff0c;但伴随的风险也不容忽视。这些风险主要源于平台严格的大数据风控机制&#xff0c;它涵盖了多个方面&#xff0c;以确保评价的真实性和合规性。 首先&#xff0c;硬件参数…

Avalonia 常用控件二 Menu相关

1、Menu 添加代码如下 <Button HorizontalAlignment"Center" Content"Menu/菜单"><Button.Flyout><MenuFlyout><MenuItem Header"打开"/><MenuItem Header"-"/><MenuItem Header"关闭"/&…

Unity贪吃蛇改编【详细版】

Big and small greedy snakes 游戏概述 游戏亮点 通过对称的美感&#xff0c;设置两条贪吃蛇吧&#xff0c;其中一条加倍成长以及加倍减少&#xff0c;另一条正常成长以及减少&#xff0c;最终实现两条蛇对整个界面的霸占效果。 过程中不断记录两条蛇的得分情况&#xff0c…

如何配置taro

文章目录 step1. 全局安装wepacksetp2. 使用npm安装tarostep3. 项目初始化 使用taro时需要在本地配置好nodejs环境&#xff0c;关于如何配置nodejs可参考我的这篇博文 如何配置nodejs环境 step1. 全局安装wepack 使用指令npm install webpack -g即可 安装完成后可看到有wepa…

十大经典排序算法——选择排序和冒泡排序

一、选择排序 1.基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个元素&#xff0c;存放在序列的起始位置&#xff0c;直到全部待排序的数据全部排完。 2.直接选择排序 (1) 在元素集合arr[i] — arr[n - 1]中选择关键妈的最大&#xff08;小…

GaussDB关键技术原理:高性能(二)

GaussDB关键技术原理&#xff1a;高性能&#xff08;一&#xff09;从数据库性能优化系统概述对GaussDB的高性能技术进行了解读&#xff0c;本篇将从查询处理综述方面继续分享GaussDB的高性能技术的精彩内容。 2 查询处理综述 内容概要&#xff1a;本章节介绍查询端到端处理的…