FPM五:拆解前面的四——OVP做查询和结果
说明:前面的例子是将list和search放到一个Feeder Class里的,这里来做拆解分步说明。
1.创建SEARCH的结构
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。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。

更多精彩