码迷,mamicode.com
首页 > 其他好文 > 详细

UI基础四:简单的assign block

时间:2017-11-02 11:22:39      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:ace   nod   ext   order   extension   cflow   ssi   日志   xxxxxx   

经常会有需求让在标准的order加个assign block,那就来简单说一下:

1.创建assign block组件ZXXXXXX

2.添加BTORDER节点和GUID属性

3.创建表视图(可配置,根据情况是否按钮),在表的初始化中DO_INIT_CONTEXT或者DO_PREPARE_OUTPUT中根据GUID带出block信息

 

  METHOD do_init_context.
    DATA:gr_order     TYPE REF TO if_bol_bo_property_access,
         gw_order     TYPE crmst_guid_btil,
         lr_col       TYPE REF TO if_bol_bo_col,
         lr_valuenode TYPE REF TO cl_bsp_wd_value_node,
         gt_log       TYPE TABLE OF zcrm_proce_log,
         gw_log       LIKE LINE OF gt_log,
         gt_text      TYPE TABLE OF zdelay_reason,
         gw_text      LIKE LINE OF gt_text,
         gw_struct    TYPE zcrms0046,
         lr_line      TYPE REF TO zcrms0046.
    REFRESH:gt_log.
    CLEAR:gw_log.
    super->do_init_context( ).

    gr_order = me->typed_context->btorder->collection_wrapper->get_current( ).
    IF gr_order IS BOUND.
      gr_order->get_properties(
        IMPORTING
          es_attributes = gw_order ).
      SELECT * INTO TABLE gt_log FROM zcrm_proce_log WHERE guid = gw_order-crm_guid.
      SELECT * INTO TABLE gt_text FROM zdelay_reason WHERE spras = sy-langu.
      SORT gt_text BY estat.
    ENDIF.
*    SELECT * INTO TABLE gt_log FROM zcrm_proce_log WHERE guid = gw_order-crm_guid.
    CREATE OBJECT lr_col TYPE cl_crm_bol_bo_col.
    LOOP AT gt_log INTO gw_log.
      MOVE-CORRESPONDING gw_log TO gw_struct.
      READ TABLE gt_text INTO gw_text WITH KEY estat = gw_log-zzdlyrsn BINARY SEARCH.
      IF sy-subrc = 0.
        gw_struct-in_pro_des = gw_text-text.
      ENDIF.
      CREATE DATA lr_line.
      CREATE OBJECT lr_valuenode
        EXPORTING
          iv_data_ref = lr_line.
      lr_valuenode->set_properties( gw_struct ).
      lr_col->add( lr_valuenode ).
    ENDLOOP.

    me->typed_context->proce->collection_wrapper->set_collection( lr_col ).

  ENDMETHOD.

将组件添加InterfaceView 并把BTorder节点添加。

技术分享

 

将组件添加到BT116H_SRVO的ComponentUsage

 

在BT116H_SRVO的组件控制器的WD_USAGE_INITIALIZE的方法中添加GUID节点的映射:

METHOD wd_usage_initialize.
  CONSTANTS:
    lc_node_name_totals TYPE seocmpname VALUE ADDPARENTTOTALS,
    lc_komp_name_rel    TYPE name_komp  VALUE PARENTTOTALREL1,
    lc_komp_name_total  TYPE name_komp  VALUE PARENTTOTAL1,
    lc_rel_name_cumulat TYPE string     VALUE BTHeaderCumulatExt,
    lc_komp_name_cost   TYPE string     VALUE COST_AMOUNT.

  DATA:
    lr_component_usage TYPE REF TO if_bsp_wd_component_usage,
    lr_context_node    TYPE REF TO cl_bsp_wd_context_node,
    lr_property_access TYPE REF TO if_bol_bo_property_access.


  CHECK iv_usage IS BOUND.

* late instantiation of CuCos for
* component usages

  CASE iv_usage->usage_name.
    WHEN CUBTQualif.
      get_custom_controller( BT116H_SRVO/CUBTQualifCuCo ).
    WHEN CUBTRefObj.
      get_custom_controller( BT116H_SRVO/CUBTRefObjCuCo ).
    WHEN CUBTOrgSet.
      get_custom_controller( BT116H_SRVO/CUBTOrgSetCuCo ).
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH
                                   iv_node_2_bind      = PARENTNODE ).
    WHEN CUBTAmntAll.
      get_custom_controller( BT116H_SRVO/CUBTAmntAllCuCo ).
    WHEN CUBTDates.
      get_custom_controller( BT116H_SRVO/CUBTDatesCuCo ).
    WHEN CUGSActions.
      get_custom_controller( BT116H_SRVO/CUGSActionsCuCo ).
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH
                                   iv_node_2_bind      = PARENTNODE ).
    WHEN CUGSText.
      get_custom_controller( BT116H_SRVO/CUGSTextCuCo ).
    WHEN CUBTAcAssign.
      get_custom_controller( BT116H_SRVO/CUBTAcAssignCuCo ).
    WHEN CUBTStatusUS.
      get_custom_controller( BT116H_SRVO/CUBTStatusUSCuCo ).
    WHEN CUBTPartner.
      get_custom_controller( BT116H_SRVO/CUBTPartnerCuCo ).
    WHEN CUBTChangeHistory.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH
                                   iv_node_2_bind      = BTADMINH ).
    WHEN CUBTShipping.
* bind shipping usage
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTORDER        " name of component controller node
                                   iv_node_2_bind      = BTORDER ).      " name of usage interface node

    WHEN CUBTCounter.
* bind counter usage
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH        " name of component controller node
                                   iv_node_2_bind      = BTADMIN ).      " name of usage interface node

* custom controller needed for counter link proposal
      get_custom_controller( BT116H_SRVO/CUBTCounterCuCo ).

      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_custom
                                    iv_target_node_name = PROPOSALCOMP        " name of custom controller node
                                    iv_name             = BT116H_SRVO/CUBTCounterCuCo
                                    iv_node_2_bind      = PROPOSALCOMP ).      " name of usage interface node

      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_custom
                                    iv_target_node_name = PROPOSALPROD        " name of custom controller node
                                    iv_name             = BT116H_SRVO/CUBTCounterCuCo
                                    iv_node_2_bind      = PROPOSALPROD ).      " name of usage interface node

    WHEN CUBTServiceItem
      OR CUBTServicePartItem
      OR CUBTExpenseItem
      OR CUBTToolItem
      OR CUBTSalesItem.
* bind single item component usages
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINI
                                   iv_node_2_bind      = BTADMINI ).
    WHEN CUBTSalesQuotItem.
* special binding for sales quotation item
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINI
                                   iv_node_2_bind      = BTADMINI ).

      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTITEMS
                                   iv_node_2_bind      = BTITEMS ).

    WHEN CUItemTable OR CUItemTableHeader.
* bind item table component usages
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTITEMS
                                   iv_node_2_bind      = BTITEMS ).

      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINI
                                   iv_node_2_bind      = BTADMINI ).

    WHEN CUGSCMOverview OR CUGSCMEdit.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_custom
                                   iv_name             = BT116H_SRVO/CUGSCMCuCo
                                   iv_target_node_name = CMBO
                                   iv_node_2_bind      = CMBUSOBJ ).

      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_custom
                                   iv_name             = BT116H_SRVO/CUGSCMCuCo
                                   iv_target_node_name = ATTRIBUTES
                                   iv_node_2_bind      = ATTRIBUTES ).

* bind parent node for locking
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH        " name of component controller node
                                   iv_node_2_bind      = PARENTNODE ).   " name of usage interface node

    WHEN CUGSSurvey.

      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH
                                   iv_node_2_bind      = ADMINH ).

      iv_usage->bind_context_node(
                  iv_controller_type  = cl_bsp_wd_controller=>co_type_custom
                  iv_target_node_name = SURVEYVIEWTITLE
                  iv_name             = BT116H_SRVO/CUGSSurveyCuCo
                  iv_node_2_bind      = SURVEYVIEWTITLE ).

    WHEN CUBTPayments.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTORDER
                                   iv_node_2_bind      = BTORDER ).
    WHEN CUGSPrices.

      get_custom_controller( BT116H_SRVO/CUGSPricesCuCo ).

* bind parent node
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_custom
                                   iv_name             = BT116H_SRVO/CUGSPricesCuCo
                                   iv_target_node_name = BTADMINH        " name of component controller node
                                   iv_node_2_bind      = PARENTNODE ).      " name of usage interface node

* prepare for display of price totals of header
      lr_component_usage   = me->get_component_usage( iv_usage->usage_name ).
      lr_context_node      = lr_component_usage->get_context_node( lc_node_name_totals ).
      lr_property_access   = lr_context_node->collection_wrapper->get_first( ).
      lr_property_access->set_property_as_string( iv_attr_name = lc_komp_name_rel
                                                  iv_value     = lc_rel_name_cumulat ).
      lr_property_access->set_property_as_string( iv_attr_name = lc_komp_name_total
                                                  iv_value     = lc_komp_name_cost   ).


* Private Notes
    WHEN CUPrivNote.
      CALL METHOD iv_usage->bind_context_node
        EXPORTING
          iv_controller_type  = cl_bsp_wd_controller=>co_type_custom
          iv_name             = BT116H_SRVO/CUPrivNoteCuCo "#EC NOTEXT
          iv_target_node_name = BOROBJECT                 "#EC NOTEXT
          iv_node_2_bind      = BOROBJECT.                "#EC NOTEXT


    WHEN CUBTDocFlow.
      get_custom_controller( BT116H_SRVO/CUBTDocFlowCuCo ).
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH
                                   iv_node_2_bind      = PARENTNODE ).
    WHEN CUBTSolution OR CUBTEMail.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH
                                   iv_node_2_bind      = BTADMINH ).

    WHEN CUGSKnowArtDocFlow.
      get_custom_controller( BT116H_SRVO/CUGSDocFlowCuCo ).
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTADMINH
                                   iv_node_2_bind      = PARENTNODE ).
    WHEN CUBTCategories.
      get_custom_controller( BT116H_SRVO/CUBTCategoriesCuCo ).
*   bind payment cards
    WHEN CUBTPaycards.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTORDER
                                   iv_node_2_bind      = BTORDER ).
    WHEN CUBTFollowUp.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                             iv_target_node_name = BTADMINH
                             iv_node_2_bind      = BTADMINH ).

    WHEN CUCaseLink.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                             iv_target_node_name = BTORDER
                             iv_node_2_bind      = EXTLINKOBJ ).

    WHEN CUCustomer_H.
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                              iv_target_node_name = BTADMINH
                              iv_node_2_bind      = BTADMINH ).

    WHEN CUGSProductCatalog.                              "#EC NOTEXT
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTITEMS "#EC NOTEXT
                                   iv_node_2_bind      = ITEMS ). "#EC NOTEXT
 "ADD BY LY 20170927 肖宇,增加in process 接口日志block
    WHEN CUZHSI_PROCE.                                     "#EC NOTEXT
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTORDER "#EC NOTEXT
                                   iv_node_2_bind      = BTORDER ). "#EC NOTEXT
  "ADD BY LY 20170927 肖宇,增加in process 接口日志block
    WHEN ZATTATCH.                                     "#EC NOTEXT
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                                   iv_target_node_name = BTORDER "#EC NOTEXT
                                   iv_node_2_bind      = BTORDER ). "#EC NOTEXT

    WHEN BTSubject.
      get_custom_controller( BT116H_SRVO/CuCoSubjectSet ).
**********************************************************************20161117-Begin
*开发顾问:陈国光
*业务顾问:龚慧文
*1,传数据列表中增加一列字段,当点完Upload按钮后,
*如果上传信息model NO\serial NO\product ID与原有信息不一致,给予黄色警告提示。
*由操作者决定是否继续上传,不上传则修改上传模板
*2、 物流信息日志做成一个assignment block,服务工单、退机订单上可以显示每次物流状态等信息的更新记录;
    WHEN ZCUZSA_LOGI_INFO.                                "#EC NOTEXT
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
      iv_target_node_name = BTADMINH                      "#EC NOTEXT
      iv_node_2_bind      = BTADMINH ).                   "#EC NOTEXT
**********************************************************************20161117-End
**********************************************************************20170117-Begin
*开发顾问:陈国光
*业务顾问:张弛
*FS《HOS_CRM_JP_06_周转机管理增强_V1.0_20170113》
    WHEN ZCUZSRV_JA_002.                                "#EC NOTEXT
      iv_usage->bind_context_node( iv_controller_type  = cl_bsp_wd_controller=>co_type_component
      iv_target_node_name = BTADMINH                      "#EC NOTEXT
      iv_node_2_bind      = BTADMINH ).                   "#EC NOTEXT
********************************************************************** 20170117 -End

    WHEN OTHERS.
      "Detect extension binding
      DATA: lv_binding_source TYPE string.
      lv_binding_source =
        cl_axt_assignment_block_binder=>get_binding_source_4_usage(
          iv_usage->usage_name ).

      IF lv_binding_source IS NOT INITIAL.
        CASE lv_binding_source.
          WHEN HEADER.
            "Bind Extension block
            CALL METHOD iv_usage->bind_context_node
              EXPORTING
                iv_controller_type  = cl_bsp_wd_controller=>co_type_component
                iv_target_node_name = BTAdminH " Your node
                iv_node_2_bind      = PARENT. " Always PARENT

        ENDCASE.
      ELSE.
        "No extension table
      ENDIF.
  ENDCASE.
ENDMETHOD.

 

在OverView Page中将组件视图添加进来,然后在配置中将组件放出,即可显示。

UI基础四:简单的assign block

标签:ace   nod   ext   order   extension   cflow   ssi   日志   xxxxxx   

原文地址:http://www.cnblogs.com/sapSB/p/7770609.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!