`
JerryWang_SAP
  • 浏览: 1043432 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

SAP CL_CRM_BOL_ENTITY单元测试方法

阅读更多

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的原创文章,请关注公众号"汪子熙":

0
1
分享到:
评论

相关推荐

    SAP_BOL_Browser

    【SAP_BOL_Browser】是一个专门用于探索和理解SAP Business Object Library (BOL) 架构的工具。在SAP系统中,BOL是数据模型的核心部分,它定义了业务对象及其相互关系,为应用程序提供数据访问和操作的接口。通过SAP...

    SAP_BOL_查询创建修改

    - `lv_bol_core = cl_crm_bol_core=&gt;get_instance()`:获取 SAP BOL Core 的实例。 - `lv_bol_core-&gt;start_up('PROD_ALL')`:启动 SAP BOL Core,参数 `'PROD_ALL'` 指定了启动模式。 2. **创建 SAP BOL Query ...

    SAP UKM_PI 008报错分析

    * UKM_BOL_COMMS - 显示信贷风险总额 * UKM_MALUS_DSP - 信用透支清单 * V/08 - 条件:对A V的过程 * UKM_TRANSFER_ITEMS - 负债更新 * SOAMANAGER - SOA管理器 * SRT_UTIL - Web服务的跟踪实用程序 * SRT_TOOLS - ...

    block new record

    6. **CRM 核心服务**:`cl_crm_bol_core=&gt;get_instance()` 获取 CRM(客户关系管理)的核心服务实例,这是处理 CRM 数据的关键。 7. **锁机制**:`lr_order-&gt;is_locked( ) = abap_true` 检查订单是否被锁定,如果被...

    CRM GENIL模型开发

    CRM GENIL模型是一种基于SAP CRM系统中的复杂查询开发模型。通过使用GENIL模型,开发人员能够更高效地构建复杂的业务智能报告和分析报表。这些报表通常涉及多表联查、复杂的过滤条件等,对于提高企业的决策效率具有...

    SAPCRM基础培训教材.doc

    在CRM 7.0版本中,引入了BSP/BOL技术和HTTP协议,允许用户通过网页浏览器直接访问SAP CRM,显著提升了用户体验。WebClient UI的特点在于其用户界面的个性化、直观的导航和界面,以及快速的信息创建、维护和查看功能...

    SAPCRM基础培训.doc

    这个阶段,WebClient UI利用SAP BSP(Business Server Pages)和BOL(Business Object Library)技术,通过HTTP协议使得用户可以通过网页浏览器访问SAP CRM,极大地提升了用户体验和跨平台兼容性。 CRM WebClient ...

    SqlServer2K5_BOL_Jan2009_zh-CHT

    SQL2005数据库软件在网上很难找到,因此我找了很久才下载到,欢迎大家使用!

    SAP SNC 技术文档

    SAP SNC 技术文档包含了对SAP SNC (供应链网络通信) 中的业务附加程序接口(BAdI)的详细列表和说明,这些BAdI允许技术人员为SNC组件自定义和扩展功能。BAdI是SAP中用于实现扩展点的一种技术,以便于开发人员能够按照...

    Python库 | python-bol-api-latest-0.8.1b0.tar.gz

    - 对于`bol-api`这样的库,开发者应确保提供单元测试,以验证其功能的正确性。 - 使用`pytest`或`unittest`等测试框架可以方便地编写和运行测试。 10. **持续集成/持续部署(CI/CD)**: - 开发过程中,CI/CD工具...

    直线阵波束形成.rar_BOL_DOA_双基地_双基地定位_波束形成

    "BOL"算法,全称为"Best Orthogonal Look",是一种DOA估计方法,它通过寻找最佳正交方向来确定信号源的位置。在双基地声纳系统中,BOL算法能够利用两个基站接收到的信号,计算出目标的两个DOA,然后通过几何关系推算...

    FM与BOL在处理BP

    描述中的"FM处理BP与BOl建立的函数处理BP数据"意味着我们使用Function Modules来操作BP数据,并且这些操作可能是通过BOL中的对象和方法来实现的。Function Modules通常是执行特定任务的预定义代码块,而BOL则提供了...

    Bol.com 爬虫

    【Bol.com 爬虫】是一个用于抓取荷兰知名电商平台bol.com上产品信息的程序。这个爬虫项目的核心目标是收集bol.com上的商品列表,包括但不限于商品名称、价格、描述、评分等关键数据,以便进行数据分析或者建立自己的...

    开源项目-schollz-bol.zip

    开源项目-schollz-bol.zip,Command-line and web journal that stays synchronized and encrypted across devices

    BoL_Scripts:从脚本

    《BoL_Scripts:从脚本到编程的艺术》 在IT行业中,脚本语言扮演着至关重要的角色,尤其是在自动化任务、游戏开发、网络服务等领域。本文将深入探讨以Lua为基础的"BoL_Scripts"项目,揭示其在编程实践中的应用与精髓...

    Python库 | python-bol-retailer-api-0.4.2.tar.gz

    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

    《BoL-Launcher_Server: 服务器端程序详解与应用》 在当今信息化社会,服务器端应用程序扮演着至关重要的角色,它们是构建大型分布式系统的基础。"BoL-Launcher_Server"作为一个专为BOL Launcher设计的服务器端程序...

    bol

    【标题】:“BOL”可能是指“Block Oriented Language”或者在特定上下文中可能是某个项目的缩写,如“Blog Object Library”。在这个场景下,我们主要关注JavaScript编程语言的相关知识点。 【描述】:“bol”没有...

Global site tag (gtag.js) - Google Analytics