ABAP FPM View

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è)試程序


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晚碾,一起剝皮案震驚了整個(gè)濱河市团赁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌止邮,老刑警劉巖这橙,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異导披,居然都是意外死亡屈扎,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)撩匕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)鹰晨,“玉大人,你說(shuō)我怎么就攤上這事∧@” “怎么了漠趁?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)哩牍。 經(jīng)常有香客問(wèn)我棚潦,道長(zhǎng),這世上最難降的妖魔是什么膝昆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任丸边,我火速辦了婚禮,結(jié)果婚禮上荚孵,老公的妹妹穿的比我還像新娘妹窖。我一直安慰自己,他們只是感情好收叶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布骄呼。 她就那樣靜靜地躺著,像睡著了一般判没。 火紅的嫁衣襯著肌膚如雪蜓萄。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天澄峰,我揣著相機(jī)與錄音嫉沽,去河邊找鬼。 笑死俏竞,一個(gè)胖子當(dāng)著我的面吹牛绸硕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播魂毁,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼玻佩,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了席楚?” 一聲冷哼從身側(cè)響起咬崔,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烦秩,沒(méi)想到半個(gè)月后刁赦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡闻镶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年甚脉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片铆农。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡牺氨,死狀恐怖狡耻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猴凹,我是刑警寧澤夷狰,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站郊霎,受9級(jí)特大地震影響沼头,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜书劝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一进倍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧购对,春花似錦猾昆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至解幽,卻和暖如春贴见,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背躲株。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工片部, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人徘溢。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓吞琐,卻偏偏與公主長(zhǎng)得像捆探,于是被迫代替她去往敵國(guó)和親然爆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容