In SAP standard development it is very important to use unit test to cover those changes on legacy code to try to avoid side effect. As type reference CL_CRM_BOL_ENTITY is widely used in UI component code, I would like to find a way to construct its reference by sample data.
The normal way we get instance of CL_CRM_BOL_ENTITY is, to use query or dquery method provided in class CL_CRM_BOL_CORE, which return a BOL collection list and then we can get each bol entity from by iterating that collection. However, both of these methods will perform database scan and return found data – such behavior is not appropriate for unit test. I have gone through all public methods in CL_CRM_BOL_CORE and do not find a useful method to construct bol entity based on sample data, so I write a small piece of code:
I create a class which inherits CL_CRM_BOL_ENTITY:
Create a static private attribute:
And initialize it in class_constructor:
METHOD class_constructor.
so_bol_core = cl_crm_bol_core=>get_instance( ).
so_bol_core->load_component_set( 'PROD_ALL' ).
ENDMETHOD.
The signature and source code are listed below:
* <SIGNATURE>---------------------------------------------------------------------------------------+
* | Static Public Method ZCL_PROD_UNIT_TEST_TOOL=>GET_FAKE_BOL_ENTITY
* +-------------------------------------------------------------------------------------------------+
* | [--->] IS_DATA TYPE ANY
* | [--->] IV_BOL_NAME TYPE CRMT_EXT_OBJ_NAME
* | [--->] IV_KEY TYPE CRMT_OBJECT_GUID
* | [<-()] RO_RESULT TYPE REF TO CL_CRM_BOL_ENTITY
* +--------------------------------------------------------------------------------------</SIGNATURE>
METHOD get_fake_bol_entity.
DATA: lr_cast TYPE REF TO cl_crm_genil_container_object,
lr_entity TYPE REF TO crmt_bol_entity_line.
DATA(lv_root_list) = cl_crm_genil_container_tools=>get_new_cont_root_list( ).
DATA(lr_root_object) = lv_root_list->add_object(
iv_object_name = iv_bol_name
is_object_key = iv_key
iv_attr_req = abap_false ).
lr_root_object->set_attributes( is_data ).
lr_cast ?= lr_root_object.
CREATE DATA lr_entity.
lr_entity->instance = lr_cast->data_ref->instance.
ro_result = NEW cl_crm_bol_entity( iv_cont_proxy = lr_cast
iv_manager_entry = lr_entity ).
ENDMETHOD.
And below is an example how to construct BOL entity using this utility method:
CONSTANTS: cv_prod_guid TYPE crmt_object_guid VALUE '0123456789123456'.
DATA(ls_prod_header) = VALUE comt_product_ui( product_guid = cv_prod_guid
product_id = 'I042416' product_type = '01' ).
DATA(ro_entity) = zcl_prod_unit_test_tool=>get_fake_bol_entity(
iv_bol_name = 'Product'
is_data = ls_prod_header
iv_key = cv_prod_guid ).
DATA(lv_type) = ro_entity->get_property_as_string( 'PRODUCT_TYPE' ).
DATA(lv_guid) = ro_entity->get_property_as_string( 'PRODUCT_GUID' ).
DATA(lv_id) = ro_entity->get_property_as_string( 'PRODUCT_ID' ).
WRITE: / lv_type.
WRITE: / lv_guid.
WRITE: / lv_id.
要获取更多Jerry的原创文章,请关注公众号"汪子熙":
相关推荐
- `lv_bol_core = cl_crm_bol_core=>get_instance()`:获取 SAP BOL Core 的实例。 - `lv_bol_core->start_up('PROD_ALL')`:启动 SAP BOL Core,参数 `'PROD_ALL'` 指定了启动模式。 2. **创建 SAP BOL Query ...
6. **CRM 核心服务**:`cl_crm_bol_core=>get_instance()` 获取 CRM(客户关系管理)的核心服务实例,这是处理 CRM 数据的关键。 7. **锁机制**:`lr_order->is_locked( ) = abap_true` 检查订单是否被锁定,如果被...
小姐姐炫酷唯美引导页.zip
scratch少儿编程逻辑思维游戏源码-让它们跳起来.zip
少儿编程scratch项目源代码文件案例素材-战斗塔防.zip
前端开发_Vue全家桶_vw适配_vux组件库_mescroll滚动_fastclick优化_mock模拟_less预处理器_移动端脚手架_基于Vue2和Webpack3构建的移动
数据可视化分析_微信小程序开发_JavaScript_Canvas图表渲染_数据助手工具_仿微信小程序数据助手_支持线性图圆环图柱状图条形图_动态效果适配_商业数据分析_移动端数据
少儿编程scratch项目源代码文件案例素材-章鱼怪.zip
音乐流媒体_API开发_网易云音乐接口封装与数据抓取_提供完整的网易云音乐API调用解决方案_包含歌曲搜索_MP3资源获取_歌词解析_播放列表管理_歌手专辑查询_专辑详情展示_MV
物联网与健康监测_基于RISC-V架构ESP32-C3芯片与MAX30102MAX30205传感器_LVGL图形界面与WiFiBLE双模通信的智能手表系统_实时监测心率血氧体温
wangtengfei-hn_EmployeesExample_23540_1745868671962
Android开发_自定义View绘制动画效果_模仿小米手环App首页计步数据展示_实现可自定义目标步数当前步数颜色字体大小圆点尺寸的动态步数统计图表组件_用于健康运动类App展示
少儿编程scratch项目源代码文件案例素材-钻机机器人.zip
scratch少儿编程逻辑思维游戏源码-狂暴坦克.zip
scratch少儿编程逻辑思维游戏源码-拳击.zip
scratch少儿编程逻辑思维游戏源码-魔方冲刺.zip
少儿编程scratch项目源代码文件案例素材-重返危机.zip
杰奇CMS小说网站系统_php53-73_mysql5-MariaDB10_utf8mb4编码_GBK自动转码_INNODB存储引擎_多模块支持_前后台分离_电脑手机双版适配_
linyuan620_StockAnalysisAssistant_17128_1745866117970
本系统采用的数据库是Mysql,使用SpringBoot框架开发,运行环境使用Tomcat服务器,ECLIPSE 是本系统的开发平台。在设计过程中,充分保证了系统代码的良好可读性、实用性、易扩展性、通用性、便于后期维护、操作方便以及页面简洁等特点。