如何使cl_cds_test_environment模拟I_BillingDocument生效?HANA 2021
解决I_BillingDocument在CL_CDS_TEST_ENVIRONMENT中模拟无效的问题
针对你遇到的根节点CDS视图I_BillingDocument模拟无效、仅基础视图I_BillingDocumentBasic生效的问题,可按以下步骤排查解决:
1. 直接向根视图插入测试数据
当前代码直接操作底层表VBRK,但I_BillingDocument作为CDS根视图可能存在字段映射、过滤逻辑或关联规则,导致底层表数据无法被根视图查询捕获。应直接针对I_BillingDocument视图结构插入测试数据:
" 替换原VBRK数据插入逻辑 DATA: lt_billing_doc TYPE STANDARD TABLE OF I_BillingDocument WITH EMPTY KEY. lt_billing_doc = VALUE #( ( BillingDocument = '1234567890' ) ). go_cds->insert_test_data( lt_billing_doc ).
2. 调整测试环境的依赖配置
虽然设置了I_select_base_dependencies = abap_true,但可能需要显式指定根视图的关联依赖,确保测试环境覆盖完整的视图链路:
go_cds = cl_cds_test_environment=>create( i_for_entity = 'I_BillingDocument' i_dependencies = VALUE #( ( 'I_BillingDocumentBasic' ) ) ). go_cds->enable_double_redirection( ).
3. 切换重定向模式
HANA 2021版本中,双重重定向(enable_double_redirection)可能对包含关联、计算字段的复杂根视图支持有限。尝试切换为单重定向模式,直接拦截根视图的查询请求:
go_cds->enable_single_redirection( ). " 替换enable_double_redirection()
4. 验证CDS视图的过滤逻辑
检查I_BillingDocument的CDS定义,确认是否存在额外过滤条件(如WHERE子句、状态校验)。若测试数据不满足这些条件,即使插入成功也无法被查询到。例如根视图可能仅包含已过账的 Billing Document,需确保测试数据包含对应状态字段的值。
内容的提问来源于stack exchange,提问作者Benedikt Kromer
相关产品推荐
相关产品推荐

