Create structure and Classes
Create Structure
創(chuàng)建structure結(jié)構(gòu)如下
Create Class ZCL_CONATINER
ZCL_CONATINER用于存儲(chǔ)UIBB的DATA匆笤,其沒(méi)有method甘邀,只有一個(gè)attribute布轿。
Create Class ZCL_CONNECTOR
ZCL_CONNECTOR 作為wire schema的connector class腐魂,在interface中引入IF_FPM_CONNECTOR,IF_FPM_CONNECTOR_DEF蒙挑,IF_FPM_CONNECTOR_RUN确镊,在attribute中引入MO_CONTAINER與 MV_PORT_TYPE,在方法中添加 CLASS_CONSTRUCTOR。
實(shí)現(xiàn)相應(yīng)的方法
METHOD if_fpm_connector_run~get_output.
* Set container data as output
ro_output = mo_container.
ENDMETHOD.
METHOD if_fpm_connector_run~is_create_allowed.
* Entity creation is not possible
rv_allowed = abap_false.
ENDMETHOD.
METHOD if_fpm_connector_def~initialize.
* Set value to port type and wire label
mv_port_type = iv_port_type.
if_fpm_connector_def~mv_wire_label = 'Identity'. " hard code just for example, you can create text element
ENDMETHOD.
METHOD if_fpm_connector_def~set_input.
* set input data to container
mo_container ?= io_input.
ENDMETHOD.
METHOD class_constructor.
* It's generally to set 'FBI' as sv_namespace
if_fpm_connector~sv_namespace = 'FBI'.
ENDMETHOD.
Create Class ZCL_INITIAL_FORM_UIBB_FDR
創(chuàng)建ZCL_INITIAL_FORM_UIBB_FDR作為 initial page 中 FORM GUIBB 的 feeder class根蟹,引入接口IF_FPM_GUIBB脓杉,IF_FPM_GUIBB_FORM,IF_FPM_FEEDER_MODEL简逮,添加 attributes MO_DATA球散,MS_OBJECT_KEY
實(shí)現(xiàn)相應(yīng)的方法
METHOD if_fpm_feeder_model~get_inport_key.
* Provide the inport object key
GET REFERENCE OF ms_object_key INTO rr_object_key.
ENDMETHOD.
METHOD if_fpm_feeder_model~get_namespace.
* Get namespace, the namespace is what you set in connector class zcl_fpm_connector
rv_namespace = 'FBI'.
ENDMETHOD.
METHOD if_fpm_feeder_model~get_outports.
* Maintain outports
DATA: ls_outport TYPE if_fpm_feeder_model=>ty_s_port.
CLEAR et_outport.
GET REFERENCE OF ms_object_key INTO ls_outport-object_key.
ls_outport-type = if_fpm_feeder_model=>cs_port_type-selection.
ls_outport-identifier = 'SE'.
ls_outport-description = 'Selection'.
INSERT ls_outport INTO TABLE et_outport.
GET REFERENCE OF ms_object_key INTO ls_outport-object_key.
ls_outport-type = if_fpm_feeder_model=>cs_port_type-collection.
ls_outport-identifier = 'CO'.
ls_outport-description = 'Collection'.
INSERT ls_outport INTO TABLE et_outport.
ENDMETHOD.
METHOD if_fpm_feeder_model~get_outport_data.
* Create container instance
IF mo_data IS NOT BOUND.
CREATE OBJECT mo_data.
ENDIF.
ro_data ?= mo_data.
ENDMETHOD.
METHOD if_fpm_guibb_form~flush.
* This method can achieve the new value in UI
DATA: ls_change_log TYPE fpmgb_s_changelog,
lv_name TYPE name_komp.
FIELD-SYMBOLS: <fs_userid> TYPE /bobf/conf_key.
* Field name in screen
lv_name = 'USERID'.
* set the new value to container
READ TABLE it_change_log INTO ls_change_log WITH KEY name = lv_name.
IF sy-subrc = 0.
ASSIGN ls_change_log-new_value->* TO <fs_userid>.
mo_data->mo_container = <fs_userid>.
ENDIF.
ENDMETHOD.
METHOD if_fpm_guibb_form~get_definition.
* This method is mandatory for feeder class
* For all variants
eo_field_catalog ?= cl_abap_typedescr=>describe_by_name( 'ZFPM_STR' )."structure name
ENDMETHOD.
METHOD if_fpm_guibb~initialize.
* Create instance for container
CREATE OBJECT mo_data.
ENDMETHOD.
Create Class ZCL_MAIN_FORM_UIBB_FDR
與前面類似,創(chuàng)建ZCL_MAIN_FORM_UIBB_FDR作為 main page 中 FORM GUIBB 的 feeder class散庶,引入接口IF_FPM_GUIBB蕉堰,IF_FPM_GUIBB_FORM,IF_FPM_FEEDER_MODEL悲龟,添加 attributes MO_DATA屋讶,MS_OBJECT_KEY,MO_CONNECTOR
實(shí)現(xiàn)相應(yīng)的方法
METHOD if_fpm_feeder_model~get_inport_key.
* Get inport key
GET REFERENCE OF ms_object_key INTO rr_object_key.
ENDMETHOD.
METHOD if_fpm_feeder_model~get_namespace.
rv_namespace = 'FBI'.
ENDMETHOD.
METHOD if_fpm_feeder_model~set_connector.
* Set connector
mo_connector ?= io_connector.
ENDMETHOD.
METHOD if_fpm_guibb_form~get_data.
* Set data to UI
DATA: lv_name TYPE name_komp.
FIELD-SYMBOLS: <fs_userid> TYPE /bobf/conf_key.
* Get data from connector
mo_data ?= mo_connector->if_fpm_connector_run~get_output( ).
* Set data to field 'USERID'
ASSIGN COMPONENT 'USERID' OF STRUCTURE cs_data TO <fs_userid>.
<fs_userid> = mo_data->mo_container.
* Set data changed flag
ev_data_changed = abap_true.
ENDMETHOD.
METHOD if_fpm_guibb_form~get_definition.
* This method is mandatory
* For all variants
eo_field_catalog ?= cl_abap_typedescr=>describe_by_name( 'ZFPM_STR' ).
ENDMETHOD.
Create FPM application
Create Application
創(chuàng)建Application如下
Create Application Configuration
選中Application后右擊創(chuàng)建configuration须教,在跳出的頁(yè)面中輸入configuration id皿渗,點(diǎn)擊New按鈕,填入描述與package信息
創(chuàng)建后如下
Create Component Configuration
Create OVP Component Configuration
選擇行后没卸,點(diǎn)擊 Assign 按鈕,輸入configuration id
Assig成功后秒旋,點(diǎn)擊configuration的鏈接约计,創(chuàng)建該OVP configuration
Create Page in OVP Component Configuration
進(jìn)入到OVP Component Configuration頁(yè)面,點(diǎn)擊New創(chuàng)建Initial Page
Create Component in initial Page
Create FORM UIBB Component in initial Page
在Page中創(chuàng)建Form Component
輸入相關(guān)信息
點(diǎn)擊Configure UIBB 按鈕迁筛,系統(tǒng)提示創(chuàng)建FORM UIBB Component
提示輸入Feeder Class
點(diǎn)擊創(chuàng)建Add Group煤蚌,選中Group后點(diǎn)擊Add Element in Group,選擇相應(yīng)的字段细卧,點(diǎn)擊save保存
Create Toolbar Button
點(diǎn)擊OVP鏈接返回OVP配置頁(yè)面
點(diǎn)擊創(chuàng)建Continue Toolbar 按鈕
Create Component in main Page
按照前面步驟Main Page的FORM UIBB
Configure UIBB如下
Create a Wire Schema
回到OVP界面,創(chuàng)建wire如下
Test Application
GUI中選中Application Configuration后點(diǎn)擊測(cè)試按鈕,測(cè)試程序