本文主要阐述UI组件,genIL和BOL。
先说下这张图。从下往上看,后台具体的表的操作,由CRM包装为一系列的API;这些API再进一步包装为genIL(generic interaction layer);genIL可以在一步由CRM包装出BOL(business object layer),当然开发人员自己也可以建BOL;这些BOL绑定到UI组件MVC架构中的M上;UI组件实例化后就是最终展现到用户浏览器上面的内容。
这两段定义需要准确的理解;
• Business object layer (BOL): The business object layer saves the business
object data, for example of sales orders, at runtime of the SAP CRM session.
This layer guarantees the separation of the CRM WebClient UI and the
underlying business logic.
• Generic interaction layer (genIL): The generic interaction layer handles the
data transfer from the business object layer to the application programming
interfaces (APIs) of the underlying business engine. It is the connection
between the business object layer and the underlying business engine.
BOL的数据来自于genIL。genIL才是真正与表进行交互的。
在浏览器上面,进入一个UI组件,鼠标点一个栏位,按【F2】就能获取到这个Attribute,这个View,这个Context,这个Window,这个Configuration,这个Component的所有有用信息。绝对的神器。
知道了组件名,在GUI用事物代码【BSP_WD_CMPWB】就能查看这个组件了。
实际上,这个UI组件就是一个MVC架构的BSP项目。所以你用SE80也是一样能看的。
区别就是如图这样,展现的效果更好,可用的功能更多。
MVC架构理解这张图就行了。
关键是理解上面这张图。在UI里面,【C】的表现形式是XXX.DO,实际的内容是一个以_IMPL结尾的class,事件,方法,页面跳转等等有逻辑代码的都含在里面;【M】要分两种,都是class,一种是以_CTXT结尾的,这个是上下文的主class,它的下面挂若干个(也可能没有)以_CNxx结尾的class,这个才是真正某个上下文的业务模型,各种和字段有关的内容包括需要逻辑代码的地方都在这里面;【V】就是那些.HTM文件,需要UI展现的才有这个文件,文件里面的元素通过ID关联到后台字段。
关于BOL和genIL,请看下面这张图。
BOL没有直接改表数据。BOL将对数据的操作传递给genIL。CRM本来就有很多FUNC是处理相关数据到表的,genIL根据BOL传过来的数据进行判断分析和加工,调用相应的FUNC执行。所以很多时候你会发现,BOL的属性结构和真实的表结构往往不一样。
BOL有几种类型:
Access Object: An access object is a special type of BO, whose ID can be used to
determine both the attributes of the access object itself and those of its dependent objects.
访问对象:获取数据的入口对象,一般从这里使用BOL。
Dependent Object: A dependent object is a special type of BO, whose attributes
cannot be determined solely from the ID of this BO, but instead, only or together with the ID of the superior access object.
Root object: The root object is the only object within the hierarchical structure of a data model that is assigned as a superior object to all other objects. Each root object is also an access object.
根对象:相关的一组对象的集合。
Search-Object: A query object is a special type of BO whose attributes are the
parameters of a search request.
查询对象:一般用于查询条件。
Dynamic Search-Object: A dynamic query object is a type of BO whose attributes are the parameters of a search request. It is possible to create select options for these parameters.
动态查询对象:查询条件可变的UI对应的BOL。
Search Result Object: The result object of a search request has a dictionary structure assigned and displays data from different BOs as a result list. To link the search result object to the data model hierarchy the Search Result Object is associated with the root object of the same component.
查询结果对象:查询结果数据集合对应的BOL。
记住两个事物代码:
【GENIL_MODEL_BROWSER】查询BOL;
【GENIL_BOL_BROWSER】根据BOL查询数据。
————————————————
版权声明:本文为CSDN博主「范叉叉」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fanchacha/java/article/details/51462018