树视图可以用于表示数据的层次。

  例如:SAP CRM中的组织结构数据可以表示为树视图。

  在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view)那种专门的树视图类型。我们可以认为树视图是表视图的一种特例。因此,没有可以用于创建树视图的向导,需要按以下特定的步骤手动改造已存在的视图。

  首先,这个看起来挺难的,但是随着实践次数的增多,你会很容易理解它。在本文,我将创建一个如下模样的树视图。

  

  如你所见,它有两级结构。第一级展示LEAD ID,下一级展示客户。我使用了这样一个简化过的例子。

  为了学习这个教程,我们需要创建一个表视图。这里不描述创建表视图的步骤,因为在先前的文章中已经讲过了。

  在本文中,我创建了一个使用了基本实体“BTQLeadDoc”的表视图。

  在组件控制器中创建了一个具有相同类型的上下文节点,并在其方法DO_INIT_CONTEXT中写入代码以获取数据。

  接着绑定表视图上下文节点和组件控制器上下文节点,因此表视图可以获取到数据。DO_INIT_CONTEXT中写入的代码如下。

  

  这段代码做了什么?

  我简单地获取了前10条lead记录,把它们交给上下文节点LEAD。在表视图和组件控制器上下文节点间进行了数据绑定,数据就会同样地流到表视图。

我们做好了准备,开始主要环节吧。

  首先,前往表视图上下文节点实现类并且把它的父类从“CL_BSP_WD_CONTEXT_NODE_TV”改为 “CL_BSP_WD_CONTEXT_NODE_TREE”。如果有询问特定方法重定义的对话框,选择“是”。

  该类提供了两个重要方法。

  GET_TABLE_LINE_SAMPLE 和 REFRESH.

  第一个方法将返回基于视图列的结构。

  REFRESH方法通常用于生成节点第一级或者根节点。

  我现在仅仅使用了两列来展示信息。因此前往GET_TABLE_LINE_SAMPLE按需要增加两列。

  方法激活后,使用事务BSP_WD_CMPWB代码重新打开整个组件。现在你可以在“配置”标签看到视图配置中的两列。将这两列从可用区域移动到展示区域,修改相应的标题,保存配置。

  我们将在后面使用REFRESH方法。

  现在有一个重要的步骤要做,就是修改htm文件中的标签。使用chtmlb标签:configTreeto 来显示树视图。前往htm页面,移除已存在的CONFIGCELLERATOR或者CONFIGTABLE标签,填入如下的标签,并激活。

  标签中的“LEAD”是一个上下文节点。

  nodeTextColumn属性用于选择树的根节点或者第一列的属性。这里我按照需求选择ID列。

  在使用了需要的节点填充节点表属性后,我们将它传递给LEAD->NODE_TAB。指定用于折叠树的事件处理器“collapse”和用于展开树的事件处理器“expand”:OnCollapseNode onExpandNode.

  下一步,我们需要在SE24中创建一个有父类的类。

  CL_BSP_WD_TREE_NODE_PROXY,这个类会提供一个叫作GET_CHILDREN的方法,用于创建子节点。

  

  在激活类之前,重定义GET_CHILDREN 方法并激活。让我们回到REFRESH方法,写下如下代码并激活。 

  

  只不过是循环上下文节点中的每条记录——换言之,lead记录——并且使用NODE_FACTORY的方法GET_PROXY为每条记录创建节点。接着我们使用方法ADD_ROOT_NODE为树添加根节点。在该场景中,因为我获取了10条记录,因而会创建10个根节点。

  传入刚刚在SE24中创建的类的名字给proxy type参数。我们已经创建好了根节点,但是还没显示它,需要手动地添加GETTER方法给代理类,以显示树中的属性。

  前往代理类“ZCL_TREE_PROXY_MAIN”复制方法IF_BSP_MODEL_SETTER_GETTER~_GET_XYZ点击过滤复选框,并且将其复制到空行。这样做将会复制方法所需要的所有导入导出参数。接着修改名字为GET_ID。我们只复制GETTER方法模板,并且根据属性名对它重命名。 

  

  

  写下如下代码,以获取lead的ID。

  

  第一级节点的创建和显示已经完成,下一步要关注子节点(客户节点)。为创建第二级节点,需要在代理类的get_children方法中写代码。我们将为子节点创建一个代理类。前往SE24并且按上面的方法创建一个新的类。

  

  我们也需要展示客户。按照相同的程序添加一个GETTER方法GET_PROSPECT,写下如下代码。 

  

  需要记住的关键点是,我们在代理类中创建GETTER方法,他们不是上下文节点类的一部分。

  子节点的显示完成了,但我们没有创建它。现在前往创建的第一个类“ZCL_TREE_PROXY_MAIN”,在GET CHILDREN方法中写入代码。

  

  

  

  这些代码做了什么?

  这里我们使用了一些BOL编程,来获取lead的客户,因此需要通过某些关系来到达目标实体BTPARTNER。我读取了lead的所有合作伙伴。

  获取所有合作伙伴之后,循环每个合作伙伴,使用NODE FACTORY方法和上面创建的“ZCL_TREE_PROXY_CUSTOME”来创建子节点。

  创建子节点后,设置IS_LEAF属性为TRUE,因为在该场景中,CUSTOMER是最后一级,在这之后不显示任何客户下的子节点。因此,子节点的文件夹图标的相邻处不会有任何箭头显示。

  接下来在视图实现类中创建两个事件处理器,名为collapse和expand,并写下如下代码。

  

  

  如名所示,在你折叠或展开节点时会触发它们。

  我们需要做的最后一件事是在DO PREPARE OUTPUT方法中添加一点代码,来调用REFRESH方法。

  

  现在,你可以运行应用,观察输出。

  当你第一次看这篇教程时,看起来会有很多步骤,但实际上,它不是那么难。

  如果想要将“地址”显示为“客户”的子节点,需要创建一个新的代理类,在CUSTOMER代理类的GET CHILDREN方法中通过客户和地址间的BOL关系写入代码,并且需要一个在那个代理类添加GETTER方法以显示地址。别忘记在GET_TABLE_LINE_SAMPLE中添加一个新的“地址”列。

  你可以自己试试。希望本文能帮助你,也希望你能把这个站点推荐给你的同事,如果你觉得它值得的话。

本文链接:http://www.cnblogs.com/hhelibeb/p/6035059.html

原文链接:TREE VIEW   

更多信息请参考:Tree view change and save

 

SAP CRM 树视图(TREE VIEW)的更多相关文章

  1. SAP CRM 复用视图

    在设计任何视图或组件的时候,我们需要以可复用的方式来设计它.UI组件设计的主要目标即可复用. 例如:几乎每个事务都要处理合作伙伴(客户).如果我们想要在Web UI显示那些合作伙伴,需要设计一个视图. ...

  2. SAP HANA中创建计算视图(Calculation View)

    [Step By Step]SAP HANA中创建计算视图(Calculation View) Demo Instruction: 该视图将两个表AUDIOBOOKS和BOOKS中的数据进行连接,并作 ...

  3. SAP CRM 性能小技巧

    导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...

  4. SAP CRM 显示消息/在消息中进行导航

    向用户展示消息,在任何软件中都是十分重要的. 在SAP CRM WEB UI中展示消息,不是一项很难的任务,只需要创建消息并在之后调用方法来显示它 消息类和消息号: 我在SE91中创建了如下的消息类和 ...

  5. SAP CRM 客户控制器与数据绑定

    当用户从视图离开时,视图将失去它的数据.解决这个问题,需要引入客户控制器(Custom Controller)(译者注:SAP CRM客户端中,不同地方的Custom Controller会翻译为“客 ...

  6. Angular实现递归指令 - Tree View

    在层次数据结构展示中,树是一种极其常见的展现方式.比如系统中目录结构.企业组织结构.电子商务产品分类都是常见的树形结构数据. 这里我们采用Angular的方式来实现这类常见的tree view结构. ...

  7. 多层json的构造,取值,还有使用bootstrap的tree view在前端展示的相关问题

    bootstrap-tree view是一款非常好用的插件,它可以添加任意多层节点,效果如下所示: 使用之前需要在HTML页面添加依赖文件: <link href="bootstrap ...

  8. SAP CRM 自定义控制器与数据绑定

    当用户从视图离开时,视图将失去它的数据.解决这个问题,需要引入自定义控制器(Custom Controller)(译者注:SAP CRM自定义端中,不同地方的Custom Controller会翻译为 ...

  9. SAP ERP 与SAP CRM有什么不同?

    SAP ERP 与SAP CRM有什么不同? 从管理理念上来说,ERP是提高企业内部资源的计划和控制能力,讲究的是在满足客户.及时交货的同时最大限度地降低各种成本,通过提高内部运转效率来提高对客户的服 ...

随机推荐

  1. ASP.NET Core 中文文档 第四章 MVC(3.9)视图组件

    作者: Rick Anderson 翻译: 娄宇(Lyrics) 校对: 高嵩 章节: 介绍视图组件 创建视图组件 调用视图组件 演练:创建一个简单的视图组件 附加的资源 查看或下载示例代码 介绍视图 ...

  2. 基于NPOI的Excel数据导入

    从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...

  3. MyBatis源码分析(一)开篇

    源码学习的好处不用多说,Mybatis源码量少.逻辑简单,将写个系列文章来学习. SqlSession Mybatis的使用入口位于org.apache.ibatis.session包中的SqlSes ...

  4. 解决:SharePoint当中的STP网站列表模板没有办法导出到其它语言环境中使用

    首在在你的英文版本上,导出列表或是网站的模板,这个文件可能是这样滴:template.stp 把这个文件 template.stp 命名为 template.cab 解压 这个 *.cab 文件 在解 ...

  5. windows 7(32/64位)GHO安装指南(U盘引导篇)~

    上一篇我们说了怎么制作U盘启动盘,那么这一篇让我们来看看如何进行正确的U盘引导启动. 现在的个人计算机一般分为台式机和笔记本,由于各厂商的喜好不同(开玩笑的啦),所以对于主板的BIOS设置各所不同.进 ...

  6. centos 6.5 升级php

    1>追加CentOS 6.5的epel及remi源. # rpm -Uvh http://ftp.iij.ad.jp/pub/linux/fedora/epel/6/x86_64/epel-re ...

  7. [故障公告]受阿里云部分ECS服务器故障影响,目前无法上传图片与文件

    抱歉!今天下午阿里云华东1可用区B的部分ECS服务器出现IO HANG问题,受此影响,我们的图片与文件上传服务器无法访问,由此给您带来麻烦,请您谅解. 16:30左右开始,我们发现图片与文件上传服务器 ...

  8. shell之sort命令

    1 sort的工作原理 sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出. [rocrocket@rocrocket progr ...

  9. CentOS 7 上部署Mono 4 和Jexus 5.6

    概述 在这篇文章中我们将讨论如何在CentOS 7操作系统,安装 jexus. mono 和 配置 jexus,因此它将能够在这种环境中运行一个asp.net mvc 4 应用.这篇文章是描述如何在 ...

  10. Maven入门详解

    什么是Maven Maven,鼎鼎大名,在今天之前,我对于它一直是处于一种"只闻其名不见其人"的状态.之所以说"只闻其名",是因为Maven太有名了,它是Apa ...