使用mard与使用ndsm_e_mard的ABAP CDS性能

2020-08-20 11:02发布

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

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


大家好,

我正在创建一个连接表MARA,MARC,MARD,MBEW和MAKT的CDS视图。 但是,如果我使用MARD,则会得到错误的Labst值(总是返回0),因此必须改用ndsm_e_mard。

问题在于,使用MARD时,我的响应时间为150.000-250.000微秒,而仅将mard更改为ndsm_e_mard时,响应时间将增加到大约1.000.000-1.300.000微秒。

这怎么可能,是否应该优化ndsm_e_mard并返回更快的时间?

希望我可以在这里得到一些帮助。

下面是我的CDS代码

 @ AbapCatalog.sqlViewName:'ZTSTMAT'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:"测试"
 定义视图ztstmat_svc
     从mara中选择
         内连接marc on marc.matnr = mara.matnr
         内连接mard on mard.matnr = marc.matnr
                                                     和mard.werks = marc.werks
         mbew.matnr = marc.matnr上的内部连接mbew
                                                     和mbew.bwkey = marc.werks
         makt.matnr = mara.matnr上的内部联接
 {
     关键mara.matnr,
         mara.meins,
         mara.lvorm,
         mara.matkl,
         mara.mtart,
         mara.xchpf,
         mara.begru,
         marc.mmsta,
         marc.werks,
         marc.ausme,
         mard.lgort,
         mard.labst,
         mbew.bwkey,
         mbew.peinh,
         mbew.bwtar,
         makt.maktx,
         makt.spras,
        
         案例marc.ausme
             什么时候'mara.meins
             当''然后mara.meins
              其他marc.ausme
         以单位结尾
 }
  
 哪里
         mara.begru <>'CAFU'
     和mara.lvorm <>'X'
     和mara.matkl>'11000000'
     和marc.lvorm <>'X'
     和marc.mmsta <>'03'
     和marc.mmsta <>'Z3'
     和mbew.bwtar =''
     和mard.labst <> 0
     和makt.spras = $ session.system_language
/*
 

我从我的程序中执行以下操作:

选择matnr,xchpf,mtart,werks,peinh,maktx,unit,labst
     来自ztstmat_svc
     插入表@Data(c_data)
     在哪里EQ @pa_werks
     和@so_lgort中的lgort。

     按matnr排序c_data。
     从c_data比较matnr中删除相邻的重复项。

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

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


大家好,

我正在创建一个连接表MARA,MARC,MARD,MBEW和MAKT的CDS视图。 但是,如果我使用MARD,则会得到错误的Labst值(总是返回0),因此必须改用ndsm_e_mard。

问题在于,使用MARD时,我的响应时间为150.000-250.000微秒,而仅将mard更改为ndsm_e_mard时,响应时间将增加到大约1.000.000-1.300.000微秒。

这怎么可能,是否应该优化ndsm_e_mard并返回更快的时间?

希望我可以在这里得到一些帮助。

下面是我的CDS代码

 @ AbapCatalog.sqlViewName:'ZTSTMAT'
 @ AbapCatalog.compiler.compareFilter:是
 @ AbapCatalog.preserveKey:是
 @ AccessControl.authorizationCheck:#检查
 @ EndUserText.label:"测试"
 定义视图ztstmat_svc
     从mara中选择
         内连接marc on marc.matnr = mara.matnr
         内连接mard on mard.matnr = marc.matnr
                                                     和mard.werks = marc.werks
         mbew.matnr = marc.matnr上的内部连接mbew
                                                     和mbew.bwkey = marc.werks
         makt.matnr = mara.matnr上的内部联接
 {
     关键mara.matnr,
         mara.meins,
         mara.lvorm,
         mara.matkl,
         mara.mtart,
         mara.xchpf,
         mara.begru,
         marc.mmsta,
         marc.werks,
         marc.ausme,
         mard.lgort,
         mard.labst,
         mbew.bwkey,
         mbew.peinh,
         mbew.bwtar,
         makt.maktx,
         makt.spras,
        
         案例marc.ausme
             什么时候'mara.meins
             当''然后mara.meins
              其他marc.ausme
         以单位结尾
 }
  
 哪里
         mara.begru <>'CAFU'
     和mara.lvorm <>'X'
     和mara.matkl>'11000000'
     和marc.lvorm <>'X'
     和marc.mmsta <>'03'
     和marc.mmsta <>'Z3'
     和mbew.bwtar =''
     和mard.labst <> 0
     和makt.spras = $ session.system_language
/*
 

我从我的程序中执行以下操作:

选择matnr,xchpf,mtart,werks,peinh,maktx,unit,labst
     来自ztstmat_svc
     插入表@Data(c_data)
     在哪里EQ @pa_werks
     和@so_lgort中的lgort。

     按matnr排序c_data。
     从c_data比较matnr中删除相邻的重复项。
付费偷看设置
发送
4条回答
me_for_i
1楼-- · 2020-08-20 11:37

SAP注释2713495 可能会给您一些想法。

SKY徐
2楼-- · 2020-08-20 11:53

什么是ndsm_e_mard? 视图?不是标准的ERP对象(不是在标准ECC6 EHP8中)。

(为什么IST LABST始终为零?您是否使用SE16进行了检查?)

wang628962
3楼-- · 2020-08-20 11:43

您好Uwe Fetzer ,在S4Hana中,数据模型已更改,MARD已替换为视图ndsm_e_mard。

空代码
4楼-- · 2020-08-20 11:35

现在就可以使用它了 响应时间是绝对有意义的:像LABST这样的字段是根据MATDOC和其他S/4表动态计算的。 因此,我认为您无法改善请求。

一周热门 更多>