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,复制链接,直接运行即可:

效果如图:

 

转载于:https://www.cnblogs.com/sapSB/p/10757519.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值