从本文开始陆续整理下CRM的开发要点。
CRM的UI基本框架如下图所示。
A顶部标题区域;B左侧导航区域;C中间工作区域。
AB连在一起SAP称为L形区域,这一块的内容是由系统管理的,用户不能自定义。
如上图标记的内容为L形区域的主要功能,这些功能都可以用SPRO配置。
现在主要介绍下C区域。一般来说通过点击B导航区域都是会指向某个特定的
Work Center工作中心。这个工作中心可以理解为一个事物代码,用来具体做某件
事情。比如,下订单,审批工作流,查报表。
一个工作中心都是对应一个具体的UI组件,具体是哪个组件在页面上选中任意
字段后按【F2】就能看到。知道了组件名,就可以在GUI用事物代码BSP_WD_CMPWB
查询整个组件的内容。
一个组件必然有一个Window,一个Window必然有一个View。尽管我们通过
导航栏参数文件的配置是配的组件,但实际上显示的是这个组件对应的其某个特定
Window的内容;而这个Window的初始显示的内容一定是其默认View。
View有很多种类型,常用的有OVP,ViewSet,View。
一般来说,默认的View都是OVP或者ViewSet,因为简单的View没有布局。
而OVP和ViewSet布局功能是有区别的。OVP的布局可以是单栏也可以是双栏,
可以通过配置灵活的设置其含有的View的显示与隐藏;ViewSet不能配置其内部的
View,但是由于是表格形配置,它的布局非常灵活,想想html的Table标签就明白了。
一般SAP的标准组件都是用的OVP形式。如下图所示为OVP的主要内容。
一个CRM标准的工作中心一般由两部分组成,页面最上面的Header area和其下面
若干Assignment Blocks(ABs)。这两者其实都是View实现的,不同点在于一个是
把数据展现为Form形式,一个展现为Table形式。
一般开发的要求是把功能也就是按钮事件写在toolbar上面。相应的写代码的地方
在View的IF_BSP_WD_TOOLBAR_CALLBACK~GET_BUTTONS事件和
IF_BSP_WD_DYN_BTN_CONTROL~GET_LOCAL_TOOLBAR_BUTTONS事件。
简要贴两组加按钮事件代码示例。
METHOD if_bsp_wd_dyn_btn_control~get_local_toolbar_buttons. *CALL METHOD SUPER->IF_BSP_WD_DYN_BTN_CONTROL~GET_LOCAL_TOOLBAR_BUTTONS * RECEIVING * RT_RESULT = * . DATA: ls_button TYPE crmt_thtmlb_button. CLEAR:ls_button. ls_button-type = cl_thtmlb_util=>gc_icon_save. "#EC NOTEXT ls_button-on_click = 'SAVE'. ls_button-enabled = abap_true. ls_button-id = 'SAVE'. ls_button-text = '保存并返回'. APPEND ls_button TO rt_result. CLEAR:ls_button. ls_button-type = cl_thtmlb_util=>gc_icon_cancel. "#EC NOTEXT ls_button-on_click = 'CANCEL'. ls_button-enabled = abap_true. ls_button-id = 'CANCEL'. ls_button-text = '取消'. APPEND ls_button TO rt_result. ENDMETHOD.
METHOD if_bsp_wd_toolbar_callback~get_buttons. CALL METHOD super->if_bsp_wd_toolbar_callback~get_buttons RECEIVING rt_buttons = rt_buttons. FIELD-SYMBOLS: <ls_button> TYPE crmt_thtmlb_button_ext. LOOP AT rt_buttons ASSIGNING <ls_button>. CASE <ls_button>-on_click. WHEN 'new' . <ls_button>-enabled = abap_false. ENDCASE. ENDLOOP. ENDMETHOD.
1.标题可以提示本AB主要补充的是组件的什么内容;
2.自定义按钮可以对列进行调整,拖拽也是可以的;
3.排序和筛选也是必不可少的功能;
4.可以通过配置在每行开头配上删除和修改按钮;
5.可以配置每个page的行数,如果超过AB会自动分页;
6.为了页面美观或者布局,可以把AB折叠起来。