WDA-FPM-4-用OVP做查詢跳轉到明細 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