FPM五:拆解前面的四——OVP作查詢和結果

說明:前面的例子是將list和search放到一個Feeder Class裏的,這裏來作拆解分步說明。app

1.建立SEARCH的結構spa

2.建立RESULT的結構code

表類型(不用表類型的話,須要本身在class裏定義個內表,這裏爲了方便截圖定義出來)對象

3.定義Search的feeder class.blog

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.
it

3.3重定義PROCESS_EVENT方法:將查詢條件raise給result的feeder class。io

  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:挨個激活methodclass

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,複製連接,直接運行便可:

效果如圖:

相關文章
相關標籤/搜索