1. 程式人生 > >WDA-FPM-4-用OVP做查詢跳轉到明細 FPM四:用OVP做查詢跳轉到明細

WDA-FPM-4-用OVP做查詢跳轉到明細 FPM四:用OVP做查詢跳轉到明細

轉載:https://www.cnblogs.com/sapSB/p/10100697.html   FPM四:用OVP做查詢跳轉到明細

前面做了查詢的UIBB配置,在這邊可以直接複用,查詢的feeder class也就自動複用了。

1.給查詢的feeder class新增介面,繼續繼承form的介面。

2.挨個實現每個方法,即使是用不到的也點進去啟用。

  method IF_FPM_GUIBB_FORM~GET_DATA.
    CS_DATA = gw_table.
  endmethod.
複製程式碼
  method IF_FPM_GUIBB_FORM~GET_DEFINITION.
    DATA:gt_data TYPE TABLE OF zhsb_order_index.

    eo_field_catalog ?= cl_abap_tabledescr=>describe_by_data( gw_table ).
mo_catalog = eo_field_catalog.

"action 引數是控制UIBB引數對映的EVENT定義。這裡可以定義回車事件,下拉事件等 endmethod.
複製程式碼

3.給search的事件處理方法中新增跳轉的事件(給選擇單號的事件):

複製程式碼
  METHOD if_fpm_guibb_search~process_event.
    DATA:lt_where TYPE rsds_where_tab.
    DATA:lt_order TYPE TABLE OF zhsb_order_index,
         ls_order TYPE zhsb_order_index.
    DATA:lc_para TYPE REF TO cl_fpm_parameter.
    DATA:ls_value TYPE string.

    DATA:ls_result TYPE zhsb_order_index.


    IF io_event->mv_event_id = if_fpm_guibb_search=>fpm_execute_search.

      TRY .
          CALL METHOD cl_fpm_guibb_search_conversion=>to_abap_select_where_tab
            EXPORTING
              it_fpm_search_criteria = it_fpm_search_criteria
              iv_table_name          = 'ZHSB_ORDER_INDEX'
              io_field_catalog       = mo_catalog
            IMPORTING
              et_abap_select_table   = lt_where.
        CATCH cx_fpmgb.
      ENDTRY.

      SELECT * FROM zhsb_order_index INTO TABLE lt_order UP TO iv_max_num_results ROWS WHERE (lt_where).
      IF sy-subrc = 0.
        LOOP AT lt_order INTO  ls_order.
          MOVE-CORRESPONDING ls_order TO ls_result.
          APPEND ls_result TO gt_table.
        ENDLOOP.
        ev_result = 'OK'.
      ENDIF.

    ELSEIF io_event->mv_event_id = 'FPM_RESULT_SEL'.
      DATA : lo_event TYPE REF TO       cl_fpm_event,
             lo_fpm   TYPE REF TO       if_fpm.

      READ TABLE gt_table INTO gw_table INDEX 4.
      lo_event ?= cl_fpm_event=>create_by_id( 'FPM_CHANGE_CONTENT_AREA' ).

      lo_event->mo_event_data->set_value(
        EXPORTING
          iv_key   = 'TARGET_CONTENT_AREA'
          iv_value = 'PAGE_2'
      ).
      lo_fpm ?= cl_fpm=>get_instance( ).

      lo_fpm->raise_event( lo_event ).
    ENDIF.
  ENDMETHOD.
複製程式碼

 

4.開啟FPM_WB.新建empty application。

選擇包,儲存。

5.點選,編輯配置

進入到概覽頁配置介面:

修改第一頁描述,並新增第二頁。

6.給page 1分配UIBB配置型別Search.

配置編號選擇前一篇中的配置編號,複用。

選擇UIBB,點選配置。

修改結果中的單號欄位,改為link to action。儲存並返回.

這時候可以點選執行,試看一下。

很好,這第一頁沒問題了,開始加第二頁。

7.配置第二頁:

新增FORM元件

輸入配置號,點選UIBB配置。

點選OK.

填寫Feeder class.

 

儲存並返回。

8.給PAGE2新增按鈕,並指向page 1.

儲存,執行。

 

et_action_definition

前面做了查詢的UIBB配置,在這邊可以直接複用,查詢的feeder class也就自動複用了。

1.給查詢的feeder class新增介面,繼續繼承form的介面。

2.挨個實現每個方法,即使是用不到的也點進去啟用。

  method IF_FPM_GUIBB_FORM~GET_DATA.
    CS_DATA = gw_table.
  endmethod.
複製程式碼
  method IF_FPM_GUIBB_FORM~GET_DEFINITION.
    DATA:gt_data TYPE TABLE OF zhsb_order_index.

    eo_field_catalog ?= cl_abap_tabledescr=>describe_by_data( gw_table ).
mo_catalog = eo_field_catalog.

"action 引數是控制UIBB引數對映的EVENT定義。這裡可以定義回車事件,下拉事件等 endmethod.
複製程式碼

3.給search的事件處理方法中新增跳轉的事件(給選擇單號的事件):

複製程式碼
  METHOD if_fpm_guibb_search~process_event.
    DATA:lt_where TYPE rsds_where_tab.
    DATA:lt_order TYPE TABLE OF zhsb_order_index,
         ls_order TYPE zhsb_order_index.
    DATA:lc_para TYPE REF TO cl_fpm_parameter.
    DATA:ls_value TYPE string.

    DATA:ls_result TYPE zhsb_order_index.


    IF io_event->mv_event_id = if_fpm_guibb_search=>fpm_execute_search.

      TRY .
          CALL METHOD cl_fpm_guibb_search_conversion=>to_abap_select_where_tab
            EXPORTING
              it_fpm_search_criteria = it_fpm_search_criteria
              iv_table_name          = 'ZHSB_ORDER_INDEX'
              io_field_catalog       = mo_catalog
            IMPORTING
              et_abap_select_table   = lt_where.
        CATCH cx_fpmgb.
      ENDTRY.

      SELECT * FROM zhsb_order_index INTO TABLE lt_order UP TO iv_max_num_results ROWS WHERE (lt_where).
      IF sy-subrc = 0.
        LOOP AT lt_order INTO  ls_order.
          MOVE-CORRESPONDING ls_order TO ls_result.
          APPEND ls_result TO gt_table.
        ENDLOOP.
        ev_result = 'OK'.
      ENDIF.

    ELSEIF io_event->mv_event_id = 'FPM_RESULT_SEL'.
      DATA : lo_event TYPE REF TO       cl_fpm_event,
             lo_fpm   TYPE REF TO       if_fpm.

      READ TABLE gt_table INTO gw_table INDEX 4.
      lo_event ?= cl_fpm_event=>create_by_id( 'FPM_CHANGE_CONTENT_AREA' ).

      lo_event->mo_event_data->set_value(
        EXPORTING
          iv_key   = 'TARGET_CONTENT_AREA'
          iv_value = 'PAGE_2'
      ).
      lo_fpm ?= cl_fpm=>get_instance( ).

      lo_fpm->raise_event( lo_event ).
    ENDIF.
  ENDMETHOD.
複製程式碼

 

4.開啟FPM_WB.新建empty application。

選擇包,儲存。

5.點選,編輯配置

進入到概覽頁配置介面:

修改第一頁描述,並新增第二頁。

6.給page 1分配UIBB配置型別Search.

配置編號選擇前一篇中的配置編號,複用。

選擇UIBB,點選配置。

修改結果中的單號欄位,改為link to action。儲存並返回.

這時候可以點選執行,試看一下。

很好,這第一頁沒問題了,開始加第二頁。

7.配置第二頁:

新增FORM元件

輸入配置號,點選UIBB配置。

點選OK.

填寫Feeder class.

 

儲存並返回。

8.給PAGE2新增按鈕,並指向page 1.

儲存,執行。

 

et_action_definition