ABAP FPM View

Create structure and Classes

Create Structure

创建structure结构如下


Create Class ZCL_CONATINER

ZCL_CONATINER用于存储UIBB的DATA,其没有method,只有一个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。



实现相应的方法

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

创建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


实现相应的方法

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

与前面类似,创建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



实现相应的方法

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

创建Application如下


Create Application Configuration

选中Application后右击创建configuration,在跳出的页面中输入configuration id,点击New按钮,填入描述与package信息



创建后如下


Create Component Configuration

Create OVP Component Configuration
选择行后,点击 Assign 按钮,输入configuration id


Assig成功后,点击configuration的链接,创建该OVP configuration

Create Page in OVP Component Configuration
进入到OVP Component Configuration页面,点击New创建Initial Page

Create Component in initial Page

Create FORM UIBB Component in initial Page
在Page中创建Form Component


输入相关信息

点击Configure UIBB 按钮,系统提示创建FORM UIBB Component

提示输入Feeder Class

点击创建Add Group,选中Group后点击Add Element in Group,选择相应的字段,点击save保存

Create Toolbar Button
点击OVP链接返回OVP配置页面

点击创建Continue Toolbar 按钮

Create Component in main Page

按照前面步骤Main Page的FORM UIBB



Configure UIBB如下


Create a Wire Schema

回到OVP界面,创建wire如下


Test Application

GUI中选中Application Configuration后点击测试按钮,测试程序


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容