如何测试cds表功能?

2020-08-31 02:31发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,我创建了CDS表函数,并想为其编写单元测试:

定义表函数Z_COMP_CODE
   带参数
     @ Environment.systemField:#客户端
     clnt:abap.clnt,
     sel_opt:abap.char(1000)
 退货
 {
   客户:abap.clnt;
   CompanyCodeOld:bukrs;
   ProfitCenter:prctr;
   ValidFrom:datab;
   ValidTo:datbi;
   CompanyCodeNew:bukrs;
 }
 通过方法实现
   ycl_cme_table_function => QUERY_COMPANY_CODE;  

是否可以为表函数编写单元测试?

谢谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,我创建了CDS表函数,并想为其编写单元测试:

定义表函数Z_COMP_CODE
   带参数
     @ Environment.systemField:#客户端
     clnt:abap.clnt,
     sel_opt:abap.char(1000)
 退货
 {
   客户:abap.clnt;
   CompanyCodeOld:bukrs;
   ProfitCenter:prctr;
   ValidFrom:datab;
   ValidTo:datbi;
   CompanyCodeNew:bukrs;
 }
 通过方法实现
   ycl_cme_table_function => QUERY_COMPANY_CODE;  

是否可以为表函数编写单元测试?

谢谢

付费偷看设置
发送
7条回答
spaceman01
1楼-- · 2020-08-31 02:53

我可以使CDS表功能的单元测试正常工作。

我必须将其包装在CDS视图中。

我为此CDS视图创建了一个测试环境,并且 插入CDS表功能的数据:您将根据输入参数注入要返回的数据。

CDS表功能:

定义表功能Z_COMP_CODE
   带参数
     @ Environment.systemField:#客户端
     clnt:abap.clnt,
     sel_opt:abap.char(1000)
 退货
 {
   mandt:abap.clnt;
   佳丽:s_carr_id;
 }
 通过方法实现
   ycl_cme_table_function => QUERY_COMPANY_CODE; 

AMDP类:

 CLASS ycl_cme_table_function定义
   上市
   最后
   创建公众。
   公共部分。
     接口:if_amdp_marker_hdb。
     CLASS_METHODS query_company_code FOR TABLE FUNCTION z_comp_code。
   受保护的部分。
   专用部分。
 ENDCLASS。
 类别ycl_cme_table_function IMPLEMENTATION。
   HDB语言SQLSCRIPT选项的按数据库功能的query_company_code方法为只读
   使用吓人。
     lt_scarr = apply_filter(scarr,:sel_opt);
     返回选择曼陀罗,曼陀罗FROM:lt_scarr;
   终结法。
 ENDCLASS。

CDS视图:

 @ AbapCatalog.sqlViewName:'Z_COMP_CODEVIEW2'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:" CDS视图"
 定义视图Z_COMP_CODE_VIEW
     带有参数sel_opt:abap.char(1000)
 从Z_COMP_CODE中选择(clnt:$ session.client,sel_opt:$ parameters.sel_opt){
     曼特
     香芹籽
 } 

ABAP代码:

 CLASS lcl_app定义。
   公共部分。
     TYPES:ty_s_carrid稀有香型的TYPE RANGE,
            ty_z_comp_code_tab带空键的z_comp_code类型标准表。
     方法get_z_comp_code_tab
       输入
         s_carrid类型ty_s_carrid
       正在返回
         VALUE(z_comp_code_tab)类型ty_z_comp_code_tab。
 ENDCLASS。
 类别lcl_app实施。
   方法get_z_comp_code_tab。
     数据:lt_tab类型表z_comp_code,
            l_where TYPE字符串。
     " s_carrid = VALUE#((sign ='I'option ='CP'low ='A *'))的示例
     ",当前客户='100',则l_where的值将为:MANDT ='100'AND(CARRID LIKE'A%')
     l_where = cl_shdb_seltab => combine_seltabs(
           it_named_seltabs = VALUE#((name ='CARRID'dref = REF#(s_carrid []))))
           iv_client_field ='MANDT')。
     选择 *
         从z_comp_code_view(sel_opt = @l_where)
         插入表@z_comp_code_tab
         ## db_feature_mode [amdp_table_function]。
   终结法。
 ENDCLASS。

 类别ltc_main定义
       用于检测
       持续时间短
       风险级别危害。
   专用部分。
     方法:设置,
       测试测试。
     CLASS-DATA:环境类型ref if_cds_test_environment。
     类别方法:class_setup,
       class_teardown。
 ENDCLASS。
 类别ltc_main的实现。
   方法class_setup。
     环境= cl_cds_test_environment =>创建(
         i_for_entity ='Z_COMP_CODE_VIEW')。  " CDS视图(调用表函数)
   终结法。
   方法测试。
     类型:ty_scarr_tab带有空格键的吓人类型标准表。
     environment-> insert_test_data("将CDS表函数的存根存成Z_COMP_CODE
         i_data = VALUE lcl_app => ty_z_comp_code_tab(
             (carrid ='AY'))
         i_parameter_values = VALUE#(
             (parameter_name ='CLNT'parameter_value = sy-mandt)
             (parameter_name ='SEL_OPT'parameter_value = | MANDT ='{sy-mandt}'AND(CARRID LIKE'A%')|)))。
     DATA(z_comp_code_tab)=新的lcl_app()-> get_z_comp_code_tab(VALUE#((sign ='I'option ='CP'low ='A *')))。
     cl_abap_unit_assert => assert_equals(
         行为= z_comp_code_tab
         exp = VALUE lcl_app => ty_z_comp_code_tab((carrid ='AY')))。
   终结法。
   方法class_teardown。
     环境-> destroy()。
   终结法。
   方法设置。
     环境-> clear_doubles()。
   终结法。
 ENDCLASS。

 数据:香石类型稀有香石。
 SELECT-OPTIONS:s_carrid FOR香薰。

 选择开始。
   新的lcl_app()-> get_z_comp_code_tab(s_carrid [])。
当学会了学习
2楼-- · 2020-08-31 02:55

我无法成功对CDS表功能进行单元测试。 我建议在此博客文章中询问SAP作者: https://blogs.sap.com/2016/10/19/introduction-cds-test-double-framework-write-unit-tests-abap-cds-entities/

追夢秋陽
3楼-- · 2020-08-31 02:39
骆驼绵羊
4楼-- · 2020-08-31 02:44
< p>我同意 Sandra 。 跟随提到的博客,您可以进行测试 Anujit Marty :)

My梦
5楼-- · 2020-08-31 02:49

你好阿尼吉特·马蒂

当然可以,一种简单的方法是在您拥有的地方编写测试程序 选择选项中的必填字段。 现在,您必须动态地包装选择选项并输入CDS的参数。 在表函数方法内部,您必须使用APPLY_FILTER函数来应用选择选项。

您可以参考下面的Blog,该指南将指导您使用同一选项。

CDS_TABLE_FUNCTION

致谢!

Nan4612
6楼-- · 2020-08-31 02:48

Sandra Rossi 非常感谢。

一周热门 更多>