FPM五:拆解前面的四——OVP做查询和结果
说明:前面的例子是将list和search放到一个Feeder Class里的,这里来做拆解分步说明。
1.创建SEARCH的结构
2.创建RESULT的结构
表类型(不用表类型的话,需要自己在class里定义个内表,这里为了方便截图定义出来)
3.定义Search的feeder class.
3.1添加接口类:GUIBB (并激活所有method,默认是inactive的)
3.2重定义GET_DEFINITION方法:
method IF_FPM_GUIBB_SEARCH~GET_DEFINITION.
EO_FIELD_CATALOG_ATTR ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_NAME( 'ZLY_SEARCH01' )."获取查询参数结构
endmethod.
3.3重定义PROCESS_EVENT方法:将查询条件raise给result的feeder class。
METHOD IF_FPM_GUIBB_SEARCH~PROCESS_EVENT.
DATA:LR_FPM TYPE REF TO IF_FPM,
LR_EVENT_DATA TYPE REF TO CL_FPM_PARAMETER. IF IO_EVENT->MV_EVENT_ID = IF_FPM_GUIBB_SEARCH=>FPM_EXECUTE_SEARCH. LR_FPM = CL_FPM_FACTORY=>GET_INSTANCE( )."创建FPM 实例 CREATE OBJECT LR_EVENT_DATA."创建参数对象 LR_EVENT_DATA->IF_FPM_PARAMETER~SET_VALUE("将查询参数添加对参数对象里
IV_KEY = 'SEL_TAB'
IV_VALUE = IT_FPM_SEARCH_CRITERIA ). LR_EVENT_DATA->IF_FPM_PARAMETER~SET_VALUE("将查询参数添加对参数对象里
IV_KEY = 'MAX_NUM'
IV_VALUE = IV_MAX_NUM_RESULTS ). LR_FPM->RAISE_EVENT_BY_ID("将参数对象抛到LIST的事件中处理
IV_EVENT_ID = IF_FPM_GUIBB_LIST=>GC_EVENT_LIST_FILTER
IO_EVENT_DATA = LR_EVENT_DATA ). ENDIF.
ENDMETHOD.
4.创建RESULT的Feeder class:挨个激活method
4.1将前面创建的查询结果表类型添加到属性中:
4.2查询逻辑处理。
METHOD IF_FPM_GUIBB_LIST~PROCESS_EVENT.
DATA:GT_FPM_SEARCH_CRITERIA TYPE FPMGB_T_SEARCH_CRITERIA,
GV_MAX_NUM TYPE I,
GT_WHERE TYPE RSDS_WHERE_TAB. CASE IO_EVENT->MV_EVENT_ID.
WHEN IF_FPM_GUIBB_LIST=>GC_EVENT_LIST_FILTER.
IO_EVENT->MO_EVENT_DATA->GET_VALUE(
EXPORTING
IV_KEY = 'SEL_TAB'
IMPORTING
EV_VALUE = GT_FPM_SEARCH_CRITERIA ). IO_EVENT->MO_EVENT_DATA->GET_VALUE(
EXPORTING
IV_KEY = 'MAX_NUM'
IMPORTING
EV_VALUE = GV_MAX_NUM ). TRY .
CALL METHOD CL_FPM_GUIBB_SEARCH_CONVERSION=>TO_ABAP_SELECT_WHERE_TAB
EXPORTING
IT_FPM_SEARCH_CRITERIA = GT_FPM_SEARCH_CRITERIA
IV_TABLE_NAME = 'ZLY_SEARCH01'
* IO_FIELD_CATALOG = MO_CATALOG
IMPORTING
ET_ABAP_SELECT_TABLE = GT_WHERE.
SELECT GUID
OBJECT_ID
DESCRIPTION
PROCESS_TYPE
POSTING_DATE
SALES_ORG
PROVIDER
END_USER
RETAILER
STAT_USER
TXT30
PRODUCT_ID
ZZCHARG_TYPE
INTO TABLE GT_RESULT
FROM ZHSB_ORDER_INDEX
UP TO GV_MAX_NUM ROWS WHERE (GT_WHERE).
CATCH CX_FPMGB.
ENDTRY.
WHEN ''.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
5.重新以GET_DATA,展示结果集:
method IF_FPM_GUIBB_LIST~GET_DATA.
IF IV_EVENTID->MV_EVENT_ID = IF_FPM_GUIBB_LIST=>GC_EVENT_LIST_FILTER.
CT_DATA = GT_RESULT.
EV_DATA_CHANGED = ABAP_TRUE.
ENDIF.
endmethod.
6.数据目录设置:
method IF_FPM_GUIBB_LIST~GET_DEFINITION.
EO_FIELD_CATALOG ?= CL_ABAP_STRUCTDESCR=>DESCRIBE_BY_NAME( 'ZLY_RESULT01T' )."获取查询参数结构
endmethod.
到这里,Feeder class的事情基本完成了。下面就是去配置页面了。
7.创建OVP页面配置:
7.1T-CODE:FPM_WB
新建空组件,选择OVP
选择包,保存。
7.2点击编辑配置:进入配置主页面
7.3添加Search组件:
7.4配置UIBB。输入配置ID,点击配置UIBB。
7.5回到FPM_WB里选择Edit configuration
输入上面的FPM_SEARCH_UIBB和对应的配置ID,然后输入Feeder class进入配置页面:
点击下面添加搜索条件:
保存结束。
8.几乎相同方式,配置结果页面:
8.1FPM_WB通过Edit configuration进入,输入组件和配置ID,点击新建:
8.2输入Feeder class后进入配置页面:
8.3点击点击列:
点击保存。回到前面的配置页面,输入刚才配置的ID,保存。
到这里基本的配置已经完成,来看看效果。
说明:因为是通过FPM_WB工作台创建的,所以FPM_OVP_COMPONENT组件下会自动生成application,复制链接,直接运行即可:
效果如图:
最新文章
- javascript函数
- 自己动手写计算器v1.0
- Qt——浅谈样式表
- Hadoop集群搭建
- poj 3278:Catch That Cow(简单一维广搜)
- Jmeter外部函数引用
- MySQLdb模块安装-win环境
- 新浪云(SAE)使用没有内置的django版本
- 使用“bulk insert ”进行批量插入数据
- sublime 插件 和free 注册码
- golang(2):beego 环境搭建
- uva 11324 The Largest Clique(图论-tarjan,动态规划)
- shell -- yes or no
- django之第二天
- SDL 2.0 如何在 windows 上使用?
- css3 文字的设置
- Hibernate HQL ②
- Springboot搭建SSM+JSP的web项目
- Pycharm常用操作方法
- SpringBoot2使用WebFlux函数式编程
热门文章
- UVA10723 电子人的基因 Cyborg Genes
- localStorage,sessionStorage和cookie的区别
- Hadoop大数据学习视频教程 大数据hadoop运维之hadoop快速入门视频课程
- 为什么越来越多的人偏爱go语言
- zigbee 安全通信加密链接密钥
- appium+夜神+python3 环境配置
- Transparent PageRoute in Flutter for displaying a (semi-) transparent page
- lsyncd+rsync配置图片资源双向同步
- 机器学习实战(笔记)------------KNN算法
- postgresql之json操作