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的默认效果:新控制器从屏幕的 ...
随机推荐
- 【.Net】在windows server 2016 和Windows10这些server上安装.net fw3.5
一般就是打开server manager. 一直next到add feature 讲net3.5勾选 发现需要指定一个路径是什么 source\sxs之类的 下载microsoft-windows-n ...
- 同上两篇 这篇是关于shader的
资源加载性能测试代码 与上篇所提出的测试代码一样,我们对于Shader资源的加载性能分析同样使用该测试代码.同时,我们将Shader文件制作成一定大小的AssetBundle文件,并逐一通过以下代码在 ...
- 利用angularjs完成注册表单
ng-init="username = 'first'"设置初始显示first字段 ng-class="{'error':signUpForm.username.$inv ...
- 【BZOJ】1831: [AHOI2008]逆序对
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1831 考虑$-1$的位置上填写的数字一定是不降的. 令${f[i][j]}$表示$DP$到 ...
- Easyui使用心得(1)--DateGrid表格
最近一直在用easyui这个控件,有一点心得,在这里和大家分享一下,也是对自己工作的一个小小的总结,希望可以形成一个完整的Easyui的笔记体系,可以方便更多的人 因为自己也是在摸索中前进,难免有遗漏 ...
- 《spring boot 实战》读书笔记
前言:虽然已经用spring boot开发过一套系统,但是之前都是拿来主义,没有系统的,全面的了解过这套框架.现在通过学习<spring boot实战>这本书,希望温故知新.顺便实现自己的 ...
- ThreadPoolExecutor最佳实践--如何选择线程数
去年看过一篇<ThreadPoolExecutor详解>大致讲了ThreadPoolExecutor内部的代码实现. 总结一下,主要有以下四点: 当有任务提交的时候,会创建核心线程去执行任 ...
- JDK中关于BIO,NIO,AIO,同步,异步介绍
在理解什么是BIO,NIO,AIO之前,我们首先需要了解什么是同步,异步,阻塞,非阻塞.假如我们现在要去银行取钱: 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写) ...
- Python3 - MySQL适配器 PyMySQL
本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查. 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一 ...
- 第 8 章 容器网络 - 058 - flannel 概述
flannel 概述 flannel 是 CoreOS 开发的容器网络解决方案. flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 h ...