UI基础四:简单的assign block
经常会有需求让在标准的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 = .
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的更多相关文章
- amaze ui各个模块简单说明
amaze ui各个模块简单说明 导航添加依据 http://amazeui.org/css/ 下面内容属学习笔记,如有理解偏差和错误请留言相告,感谢!* =(官网这块写的很详细) 一.基本样式 1 ...
- iOS开发UI篇—Kvc简单介绍
ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...
- Android UI基础之五大布局
Android UI基础之五大布局 Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦.组件按照布局的要求依次排列,就组成了用户所看见的界面.Andro ...
- iOS开发UI基础—手写控件,frame,center和bounds属性
iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...
- day 68 Django基础四之模板系统
Django基础四之模板系统 本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法 模板渲染的官方文档 关 ...
- day 54 Django基础四之模板系统
Django基础四之模板系统 本节目录 一 语法 二 变量 三 过滤器 四 标签Tags 五 模板继承 六 组件 七 自定义标签和过滤器 八 静态文件相关 一 语法 模板渲染的官方文档 关于模 ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- 转发-UI基础教程 – 原生App切图的那些事儿
UI基础教程 – 原生App切图的那些事儿 转发:http://www.shejidaren.com/app-ui-cut-and-slice.html 移动APP切图是UI设计必须学会的一项技能,切 ...
- iOS开发UI篇—Modal简单介绍
iOS开发UI篇—Modal简单介绍 一.简单介绍 除了push之外,还有另外一种控制器的切换方式,那就是Modal 任何控制器都能通过Modal的形式展⽰出来 Modal的默认效果:新控制器从屏幕的 ...
随机推荐
- python时间
#!/usr/bin/python # -*- coding: utf-8 -*- import sys import time import datetime line="Wed 11/2 ...
- Leetcode66-Plus One-Eassy
Given a non-empty array of digits representing a non-negative integer, plus one to the integer. The ...
- springboot集成logback日志
简介 spring boot内部使用Commons Logging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如Java Util Logging,Log4J2还有Logback. 如 ...
- git pull 提示 There is no tracking information for the current branch
在执行git pull的时候,提示当前branch没有跟踪信息: git pull There is no tracking information for the current branch. P ...
- 在JAVA中返回类型使用泛型T和Object有什么区别?
最近在读jackson源码的时候发现有段代码返回类型写的是<T> T,而我自己一般写的是Object.上网搜了下这个语法糖,在stackoverflow上找到一个比较简单易懂的解释,搬运过 ...
- restFul接口设计规范
1.域名 1 应该尽量将API部署在专用域名之下. https://api.example.com 2 如果确定API很简单,不会有进一步扩展,可以考虑放在主域名下. https://example. ...
- 使用openpyxl实现excel文件的读取操作
1.环境准备 python3环境.安装openpyxl模块 2.excel文件数据准备 3.为方便直接调用,本代码直接封装成类 from openpyxl import load_workbook c ...
- Dragger2好网文整合
Dagger2从入门到放弃再到恍然大悟 详解Dagger2 http://blog.csdn.net/u012124438/article/details/52505986
- win10如何一键开启关闭windows Defender(亲测有效)
win10如何一键开启关闭windows Defender(亲测有效) 一.总结 一句话总结:各种找资料如何开启关闭都没用,直接下载软件简单方便 软件 因为我关windows defender是用的一 ...
- MySQL ICP(Index Condition Pushdown)特性
一.SQL的where条件提取规则 在ICP(Index Condition Pushdown,索引条件下推)特性之前,必须先搞明白根据何登成大神总结出一套放置于所有SQL语句而皆准的where查询条 ...