关于Display Mode

从CRM5.0开始,BOL带有了一个Display Mode。目的就是防止误操作BOL数据。

最终是改变了core的一个参数

IV_DISPLAY_MODE_SUPPORT =ABAP_TRUE.

不过,在调用start_up的时候,默认是非显示模式,也就是可改。

代码示例:

* Start BOL core withdisplay mode support

DATA: lv_bol_core TYPEREF TO cl_crm_bol_core.

lv_bol_core =cl_crm_bol_core=>get_instance( ).

lv_bol_core->start_up(iv_appl_name = ‘MY_COMPONENT_SET’

iv_display_mode_support =ABAP_TRUE ).

* Execute query andaccess entity

DATA: lv_entity type refto cl_crm_bol_entity.

lv_entity= ... - "Entity is in now display mode

* Switch to change modeand change entity

lv_entity->switch_to_change_mode(). "Reread and lock entity

IFlv_entity->is_changeable( ) = abap_true.

lv_entity->set_property_as_string(iv_attr_name =  'PROPERTY_NAME'

iv_value          = 'New Value' ).

ENDIF.

注意下switch_to_change_mode与LOCK效果等同。目的就是独占当前的实例,便于增删改。

下面这个例子,演示的如何使用BOL的查询。

* Get searchcriterion of BOL query

DATA: lv_query TYPEREF TO cl_crm_bol_query_service,

lv_city type string.

lv_query =cl_crm_bol_query_service=>get_instance( ‘QUERY_NAME’ ).

lv_city= lv_query->if_bol_bo_property_access~get_property_as_string(‘City’).“Short form using alias

lv_city =lv_query->get_property_as_string( ‘City’ ).

* Set property ofBOL entity

DATA: lv_entity TYPEREF TO cl_crm_bol_entity

lv_entity->if_bol_bo_property_access~set_property(iv_attr_name = ‘CITY’

iv_value          = ‘Walldorf’).

“Short form usingalias

lv_entity->set_property(iv_attr_name = ‘CITY’

iv_value          = ‘Walldorf’ ).

* Cast toproperty_access interface

DATA:lv_business_object TYPE REF TO if_bol_bo_property_access.

lv_business_object?= lv_entity.

一些常用类之间的关系。

CL_CRM_BOL_ENTITY_COL有接口IF_BOL_ENTITY_COL。

CL_CRM_BOL_BO_COL有接口IF_BOL_BO_COL。

CL_CRM_BOL_ENTITY_COL的BO_PROPERTY_ACCESS集合就是CL_CRM_BOL_BO_COL

IF_BOL_ENTITY_COL接口可以进一步派生接口IF_BOL_BO_COL。

这些类都可以对集合做如下动作

INSERT, GET_FIRST,GET_NEXT, GET_CURRENT, SORT, CLEAR, MARK, UNMARK.

下面的代码示例获取当前行数据及集合循环指针的用法。

* Create collection

DATA: lv_collectionTYPE REF TO cl_crm_bol_bo_collection,

lv_property_accessTYPE REF TO if_bol_bo_property_access,

lv_query TYPE REF TOcl_crm_bol_query_service.

CREATE OBJECTlv_collection.

...

* Add item and makeit current

lv_collection->if_bol_bo_col~insert(iv_bo = lv_query

Iv_index = 1

Iv_set_focus =ABAP_BOOL ).

* Global iteration

lv_property_access =lv_collection->get_next( ). “Global iteration

“ moves focus

* Local iteration

DATA: lv_iteratorTYPE REF TO if_bol_bo_col_iterator.

lv_iterator =lv_collection->get_iterator( ).

lv_property_access =lv_iterator->get_first( )

WHILElv_query_is_bound.

lv_property_access =lv_collection->get_next(). “Local iteration

does not

ENDWHILE. “ movefocus

下面代码演示bol的数据查找功能(很弱)。注意,找到的话,根据你的要求返回是行号或者对象。

* Find by property

DATA: lv_personsTYPE REF TO cl_crm_bol_entity_collection,

lv_male TYPE REF TOcl_crm_bol_entity,

lv_iterator TYPE REFTO if_bol_bo_col_iterator.

lv_iterator =lv_persons->get_iterator( ).

lv_male =lv_iterator->find_by_property( iv_attr_name = ‘SEX’

iv_value = 2 ).

* Set collectionfocus on the entity found

lv_persons->find(iv_bo = lv_male ).

下面代码演示bol的排序。这个功能一旦用了,那么就是真实的把对象重新排列了,原来的序列必定不存在了。(其实原理就是链表重排)

* Sorting

DATA: lv_personsTYPE REF TO cl_crm_bol_entity_collection,

lv_male TYPE REF TOcl_crm_bol_entity,

lv_iterator TYPE REFTO if_bol_bo_col_iterator.

lv_persons->sort(iv_attr_name = ‘SEX’

iv_sort_order = IF_BOL_BO_COL=>SORT_DESCENDING )."默认正序

关于多项选择,主要看mark和unmark函数,以及get_marked

下面这段实例很实用,说的是如何获取bo的报错。

* Access messages ofa business object

* 1) Use the messagecontainer manager

DATA: lv_mcm TYPEREF TO cl_crm_genil_mess_cont_manager.

lv_mcm =lv_bol_core->get_message_cont_manager( ).

* 2) ... to obtainthe message container

DATA: lv_object_nameTYPE crmt_ext_obj_name,

Lv_object_id TYPEcrmt_gnil_object_id.

lv_object_name =lv_order->get_name( ).

lv_object_id =lv_order->get_key( ).

DATA: lv_mc TYPE REFTO if_genil_message_container.

lv_mc =lv_mcm->get_message_cont( iv_object_name = lv_object_name

Iv_object_id =lv_object_id ).

* 3) Access messages

DATA:lv_number_of_errors TYPE int4,

lt_error_messagesTYPE crmt_genil_message_tab.

lv_number_of_errors= lv_mc->get_number_of_messages( lv_mc->mt_error).

IF lv_number_of_errors <> 0.

lt_error_messages =lv_mc->get_messages( lv_mc->mt_error ).

ENDIF.

BOL简单分析(二)相关推荐

  1. 掘金15W沸点简单分析(二)

    一.数据预处理与入库 获取到了原始数据之后,下一步就是清洗入库. 1.1 数据模型 因为是简单分析,所以只获取话题.用户.消息三块内容.具体如下: class Pins(object):"& ...

  2. BOL简单分析(一)

    BOL其实是一系列接口和函数的总称.目的是为了更新crm的一些bapi的使用,实现crm的所有功能. 有一些比较常见或者重要的class CL_CRM_BOL_QUERY_SERVICE 查询用到的. ...

  3. 【RuoYi-Vue-Plus】学习笔记 46 - Redisson(十二)布隆过滤器 BloomFilter 简单分析

    文章目录 前言 参考目录 测试方法 配置说明 Demo 方法 功能调用流程分析 1.布隆过滤器的初始化 `tryInit` 1.1.创建布隆过滤器 1.2.初始化布隆过滤器 1.2.1.计算 bit ...

  4. 二维正态分布图python代码_Python数据可视化正态分布简单分析及实现代码

    Python说来简单也简单,但是也不简单,尤其是再跟高数结合起来的时候... 正态分布(Normaldistribution),也称"常态分布",又名高斯分布(Gaussiandi ...

  5. Mac与Phy组成原理的简单分析

    Mac与Phy组成原理的简单分析 2011-12-28 15:30:43 //http://blog.chinaunix.net/uid-20528014-id-3050217.html 本文乃fir ...

  6. modem (1)---手机主叫的信道流程与Modem Log简单分析

    手机主叫的信道流程与Modem Log简单分析 层三信令里看到建立RRCCMM层什么的到底是什么意思?建立这些层有什么用? 从协议栈的角度来说,RR属于接入层,而MM和CC都属于非接入层即NAS. R ...

  7. Python数据挖掘学习笔记】九.回归模型LinearRegression简单分析氧化物数据

    #2018-03-23 16:26:20 March Friday the 12 week, the 082 day SZ SSMR [Python数据挖掘学习笔记]九.回归模型LinearRegre ...

  8. x264源代码简单分析:宏块编码(Encode)部分

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

  9. x264源代码简单分析:x264_slice_write()

    ===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...

最新文章

  1. 山西对口升学计算机分数线,2020年山西对口升学本科一批录取分数线是多少
  2. java构造方法何时被调用_构造方法何时被调用
  3. MySQL查看数据表
  4. 通过Java反编译揭开一些问题的真相
  5. 《Python程序设计》教学大纲
  6. Apache Lucene的结构
  7. 找不到android的sdk,CircleCI – 找不到Android Studio项目的SDK位置
  8. Python机器学习 使用sklearn构建决策树复习
  9. 【蓝桥杯单片机11】单总线温度传感器DS18B20的基本操作
  10. 经验分享 | 我是如何从小白到收获几个不错的offer!
  11. 一文通俗理解最大似然估计· 看不懂你打我,无公式
  12. 多媒体技术简答题和论述题
  13. 总结了一些很实用值得收藏的站点
  14. 数据降维(PCA、因子分析法)
  15. Apache服务器的下载、安装、配置等等
  16. 苹果软件测试的电池损耗准确,电池不耐用?教你如何检测iPhone电池损耗!
  17. 阿里云 ECS 7 天实践训练营 - day01 -基于ECS搭建FTP服务
  18. zepto和jquery
  19. CSS滤镜实现鼠标悬停图片变黑白(灰色)
  20. 安卓手机端微信文件存储位置

热门文章

  1. ❤️Windows系统❤️cmd命令+实用工具 大全❤️完整总结
  2. 大数据再出发-19Flink
  3. 计算机操作系统执行可执行程序时,内存分配详解
  4. SSO JA-SIG
  5. 一个成功的男人如何去追求身边的女人
  6. 我的微信被限制使用了!
  7. 使用无线WIFI模块NodeMCU Lua V3物联网开发板8266-01/01S 在Arduino搭建环境到点亮一个LED灯
  8. 在Excel中插入行并复制单元格格式
  9. 简单灵活万用管理软件——蓝点通用管理系统V26破版,手慢无
  10. 怎样更改软件默认安装路径由C盘到其他盘