Hello everyone,
I'm creating a CDS view joining tables MARA, MARC, MARD, MBEW and MAKT. But if I use MARD, I get wrong values for labst (always return 0), so I have to use ndsm_e_mard instead.
The problem is that while using MARD I get response time of 150.000-250.000 microseconds, while just changing mard for ndsm_e_mard, the response time rises to aprox 1.000.000-1.300.000 microseconds.
How is this possible, shouldn't ndsm_e_mard be optimized and return faster times?
Hope I can get some help here.
Below is my code for CDS
@AbapCatalog.sqlViewName: 'ZTSTMAT'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Test'
define view ztstmat_svc
as select from mara
inner join marc on marc.matnr = mara.matnr
inner join mard on mard.matnr = marc.matnr
and mard.werks = marc.werks
inner join mbew on mbew.matnr = marc.matnr
and mbew.bwkey = marc.werks
inner join makt on makt.matnr = mara.matnr
{
key 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,
case marc.ausme
when ' ' then mara.meins
when '' then mara.meins
else marc.ausme
end as Unit
}
where
mara.begru <> 'CAFU'
and mara.lvorm <> 'X'
and mara.matkl > '11000000'
and marc.lvorm <> 'X'
and marc.mmsta <> '03'
and marc.mmsta <> 'Z3'
and mbew.bwtar = ''
and mard.labst <> 0
and makt.spras = $session.system_language
/*
I execute from my program like this:
SELECT matnr, xchpf, mtart, werks, peinh, maktx, unit, labst
FROM ztstmat_svc
INTO TABLE @Data(c_data)
WHERE werks EQ @pa_werks
and lgort in @so_lgort.
sort c_data by matnr.
DELETE ADJACENT DUPLICATES FROM c_data COMPARING matnr.