zoukankan      html  css  js  c++  java
  • 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,复制链接,直接运行即可:

    效果如图:

  • 相关阅读:
    JVM调优总结(五)-分代垃圾回收详述1
    JVM调优总结(四)-垃圾回收面临的问题
    JVM调优总结(三)-基本垃圾回收算法
    JVM调优总结(二)-一些概念
    JVM调优总结(一)-- 一些概念
    ASP过滤HTML标签
    ASP防止盗链的一段代码
    通用安全字符串输入,彻底替换server.htmlencode
    ASP长文章分页的两个方法,函数
    自己用到的一个字符串替换函数
  • 原文地址:https://www.cnblogs.com/sapSB/p/10757519.html
Copyright © 2011-2022 走看看