RERCS系统开发实战案例-Part07 FPM Application的Feeder Class列表组件(List UIBB)的实施

Feeder Class列表组件(List UIBB)的实施

1)此处涉及到新增按钮事件,先介绍一下新增按钮步骤:
在这里插入图片描述在这里插入图片描述按钮选择:是指多个按钮组成的下拉框菜单;
在这里插入图片描述
按钮:只是一个简单的按钮
在这里插入图片描述在这里插入图片描述2)以下是IF_FPM_GUIBB_LIST中各个方法的实施源码,仅供参考(仅记录有实施需求的方法):
在这里插入图片描述
① 方法IF_FPM_GUIBB_LIST~PROCESS_EVENT:创建按钮等事件活动;

METHOD IF_FPM_GUIBB_LIST~PROCESS_EVENT.
    DATA: LO_FPM TYPE REF TO IF_FPM.
    DATA: LT_APP_PARAMS TYPE APB_LPD_T_PARAMS,
          LS_APP_PARAM  LIKE LINE OF LT_APP_PARAMS[].

    DATA: LS_DIALOG_BOX_PROPERTIES TYPE FPM_S_DIALOG_BOX_PROPERTIES.
    LO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).

    CASE IO_EVENT->MV_EVENT_ID .
      WHEN  'BTN_CREATE'.

        LS_APP_PARAM-KEY = /RER/IF_CONSTANTS=>GC_APP_PARAM-CHANGE_MODE.
        LS_APP_PARAM-VALUE = 'C'.
        APPEND LS_APP_PARAM TO LT_APP_PARAMS[].

        LS_APP_PARAM-KEY = IF_FPM_CONSTANTS=>GC_APP_PARAMS-EDIT_MODE.
        LS_APP_PARAM-VALUE = 'E'.
        APPEND LS_APP_PARAM TO LT_APP_PARAMS[].

        /RER/CL_LIB_CCM_UTIL=>NAVIGATE_VIA_LPD(
          IV_APP_ALIAS  = 'CREATE_YSYFBL'
          IT_APP_PARAMS = LT_APP_PARAMS[] ).

      WHEN 'FPM_GUIBB_LIST_CELL_ACTION'.
        READ TABLE MT_RESULT ASSIGNING FIELD-SYMBOL(<FS_RESL>) INDEX IV_LEAD_INDEX.
        IF SY-SUBRC = 0.

          LS_APP_PARAM-KEY = /RER/IF_CONSTANTS=>GC_APP_PARAM-KEY.
          LS_APP_PARAM-VALUE = <FS_RESL>-KEY.
          APPEND LS_APP_PARAM TO LT_APP_PARAMS[].

          LS_APP_PARAM-KEY = /RER/IF_CONSTANTS=>GC_APP_PARAM-SKIP_INITIAL_SCREEN.
          LS_APP_PARAM-VALUE = ABAP_TRUE.
          APPEND LS_APP_PARAM TO LT_APP_PARAMS[].

          LS_APP_PARAM-KEY = IF_FPM_CONSTANTS=>GC_APP_PARAMS-EDIT_MODE.
          LS_APP_PARAM-VALUE = 'R'.
          APPEND LS_APP_PARAM TO LT_APP_PARAMS[].

          /RER/CL_LIB_CCM_UTIL=>NAVIGATE_VIA_LPD(
            IV_APP_ALIAS  = 'CREATE_YSYFBL'
            IT_APP_PARAMS = LT_APP_PARAMS[] ).

        ENDIF.
    ENDCASE.
  ENDMETHOD.

②方法IF_FPM_GUIBB_LIST~GET_DATA:获取数据, 此处直接通过方法IF_FPM_GUIBB_SEARCH~GET_DATA获取的数据通过参数传值;
在这里插入图片描述

  METHOD IF_FPM_GUIBB_LIST~GET_DATA.
    CT_DATA = MT_RESULT.
    EV_FIELD_USAGE_CHANGED = ABAP_TRUE.
    EV_DATA_CHANGED = ABAP_TRUE.
  ENDMETHOD.

③ 方法IF_FPM_GUIBB_LIST~GET_DEFINITION:列表结构字段定义搜索帮助与及按钮名称定义;

DATA: LS_FIELD_DESCR TYPE        FPMGB_S_LISTFIELD_DESCR,
          LO_STRUCTDESCR TYPE REF TO CL_ABAP_STRUCTDESCR,
          LT_COMPONENT   TYPE        ABAP_COMPONENT_TAB.

    FIELD-SYMBOLS:  <FS_COMPONENT> LIKE LINE OF LT_COMPONENT.
    DATA: LT_FIXED_VALUES TYPE WDR_CONTEXT_ATTR_VALUE_LIST.

    EO_FIELD_CATALOG ?= CL_ABAP_TABLEDESCR=>DESCRIBE_BY_NAME( 'ZRRE_T_BO_YSYFBL_ROOT_C' ).
    LO_STRUCTDESCR ?= CL_ABAP_TABLEDESCR=>DESCRIBE_BY_NAME( 'ZRRE_S_BO_YSYFBL_ROOT_C' ).
*    lt_component = lo_structdescr->get_components( ).

    DATA(LT_FIELD_LIST) =  LO_STRUCTDESCR->GET_DDIC_FIELD_LIST( P_LANGU = SY-LANGU P_INCLUDING_SUBSTRUCTRES = 'X' ).
    LOOP AT LT_FIELD_LIST ASSIGNING FIELD-SYMBOL(<FS_FIELD_LIST>).
      LS_FIELD_DESCR-NAME = <FS_FIELD_LIST>-FIELDNAME.
      LS_FIELD_DESCR-ALLOW_FILTER = ABAP_TRUE.
      LS_FIELD_DESCR-ALLOW_AGGREGATION = ABAP_TRUE.
      LS_FIELD_DESCR-ALLOW_SORT = ABAP_TRUE.
      LS_FIELD_DESCR-VISIBILITY = CL_WD_UIELEMENT=>E_VISIBLE-VISIBLE.

      APPEND LS_FIELD_DESCR TO ET_FIELD_DESCRIPTION.
      CLEAR LS_FIELD_DESCR.
    ENDLOOP.

    "列表字段显示文本
    CLEAR LS_FIELD_DESCR.
    LT_FIXED_VALUES = ZRRE_CL_LIB_CCM_UTIL=>GET_QY3_FIXED_VALUES( ).
    APPEND VALUE #( NAME = 'QYBM' FIXED_VALUES = LT_FIXED_VALUES ) TO ET_FIELD_DESCRIPTION.

    CLEAR LS_FIELD_DESCR.
    LT_FIXED_VALUES = ZRRE_CL_LIB_CCM_UTIL=>GET_ZJB_FIXED_VALUES(  ).
    APPEND VALUE #( NAME = 'ZJBBM' FIXED_VALUES = LT_FIXED_VALUES ) TO ET_FIELD_DESCRIPTION.

    "自定义按钮扩展
    APPEND VALUE #( ID = 'BTN_CREATE' ENABLED = ABAP_TRUE ) TO ET_ACTION_DEFINITION.
*    APPEND VALUE #( ID = 'BTN_CRT_02' ENABLED = ABAP_TRUE ) TO ET_ACTION_DEFINITION.

*---Shared dictionary------------------------------------------------
    DATA: LV_CONFIG_ID TYPE        WDY_CONFIG_ID,
          LO_DIC       TYPE REF TO /RER/CL_SHARED_DIC.
    DATA: LO_FPM TYPE REF TO IF_FPM.
    IF LO_FPM IS INITIAL.
      LO_FPM ?= CL_FPM_FACTORY=>GET_INSTANCE( ).
    ENDIF.
    IF LO_FPM IS NOT INITIAL.
      CALL METHOD LO_FPM->MO_APP_PARAMETER->GET_VALUE
        EXPORTING
          IV_KEY   = /RER/IF_CCM_CONSTANTS=>GC_WD_CONFIGID "'SAP-WD-CONFIGID'
        IMPORTING
          EV_VALUE = LV_CONFIG_ID.

      CREATE OBJECT LO_DIC EXPORTING IV_CONFIG_ID = LV_CONFIG_ID .
      .
      IF LO_DIC IS NOT INITIAL.
        CALL METHOD LO_DIC->CHG_DEF
          CHANGING
            CT_ACT      = ET_ACTION_DEFINITION
            CT_LIST_FLD = ET_FIELD_DESCRIPTION.
      ENDIF.
    ENDIF.

该方法是对于List UIBB整个页面的按钮,字段等页面属性的设置,应用较广泛。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混沌破晓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值