SAP CRM 基础知识

发布时间 2023-04-23 16:19:14作者: 楚怼像

HAND SAP

April 2018

ZH

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HAND CRM基础知识

 

 

 

 

 

 

 

 

 

 

HAND
上海市青浦区汇联路33号

 

 

 

 

 

 

 

 

 

 

 

 


版权

 

未经上海汉得信息技术股份有限公司的明示许可,本出版物不得以任何形式或任何目的进行复制或传播.。此处包含的信息可以更改,恕不另行通知。


图标

 

图标

含义

 

警告

 

示例

 

注释

 

建议

 

语法

 

外部处理

 

可选业务处理或决定

 

 

排版惯例

 

字体风格

描述

Example text

出现在屏幕上的单字或字符。包括字段名、屏幕标题、按钮以及菜单名、路径和选项。

到其它文档的交叉引用。

Example text

正文文本中强调的字或词组,图形和表格的标题。

EXAMPLE TEXT

系统中元素的名称。包括报表名、程序名、事务代码、表名和正文文本中嵌入的编程语言关键字,如 SELECT 和 INCLUDE。

Example text

屏幕输出。包括文件和目录的名称及其路径、消息、源代码、变量和参数的名称以及安装工具、更新工具和数据库工具的名称。

EXAMPLE TEXT

键盘上的按键。例如,功能键(如F2)或ENTER键。

Example text

用户输入原文。完全如文档所示输入这些单字或字符至系统中。

<Example text>

可变用户输入。尖括号表示应使用适当的输入替换括号中的单字和字符。

 

 

 

 

 

 

目录

版权... 2

图标... 3

排版惯例... 3

目录... 4

历史记录... 5

BSP组件开发... 6

基本概念... 6

创建BSP应用程序... 6

1.创建BSP应用程序... 6

2. 创建表单视图... 7

3. 运行时资源库配置... 12

4. 页面默认值添加... 13

5. 新建表视图... 15

6. 新建视图集... 18

7. 表视图按钮添加及逻辑实现... 20

8. 保存按钮添加以及逻辑实现... 24

CRM业务角色... 29

访问CRM WEB UI. 29

配置自定义组件到WEBUI. 31

AET增强... 36

BSP组件增强... 42

增强集配置... 42

组件增强... 43

BOL 编程介绍... 49

CRM模型... 49

DEMO1:查找模型关系,获取CRM单据数据... 52

DEMO2:标准组件增强开发示例... 57


历史记录

版本

日期(YYYY/MM/DD)

编辑/修订描述

作者

1.0

2018/05/09

创建

徐洲


BSP组件开发

基本概念

SAP CRM WEBUI是基于BSP应用程序开发的,在CRM系统中可以通过用户组件工作台创建BSP应用程序。用户组件工作台是一个可视化的应用程序管理界面,里面包括窗口,视图,运行时资源库,客户化控制器等。

创建BSP应用程序

step by step创建BSP应用程序,组件中包含form(表单)视图、一个item(表)视图和一个视图集。item视图上有新增和删除按钮;在视图集上有保存按钮,点击保存时,会将页面数据保存到自建表。最终效果如下:

 

1.创建BSP应用程序

    TCODE:BSP_WD_CMPWB

 

 

创建完显示如下

 

组件结构浏览器:此标签为任何组件进入之后默认显示的标签页,可以对组件内的视图、控制器、窗口以及其内部功能等进行层级化的展示与配置

运行时资源库编辑器:编辑可视化资源库文件的一个工具。当修改了运行时的资源编辑器里面的内容,repository.xml就会改变。

组件控制器:每一个组件都有一个组件控制器,用于存储跨组件的数据

窗口:一个窗口是一个特殊的VIEW,但是没有BSP页面,用来管理视图和视图集,并且可以作为一个可视化的组件一个窗口有自己的上下文和上下文节点,并且可以被发布作为其他组件的interface view。

客户控制器:用于存储同一组件内不同视图间的数据传递及保存

视图:在Web UI Frame中,从技术角度讲,一个视图就是一个BSP 页面,BSP页面使CHTMLB和THTMLB标签。所以,视图是一个用户的交互接口,是一个可视的区域,切记一个视图只能分配到一个窗口中。

2. 创建表单视图

SE11新建结构,作为FORM视图的上下文节点的属性结构。

 

创建FORM视图:

 

 

 

添加模型节点处跳过,FORM表单使用值节点

 

 

添加值属性

 

 

后续默认,直到完成。

 

 

视图字段配置

配置页签,点击显示可用字段。

 

将字段托拽到右边页面。选中字段->显示字段属性可修改字段的属性,如:字段标签/必输/仅显示/字段占的起始和截止标签列等

 

改完字段标签如下:点击保存

 

3. 运行时资源库配置

转到运行时资源库,将视图添加到窗口:

 

将FORM视图添加到Windows中。组件执行的时候,默认加载组件的缺省windows

 

添加完后,保存。然后点击测试按钮。

 

测试页面,输入登陆账号和密码,显示界面如下:

 

4. 页面默认值添加

在视图初始加载的时候,默认填写人为当前的登陆账号:

首先需要确认UI上填写人字段对应的后台字段。方法:将光标放入填写人字段,然后按F2,跳出弹出窗口,即可以显示处字段的位置,和对应的属性名称。

 

此时,我们可以在组件中找到此字段的位置。

 

重定义FORM视图的DO_INIT_CONTEXT方法,在此方法中给PARTNER字段赋值:此方法在视图加载时调用,只调用一次。

 

在方法中加入以下代码(同时把创建日期设置为当前系统日期):

 

 

重新执行该组件,加载的时候填写人字段已经给赋值上了。

 

 

5. 新建表视图

新建结构

 

建表视图:

 

添加模型节点处跳过

 

添加值属性:

 

视图类型选择表视图,勾选可配置。

 

创建完成后,在配置页面,将对应的字段拖拽出来并保存。

 

6. 新建视图集

 

 

 

将视图分配到视图集:

 

分配完成

 

将视图集添加到窗口。PS:此时需要先将form视图从窗口中移除。

 

点击测试:

 

7. 表视图按钮添加及逻辑实现

重定义ITEM视图的DO_PREPARE_OUTPUT方法

 

添加如下代码,保存,激活。将ITEM变为可编辑。

 

重新点击测试,此时,item视图可以编辑

 

添加‘新增行 ’和 ‘删除行’按钮

双击item视图的控制器类

 

添加gt_button属性,并激活。按钮参考类型:CRMT_THTMLB_BUTTON_T

 

在do_prepare_output方法中,插入新增按钮的代码

 

在item视图的htm中,引入gt_button 作为视图的按钮。

 

 

再次测试,效果如图

 

添加按钮事件

在事件处理器中新建方法ADD和DELETE,对应按钮的on_click事件名称。

 

 

在add和delete方法中添加代码如下代码:

 

 

 

 

 

再次测试按钮

 

 

8. 保存按钮添加以及逻辑实现

双击viewset的控制器类。

 

在接口页签加入接口IF_BSP_WD_TOOLBAR_CALLBACK并激活。

 

转到方法页签,会有三个方法,双击,分别实施对应的方法

 

在get_buttons方法中新增添加的代码。

 

测试即可查看按钮

 

 

 

9. 逻辑实现

保存按钮实现逻辑:

保存按钮在viewset视图中,无法直接访问form和item视图的节点数据,需要新建一个客户化控制器,在客户化控制器中新加两个节点,分别绑定form和item的节点。通过获取客户化的节点,即可获取form和item视图的数据。

 

 

 

分别为form和item节点添加属性

 

 

后续默认,直到完成。

 

绑定form视图的上下文节点到客户化控制器的form节点。

 

 

同理绑定item的上下文节点到客户化控制器的item节点

 

 

在viewset中新建zsave方法,实现保存逻辑

 

保存代码:

 

点击保存按钮

 

查看表中的数据:

 

 

 

CRM业务角色

访问CRM WEB UI

  1. SU01给用户维护参数:CRM_UI_PROFILE  *表示给用户维护所有的业务角色

 

  1. Host文件维护

 

 

SMICM查看主机名

 

  1. 输入TCODE:WUI,即可打开CRM WEB UI界面

 

输入CRM系统账号密码,即可进入到系统

 

       进入后即可看到系统标准的业务角色。

      

选中一个业务角色,进入系统,大致如下(此处选择service pro )

 

 

配置自定义组件到WEBUI

此配置将自定义的组件,配置到业务角色(SERVICEPRO - 服务专业人员)的一个工作中心下。

 

  1. 转到运行时资源库,将窗口视图添加到Component Interface,此操作表示当前组件的窗口开放出来,可供其他组件调用。(记得添加完成后一定要点击保存按钮)

 

  1. 定义目标标识:SPRO

 

点击新条目

 

选择组件名称和窗口(如果不将窗口添加到component interface,此处将选不到窗口)

 

 

点击新条目,创建一个目标标识。目标标识自己命名,后续需要用到。

 

  1. 定义逻辑链接标识

路径:SPRO->客户关系管理->UI框架->技术角色定义->定义导航栏参数文件

先双击‘定义逻辑链接‘文件夹,然后点击新条目。

 

逻辑链接自己命名,目标标识选中上面创建的目标标识

 

  1. 定义工作中心

将上面新建的逻辑链接分标识分配到此工作中心

 

  1. 将工作中心分配到导航栏参数文件

首先需要找到标准业务角色serivcepro使用的哪个导航栏参数文件。

路径:SPRO->客户关系管理->UI框架->业务角色->定义业务角色

 

可以看到 servicepro使用导航栏参数文件是SRV-PRO

 

然后转到新建导航栏参数文件处,将工作中心分配到导航栏参数文件

路径:SPRO->客户关系管理->UI框架->技术角色定义->定义导航栏参数文件

 

点击新条目

 

输入上面新建的工作中心和位置,并保存

 

此时再进系统,可以看到工作中心已经分配出来,并且点击工作中心,右边就能显示自己的组件

 

 

AET增强

AET是CRM特有的增强工具,通过他可以为标准的组件添加字段、表单或表格。通过AET生成的字段/表单/表格,可以通过配置模式显示到标准组件的页面上,其保存和修改等逻辑系统已在生成的时候写好,无需手动加入逻辑。能满足项目上的大部分需求。

1.在CRM活动的任务抬头增强字段

2.关联到搜索和结果

3.验证下拉列表的实时维护与双语翻译

 

找到需要增强的页面,F2找到相应的对象类型

 

 

 根据对象类型去表BSP_DLC_OBJ_TYPE中根查找增强对象EXT_BO

 

UI进入AET增强页面,找到增强对象

如果不存在证明没人在这对象上增强,需要自己新建

 

 

进入增强对象,新建字段

 

选择Z001包并选择或新建请求

 

 

配置增强字段

我们还是进入1中第二张图片的位置,点击如图所示右上方的配置按钮

 

页面会变成这样

 

点击蓝色区域,跳转到视图配置页面,将字段配置到视图上

 

保存关闭后,再次点击配置小按钮取消配置并编辑此视图可以看到如下成功效果

 

关联搜索与结果

同样的方法,打开配置页面配置字段(这时候效果体现出来了,我们虽然没有在搜索报表的视图上增强这个字段,但是因为我们在抬头增强这个字段的时候关联了搜索与结果,所以可以直接配置)

 

 

英文页面下的效果

可以看到我们虽然在中文下维护了一条01 111的数据,但是因为我们字段增强的时候(上图)对下拉框里的值进行了翻译,所以系统能够自动识别与判断

 

 

BSP组件增强

在CRM中是通过面向对象实现的,所以可以通过重定义类的方法来实现增强,如删除视图中的某一个按钮或新增按钮,因此在CRM中增强会比ERP中的增强灵活

增强集配置

在CRM中有一个增强集的概念,一个组件可以针对于不同的增强集增强实现不同的需求,增强集更好的实现了对增强的管理。

增强集定义Tcode:SM30 表名:BSPWDV_EHSET_DEF

 

增强集分配  Tcode:SM30 表名:BSPWDV_EHSET_ASG,每个客户端只能分配一个增强集。

 

查看系统中已增强的组件:Tcode:SM34视图簇:BSPWDVC_CMP_EXT

 

选择一条,查看已增强的视图

 

 

组件增强

通过一个实例说明组件增强的步骤

进入业务角色—--销售专业人员,点击活动,创建任务。

 

标准界面如下

 

目的:通过组件增强,删掉‘打印预览‘按钮。

  1. 找到当前按钮对应的组件

选中按钮不放,按F2键,系统会弹出按钮对应的组件位置

 

  1. 增强组件

TCODE:BSP_WD_CMPWB 打开对应的组件

 

 如果当前组件没有被增强过,点进来如下:

 

点击增强组件按钮,选择当前系统分配的增强集。

 

填写应用程序,自己命名,一般以ZEH_XXX形式,长度上限15位。

 

选择是

 

页面默认

 

包到请求。此时系统会生成类和在配置表中写数据等,会提示多次包请求。

 

 

组件增强完之后,按钮变成‘删除组件增强’,原有的视图颜色也会从黑色变成灰色,如下

 

  1. 增强视图

右键需要增强的视图,点击增强。

 

增强视图的同时,会生成多给类,继承标准的类,此时也需要多次包请求。增强完成后,可以看到视图的变化:已增强的视图颜色变成黑色,类的控制器类已经变成ZL_XXX。

 

通过debug模式可以找到,单据主界面的按钮放在 工具栏相关方法的IF_BSP_WD_TOOLBAR_CALLBACK~GET_BUTTONS方法里面,重定义此方法。

 

重定义方法后,方法前面的图标会变成绿色。

 

重定义后,就可以双击进去修改代码。

 

进去之后,先放开标准的代码,super->XXX,用returning 参数接收。这段代码就是系统生成按钮的代码,所有的按钮最后会返回到RT_BUTTONS这个内表参数里面。Debug调试

首先需要设置外部断点:

 

外部断点用户名要设置为UI上登陆的用户名

 

注销UI,重新进入任务创建界面,此时将会进断点,执行完super方法后,查看rt_buttons参数

 

可以看到对应的‘打印预览’对应的按钮。

 

删除按钮的代码如下即可,保存&激活

 

再次注销UI界面,重新进入,此时按钮已经被删除。

PS:每次修改代码,都需要在UI上注销重进,代码才会生效。

 

通过上面的增强,也可以添加自定义按钮,然后写事件响应等。组件增强还可以到字段级别,比如让某个字段必输、仅显示或者给字段加searchhelp等,非常的灵活。

字段都是存在于视图上下文节点的属性, 如需要增强视图中的某一个字段需要步骤如下:

  • 增强视图
  • 增强上下文
  • 增强字段对应的上下文节点
  • 增强对应字段的方法(GET_P,GET_V等)

 

 

 

BOL 编程介绍

 BOL是指business object layer,针对BOL编程,需掌握BOL API。BOL API由不同的类和接口组成,其中最常用的:

CL_CRM_BOL_QUERY_SERVICE/ CL_CRM_BOL_DQUERY_SERVIC  用来查询对象

CL_CRM_BOL_ENTITY/IF_BOL_BO_PROPERTY_ACCESS   代表业务对象的实体,

IF_BOL_TRANSACTION_CONTEXT    用于控制事物的行为:如SAVE,COMMIT等。

IF_BOL_BO_COL  对象的集合,可以用get_first(),get_next等方法遍历其中的对象。

具体语法及使用参见一下文档:

 

CRM模型

查看模型TCODE: GENIL_MODEL_BROWSER

组件:这里的组件是指组件模型,如BT就代表了业务对象的模型

组件集:组件集里面包含多个组件模型,如ONEORDER。BSP组件使用的模型就是组件集。

 

如标准组件:BT125_TASK就是使用的ONEORDER组件集,在BSP组件添加完组件集之后,在组件中创建视图,就可以用到模型中对应的模型对象

 

 

模型介绍:

 

对象结构

 

对象间关系:

 

 

DEMO1:查找模型关系,获取CRM单据数据

目的:新建SE38程序,通过输入商机标识,获取CRM商机上的销售组织。

如图:知道CRM商机标识,如何获取商机上的销售组织字段的值。

 

  1. 将光标放在销售组织字段中,按F2,获取当前字段所在的组件的位置。

 

  1. 打开组件浏览器,查看当前属性所存在的模型对象。下图中可以看到,当前销售组织字段参考的模型对象是存在BTOrgSet这个对象中。

 

  1. 点击运行时资源库,查看当前组件参考的模型,如下:ONEORDER

 

  1. TCODE:genil_model_browser,在oneorder中通过跟对象,查找对应的模型对象的位置:

 

  1. 对于业务单据,根对象都是BTORDER(暂且根据经验来定)

 

       可以看到BTOrgSet在BTAdminH对象下的BTHeaderOrgmanSet的关系下,并且关系是0:1的关系。双击BTOrgSet下的属性结构,可以看到对应的属性字段。              

 

通过上面5步,已经找到对应的销售组织字段存在的对象。下面代码实现。

上面已经说过,通过根对象可以创建出一个完整的树,即可以构造一个完整的对象(此实例可以理解为一个完整的商机对象)。对于已有的对象,我们可以通过根对象的关键结构的值,获取到对应的根对象。BTOrder的关键结构即一个GUID。

 

业务单据主数据表是CRMD_ORDERADM_H,通过输入Object_id可以找到GUID

 

SE38构建程序。

 

 

 

同理,获取BTAdminh下的关系BTHeaderOrgmanSet对象BTOrgSet。

 

获取属性的值:

 

最终展示结果:

 

 

作业:获取商机相关方中的负责员工的姓名

 

 

 

DEMO2:标准组件增强开发示例

标准组件中的BOL开发时,不需要加载组件集了,因为在组件中开发的时候,标准组件已经加载过组件集。获取对象的时候,可以直接获取组件中的上下文节点。

用语句:lr_entity  = me->typed_context->BTADMINH->COLLECTION_WRAPPER->get_current( ).  此语句表示获取BTADMINH节点参照的对象。即对应模型中的BTAdminH。

 

 

Demo2:编辑商机时,默认把销售组织赋值给最终用户/end_user字段。

 

  1. 找到‘最终用户/End User’字段所在组件和视图

 

 

 

      重定义对应视图的do_prepare_output方法,do_prepare_output方法

 

 

 

 

 

点击编辑后,系统调用do_prepare_ouotput方法,将销售组织数据赋值到对应的字段。