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.mzph.cn/news/854706.shtml

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

相关文章

期末复习GGG-----查找子串

郭的 char *search( char *s, char *t ){int i0;while(s[i]){int j0;if(s[i]t[0]){while(s[ij]t[j]&&t[j]){j;}if(t[j]\0)return si;}i;}return NULL; } AI的 #include <stdio.h> #include <string.h> #define MAXS 30char *search(char *s, char *t);in…

ctfshow web七夕杯

web签到 执行命令没有回显&#xff0c;我们直接写文件就可以了 有字符长度限制 ls />a nl /*>a访问url/api/a下载文件 easy_calc <?phpif(check($code)){eval($result."$code".";");echo($result); }function check(&$code){$num1…

Golang | Leetcode Golang题解之第164题最大间距

题目&#xff1a; 题解&#xff1a; type pair struct{ min, max int }func maximumGap(nums []int) (ans int) {n : len(nums)if n < 2 {return}minVal : min(nums...)maxVal : max(nums...)d : max(1, (maxVal-minVal)/(n-1))bucketSize : (maxVal-minVal)/d 1// 存储 (…

aasist-bladedisc 音频反欺骗算法模型

AASIST 论文 参考ASIST: Audio Anti-Spoofing using Integrated Spectro-Temporal Graph Attention Networks https://arxiv.org/pdf/2110.01200.pdf 模型结构 aasist是一种开源的音频反欺诈的模型&#xff0c;主要的模型结构如下所示&#xff1a; 算法原理 环境配置 Dock…

CVE-2023-38836(文件上传+命令执行)

简介 BoidCMS v.2.0.0 存在文件上传漏洞&#xff0c;远程攻击者可通过添加 GIF 头部绕过 MIME 类型检查&#xff0c;执行任意代码。 过程 打开靶场 对网站进行目录扫描 发现后台&#xff0c;登录弱口令账号密码 admin/password 发现文件上传位置 根据简介提示&#xff0c;…

CentOS 7.9检测硬盘坏区、实物定位(三)

系列文章目录 CentOS 7.9上创建JBOD&#xff08;一&#xff09; CentOS 7.9上创建的JBOD阵列恢复&#xff08;二&#xff09; 文章目录 系列文章目录前言一、在系统中找到硬盘对应的盘符二、使用命令定位实物1.badblocks检测坏块2.对2T以上的硬盘检测&#xff08;对本篇非必要…

我用chatgpt写了一款程序

众所周知&#xff0c;Chatgpt能够帮助人们写代码&#xff0c;前几天苏音试着完全用Chatgpt写一款Python程序 有一句话我很赞同&#xff0c;未来能代替人的不是AI&#xff0c;是会使用AI的人。 最终&#xff0c;写下来效果还不错&#xff0c;完全提升了我的办公效率。 开发前…

0X0-基于Sklearn的机器学习入门:聚类(上)

本节及后续章节将介绍深度学习中的几种聚类算法&#xff0c;所选方法都在Sklearn库中聚类模块有具体实现。本节为上篇&#xff0c;将介绍几种相对基础的聚类算法&#xff0c;包括K-均值算法和均值漂移算法。 目录 X.1 聚类概述 X.1.1 聚类的种类 X.1.2 Sklearn聚类子模块 …

设计模式1

1、面向对象三大特性&#xff1a;封装、继承、多态 2、什么是接口&#xff1f; 3、面向对象的SOLID五大原则 4、简单工厂模式 5、工厂方法模式

网络安全:数据库安全性

文章目录 网络安全&#xff1a;数据库安全性引言数据库安全性的重要性常见的数据库安全威胁数据库安全性的最佳实践数据加密访问控制审计和监控 结语 网络安全&#xff1a;数据库安全性 引言 在前两篇文章中&#xff0c;我们讨论了SQL注入的概念和防范措施。本篇文章将聚焦于…

又一个SQL Developer中调试存储过程的例子

此例基于OBE&#xff08;Oracle By Example&#xff09;的示例。是在SQL Developer中调试存储过程一文的进阶。复习了前文的一些基本概念&#xff0c;并纠正了官方示例的一个错误。 本文使用的是标准的HR 示例 Schema&#xff0c;调试的存储过程源代码如下&#xff1a; CREAT…

【PB案例学习笔记】-22制作一个语音朗读金额小应用

写在前面 这是PB案例学习笔记系列文章的第22篇&#xff0c;该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习&#xff0c;提高编程技巧&#xff0c;以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码&#xff0c;小凡都上传到了gite…

关于在word中使用Axmath的报错的解决

介绍 Axmath是数学公式编辑器软件。官网如下。 AxMath/AxGlyph/AxCells (amyxun.com) 支持正版。 在word中使用Axmath 点击word中的“文件”→“选项”。 选择“加载项” 选择“word加载项” 在Axmath默认的安装目录如下&#xff1a; C:\Program Files (x86)\AxMathhao&am…

【头歌】HBase扫描与过滤答案 解除复制粘贴限制

解除复制粘贴限制 当作者遇到这个限制的时候火气起来了三分&#xff0c;然后去网上搜索答案&#xff0c;然后发现了一位【碳烤小肥肠】居然不贴代码&#xff0c;XX链接&#xff0c;贴截图&#xff0c;瞬时火气冲顶&#xff0c;怒写此文 首先启动万能的控制台&#xff0c;然后C…

5年Android 开发者的社招面经总结(值得你记录收藏)

4. 分别代表什么含义&#xff0c;他们有什么区别&#xff1f; 5. 了解过 Java 的集合吗&#xff1f; 6. 说说 HashMap 的底层实现原理&#xff1f; 7. ArrayList 和 LinkedList 的区别&#xff1f; 8. Java 集合中哪些是线程安全的&#xff1f; 9. JVM 的内存…

中年帕金森:守护健康,从容面对生活挑战

在快节奏的现代生活中&#xff0c;中年人群面临着越来越多的健康挑战。其中&#xff0c;帕金森病作为一种常见的神经系统疾病&#xff0c;逐渐引起了人们的关注。帕金森病不仅影响患者的身体健康&#xff0c;还对其日常生活造成极大的困扰。那么&#xff0c;我们该如何应对中年…

智慧分流:探索互联网与物联网的负载均衡技术

数字化时代&#xff0c;个人认为&#xff0c;无论是互联网还是物联网&#xff0c;还是其他网&#xff0c;在各个层级&#xff0c;都对系统的稳定性和效率提出了更高的要求。负载均衡技术作为保障系统平稳运行的关键&#xff0c;其重要性不言而喻。在数字世界的海洋中&#xff0…

在哪里可以查到一手的标讯信息?

标讯信息集招投标讯息的简称。在市场上&#xff0c;标讯是一种非常关键的信息&#xff0c;包括招标公告&#xff0c;文件&#xff0c;截止日期等关键内容&#xff0c;便于需求方和供应商进行业务合作。 对于企业来说&#xff0c;及时获取到最新的标讯信息是非常重要的&#xf…

MySQL8新特性:窗口函数

目录 一、 概念二、语法基本语法语法解析进阶语法命名窗口WINDOW AS框架FRAME_CLAUSE 三、窗口函数ROW_NUMBERRANKDENSE_RANKPERCENT_RANKCUME_DISTFIRST_VALUE与LAST_VALUENTH_VALUELAG与LEADNTILE 四、窗口函数使用事项五、窗口函数优化方法六、面试常问&#xff08;持续更新…

设计模式-创建型-04-建造者模式

1、盖房项目需求 1&#xff09;需要建房子&#xff1a;这一过程为打桩、砌墙、封顶2&#xff09;房子有各种各样的&#xff0c;比如普通房&#xff0c;高楼&#xff0c;别墅&#xff0c;各种房子的过程虽然一样&#xff0c;但是要求不要相同的3&#xff09;请编写程序&#xf…