我尝试在 BOL Browser 里使用 query 来执行搜索,并且希望仅返回属于我在 INSTID 中指定的给定产品的附件实例。
令我惊讶的是,查询结果不仅包括给定产品的附件,还返回大量属于我创建的其他产品的附件。
通过调试,我发现第61行的参数CATID、TYPEID和INSTID没有传入主搜索功能模块,这意味着搜索时根本不考虑它们。
相反,根据每个附件实例的属性值“CRM_SEARCH_VISIBILITY”,搜索结果在 post processing
中通过三个参数进行过滤:
在附件属性 UI 中,我们可以为“在搜索中可见”分配三种值:
即 No Restriction,in Business Objects of the same Object Type Only 和 Only in the same Business Object:
这个参数在 Document model workbench 里被定义成 instance attribute:
根据下面代码中的过滤逻辑,该属性在 CMAdvDocumentFinder 实现中的工作方式如下:
无限制:具有该属性的附件将不会被过滤。
1 - 仅在相同对象类型的业务对象中:主机业务对象类型不等于搜索参数 TYPEID 的附件将被过滤掉。
2- 仅在同一业务对象中:主机业务对象实例不等于搜索参数 TYPEID 和 INSTID 指定的实例的附件将被过滤掉。
上图代码里提到了 SAP CRM 系统的 BOR 概念。
在 SAP 系统中,BOR (Business Object Repository) 类型是 ABAP 开发中的一个核心概念,尤其在 SAP CRM (Customer Relationship Management) 系统中扮演着关键角色。BOR 类型定义了业务对象模型,这些模型是 SAP 系统中进行业务数据处理和交互的基础。通过使用 BOR,开发人员可以在 ABAP 程序中方便地引用和操作这些业务对象。
BOR 对象提供了一种面向对象的方式来表示和处理企业中的各种业务实体,如客户、订单、发票等。每个 BOR 对象都具有一系列的属性、方法和事件,这些特性使得它们不仅可以存储数据,还可以执行特定的业务逻辑。
BOR 类型的用途
BOR 类型的主要用途包括但不限于:
- 业务流程的建模和自动化:BOR 类型使得复杂的业务流程能够在系统中得以建模和自动化执行。通过定义业务对象及其相互作用,企业可以在 SAP CRM 系统中实现高度定制化的业务流程管理。
- 数据封装和抽象:通过将业务数据和操作逻辑封装在对象中,BOR 类型提供了一种高度抽象的方式来处理业务实体。这种封装机制简化了数据管理和操作,提高了代码的可维护性和可重用性。
- 集成和扩展性:BOR 类型支持 SAP CRM 系统与其他系统的集成,例如与 ERP (Enterprise Resource Planning) 或 SCM (Supply Chain Management) 系统的集成。通过 BOR 对象,系统间的数据交换和业务流程集成变得更加容易和灵活。
- 工作流和自动任务处理:BOR 类型在 SAP 的工作流中扮演着重要角色。它们可以触发工作流事件,自动化任务处理和决策流程,从而提高业务流程的效率和响应速度。
示例说明
假设我们在 SAP CRM 系统中处理客户服务请求的场景。在这个场景中,ServiceRequest
是一个 BOR 类型,它代表了一个服务请求业务对象。该对象可能包括如下属性:请求 ID、客户 ID、服务类型、请求状态等。同时,它还定义了一些方法,例如 Create
(创建请求)、Update
(更新请求)、Close
(关闭请求)等,以及一些事件,如 RequestCreated
、RequestClosed
。
在处理服务请求的业务流程中,ServiceRequest
对象首先通过 Create
方法被创建。该方法可能会触发 RequestCreated
事件,该事件可以进一步触发一个工作流,例如通知服务团队或分配服务任务。在服务请求的生命周期中,可以使用 Update
方法更新请求的状态或详情。最终,当请求被处理完成后,使用 Close
方法关闭服务请求,并可能触发 RequestClosed
事件,该事件又可以触发工作流进行后续处理,如发送服务满意度调查等。
通过这个例子,我们可以看到 BOR 类型如何在 SAP CRM 系统中为业务流程提供支持和自动化。BOR 对象 ServiceRequest
不仅封装了服务请求的数据,还定义了处理请求所需的操作逻辑和事件驱动的工作流,极大地提高了业务流程的效率和自动化水平。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。