网络上可以找到一些使用BOL查询、维护数据的DEMO,但几乎都是单纯的代码,缺乏说明,难以理解。本文除了代码外,还给出了详细的注释,有助于理解BOL编程中的一些基本概念。

这是一篇翻译的文章,你可能会发现部分内容不是很明确,这时可以直接阅读原文。

原文所在的sapcrmwebui.com是一个不错的博客,里面有较为完整的Web UI入门教程,然而网站不是很稳定,偶尔会连接不上,建议使用Internet Archive访问。

如果你访问不了Internet Archive,说明你需要一点过墙的手段。

 

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

 原文链接:BASICS OF BOL PROGRAMMING

如果觉得本文有用,请记得在页面底部点个赞~

 

2016.12.31 更多示例代码请参考:BOL Programming(WebUI), AbapLog

搜索操作

***********************************************BOL 编程*SAP CRM WEBCLIENT*包含一些基本的操作,比如bol中的查找、创建、更新*通过编程来介绍业务对象层的主要的类和方法**********************************************

*需要的数据
DATA: lr_core TYPE REF TOcl_crm_bol_core.*为了使用BOL中的服务,我们需要通过CORE类启动模型(组件集)
lr_core= cl_crm_bol_core=>get_instance( ).*一旦我们有了实例,之后便可以加载组件集*这里我们将使用ONEORDER组件集

*在Web UI上面,这个将会由框架操作。这里我们正在report程序中编程,因此需要自己来操作


TRY.CALL METHOD lr_core->load_component_setEXPORTINGiv_component_set_name= 'ONEORDER'.CATCHcx_crm_genil_general_error .ENDTRY.*组件加载了,因此我们可以使用BOL服务。让我们搜索一个特定的合同。为了实现这个目的,我们需要获取一个dquery服务对象的实例。
DATA: lr_query TYPE REF TOcl_crm_bol_dquery_service,
lr_result
TYPE REF TOcl_crm_bol_bo_col.*****搜索操作*********************** "获取动态搜索对象的实例,它会被用于搜索服务合同。 lr_query ?= cl_crm_bol_dquery_service=>get_instance( iv_query_name = 'BTQSrvCon')."每一个动态搜索对象将会有他自己的结果类型对象,这里BTQSrvcon的结果对象是BTQRSrvcon"因此在结果列表里面,所有的对象都是BTQRSrvcon的类型。 "我们得到了实例,之后我们需要设置选择条件值,取得所有描述是‘testing’的合同。"你可以多次使用这个方法,来添加不同的选择参数。 lr_query->add_selection_param( iv_attr_name = 'DESCRIPTION'iv_sign= 'I'iv_option= 'EQ'iv_low= 'testing')."获取以集合(collection)形式存在的的、匹配选择条件值的合同列表 "集合不过是一个保存记录的容器,我们可以把它和内表相类比 "它保存了记录. lr_result ?= lr_query->get_query_result( )."让我们输出集合中所有的合同ID和描述 "cl_crm_bol_entity用于表现业务对象层中的记录 DATA: lr_entity TYPE REF TOcl_crm_bol_entity,
lv_objectid
TYPE string,
lv_descr
TYPEchar40."读取集合中的第一条记录 lr_entity ?= lr_result->if_bol_bo_col~get_first( )."下面的while循环机制用于访问集合中的每一条数据 WHILE lr_entity ISBOUND."读取合同ID. "get property as string方法将返回字符串格式的属性,因此我们将lv_object声明为字符串。 lr_entity->get_property_as_string( EXPORTING iv_attr_name = 'OBJECT_ID'RECEIVING rv_result=lv_objectid )."get property as value将返回值本身的类型,因此我们使用数据元素来声明DESCRIPTION lr_entity->get_property_as_value( EXPORTING iv_attr_name = 'DESCRIPTION' IMPORTING ev_result =lv_descr ).WRITE: lv_objectid, lv_descr.WRITE /:."读取集合中的下一条数据. lr_entity ?= lr_result->if_bol_bo_col~get_next( ).ENDWHILE.

标签: none

添加新评论