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的原创文章,请关注公众号"汪子熙":
相关推荐
【SAP_BOL_Browser】是一个专门用于探索和理解SAP Business Object Library (BOL) 架构的工具。在SAP系统中,BOL是数据模型的核心部分,它定义了业务对象及其相互关系,为应用程序提供数据访问和操作的接口。通过SAP...
- `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 ...
* UKM_BOL_COMMS - 显示信贷风险总额 * UKM_MALUS_DSP - 信用透支清单 * V/08 - 条件:对A V的过程 * UKM_TRANSFER_ITEMS - 负债更新 * SOAMANAGER - SOA管理器 * SRT_UTIL - Web服务的跟踪实用程序 * SRT_TOOLS - ...
6. **CRM 核心服务**:`cl_crm_bol_core=>get_instance()` 获取 CRM(客户关系管理)的核心服务实例,这是处理 CRM 数据的关键。 7. **锁机制**:`lr_order->is_locked( ) = abap_true` 检查订单是否被锁定,如果被...
CRM GENIL模型是一种基于SAP CRM系统中的复杂查询开发模型。通过使用GENIL模型,开发人员能够更高效地构建复杂的业务智能报告和分析报表。这些报表通常涉及多表联查、复杂的过滤条件等,对于提高企业的决策效率具有...
在CRM 7.0版本中,引入了BSP/BOL技术和HTTP协议,允许用户通过网页浏览器直接访问SAP CRM,显著提升了用户体验。WebClient UI的特点在于其用户界面的个性化、直观的导航和界面,以及快速的信息创建、维护和查看功能...
这个阶段,WebClient UI利用SAP BSP(Business Server Pages)和BOL(Business Object Library)技术,通过HTTP协议使得用户可以通过网页浏览器访问SAP CRM,极大地提升了用户体验和跨平台兼容性。 CRM WebClient ...
SQL2005数据库软件在网上很难找到,因此我找了很久才下载到,欢迎大家使用!
SAP SNC 技术文档包含了对SAP SNC (供应链网络通信) 中的业务附加程序接口(BAdI)的详细列表和说明,这些BAdI允许技术人员为SNC组件自定义和扩展功能。BAdI是SAP中用于实现扩展点的一种技术,以便于开发人员能够按照...
- 对于`bol-api`这样的库,开发者应确保提供单元测试,以验证其功能的正确性。 - 使用`pytest`或`unittest`等测试框架可以方便地编写和运行测试。 10. **持续集成/持续部署(CI/CD)**: - 开发过程中,CI/CD工具...
"BOL"算法,全称为"Best Orthogonal Look",是一种DOA估计方法,它通过寻找最佳正交方向来确定信号源的位置。在双基地声纳系统中,BOL算法能够利用两个基站接收到的信号,计算出目标的两个DOA,然后通过几何关系推算...
描述中的"FM处理BP与BOl建立的函数处理BP数据"意味着我们使用Function Modules来操作BP数据,并且这些操作可能是通过BOL中的对象和方法来实现的。Function Modules通常是执行特定任务的预定义代码块,而BOL则提供了...
【Bol.com 爬虫】是一个用于抓取荷兰知名电商平台bol.com上产品信息的程序。这个爬虫项目的核心目标是收集bol.com上的商品列表,包括但不限于商品名称、价格、描述、评分等关键数据,以便进行数据分析或者建立自己的...
开源项目-schollz-bol.zip,Command-line and web journal that stays synchronized and encrypted across devices
《BoL_Scripts:从脚本到编程的艺术》 在IT行业中,脚本语言扮演着至关重要的角色,尤其是在自动化任务、游戏开发、网络服务等领域。本文将深入探讨以Lua为基础的"BoL_Scripts"项目,揭示其在编程实践中的应用与精髓...
from bol_retailer_api import RetailerApiClient client = RetailerApiClient(api_key='your_api_key', retailer_id='your_retailer_id') orders = client.get_orders() ``` 四、API调用和错误处理 在实际使用过程...
《BoL-Launcher_Server: 服务器端程序详解与应用》 在当今信息化社会,服务器端应用程序扮演着至关重要的角色,它们是构建大型分布式系统的基础。"BoL-Launcher_Server"作为一个专为BOL Launcher设计的服务器端程序...
【标题】:“BOL”可能是指“Block Oriented Language”或者在特定上下文中可能是某个项目的缩写,如“Blog Object Library”。在这个场景下,我们主要关注JavaScript编程语言的相关知识点。 【描述】:“bol”没有...