fco_abr_bel_ld_a is a CDS View that provides data about "Settlement actual costs per ledger" in SAP S/4HANA. It reads from 3 data sources (t000, tka01, finsc_cmp_versnd). Part of development package KABR.
@AbapCatalog.sqlViewName: 'FCOV_ABRBELLDA'
@EndUserText.label : 'Settlement actual costs per ledger'
@ClientHandling.algorithm: #SESSION_VARIABLE@Metadata.ignorePropagatedAnnotations: true@AccessControl.authorizationCheck: #NOT_REQUIRED@ObjectModel.usageType.serviceQuality: #Pdefineview fco_abr_bel_ld_a
withparameters akP : abap.char(3), // Settlement period auak-perio
akG : abap.char(4) as// Settlement fiscal year auak-gjahr
select
a.rldnr as lednr,
objnr,
ryear as gjahr,
v.versn as versn,
racct as kstar,
hrkft,
vrgng,
casewhen parobsrc = '1' then parob1 elsecasewhen parobsrc = '2' then paccasty
else '' endendas parob, // COSS only
uspob, // COSS only
rassc as vbund, // COSP only
sbusa as pargb, // COSP only
co_beknz as beknz,
rwcur as twaer,
co_meinh as meinh,
bemot,
beltp,
casewhen ryear < :akG or poper <= :akP thencasewhen v.field_name_wtgbtr_add isnullor
v.field_name_wtgbtr_add = 'WSL' then wsl
when v.field_name_wtgbtr_add = 'WSL2' then wsl2
when v.field_name_wtgbtr_add = 'WSL3' then wsl3
else 0 endelse 0 endas wtgbtr,
casewhen ryear = :akG and poper = :akP thencasewhen v.field_name_wtgbtr_add isnullor
v.field_name_wtgbtr_add = 'WSL' then wsl
when v.field_name_wtgbtr_add = 'WSL2' then wsl2
when v.field_name_wtgbtr_add = 'WSL3' then wsl3
else 0 endelse 0 endas wtgper,
casewhen ryear < :akG or poper <= :akP thencasewhen v.field_name_wogbtr_add isnullthen 0
when t.xwbuk = '' and
( ( ( mig_source = 'C' and bstat = 'C' ) and co_osl <> 0 ) or
( ( mig_source <> 'C' or bstat <> 'C' ) and rco_ocur <> '' ) ) then co_osl
when v.field_name_wogbtr_add = 'HSL' then hsl
when v.field_name_wogbtr_add = 'OSL' then osl
when v.field_name_wogbtr_add = 'KSL' then ksl
when v.field_name_wogbtr_add = 'VSL' then vsl
when v.field_name_wogbtr_add = 'BSL' then bsl
when v.field_name_wogbtr_add = 'CSL' then csl
when v.field_name_wogbtr_add = 'DSL' then dsl
when v.field_name_wogbtr_add = 'ESL' then esl
when v.field_name_wogbtr_add = 'FSL' then fsl
when v.field_name_wogbtr_add = 'GSL' then gsl
else 0 endelse 0 endas wogbtr,
casewhen ryear = :akG and poper = :akP thencasewhen v.field_name_wogbtr_add isnullthen 0
when t.xwbuk = '' and
( ( ( mig_source = 'C' and bstat = 'C' ) and co_osl <> 0 ) or
( ( mig_source <> 'C' or bstat <> 'C' ) and rco_ocur <> '' ) ) then co_osl
when v.field_name_wogbtr_add = 'HSL' then hsl
when v.field_name_wogbtr_add = 'OSL' then osl
when v.field_name_wogbtr_add = 'KSL' then ksl
when v.field_name_wogbtr_add = 'VSL' then vsl
when v.field_name_wogbtr_add = 'BSL' then bsl
when v.field_name_wogbtr_add = 'CSL' then csl
when v.field_name_wogbtr_add = 'DSL' then dsl
when v.field_name_wogbtr_add = 'ESL' then esl
when v.field_name_wogbtr_add = 'FSL' then fsl
when v.field_name_wogbtr_add = 'GSL' then gsl
else 0 endelse 0 endas wogper,
casewhen ryear < :akG or poper <= :akP thencasewhen v.field_name_wkgbtr_add isnullor
v.field_name_wkgbtr_add = 'KSL' then ksl
when v.field_name_wkgbtr_add = 'HSL' then hsl
when v.field_name_wkgbtr_add = 'OSL' then osl
when v.field_name_wkgbtr_add = 'VSL' then vsl
when v.field_name_wkgbtr_add = 'BSL' then bsl
when v.field_name_wkgbtr_add = 'CSL' then csl
when v.field_name_wkgbtr_add = 'DSL' then dsl
when v.field_name_wkgbtr_add = 'ESL' then esl
when v.field_name_wkgbtr_add = 'FSL' then fsl
when v.field_name_wkgbtr_add = 'GSL' then gsl
else 0 endelse 0 endas wkgbtr,
casewhen ryear = :akG and poper = :akP thencasewhen v.field_name_wkgbtr_add isnullor
v.field_name_wkgbtr_add = 'KSL' then ksl
when v.field_name_wkgbtr_add = 'HSL' then hsl
when v.field_name_wkgbtr_add = 'OSL' then osl
when v.field_name_wkgbtr_add = 'VSL' then vsl
when v.field_name_wkgbtr_add = 'BSL' then bsl
when v.field_name_wkgbtr_add = 'CSL' then csl
when v.field_name_wkgbtr_add = 'DSL' then dsl
when v.field_name_wkgbtr_add = 'ESL' then esl
when v.field_name_wkgbtr_add = 'FSL' then fsl
when v.field_name_wkgbtr_add = 'GSL' then gsl
else 0 endelse 0 endas wkgper,
casewhen ryear < :akG or poper <= :akP thencasewhen v.field_name_wkfbtr_add isnullor
v.field_name_wkfbtr_add = 'KFSL' then kfsl
when v.field_name_wkfbtr_add = 'KFSL2' then kfsl2
when v.field_name_wkfbtr_add = 'KFSL3' then kfsl3
else 0 endelse 0 endas wkfbtr,
casewhen ryear = :akG and poper = :akP thencasewhen v.field_name_wkfbtr_add isnullor
v.field_name_wkfbtr_add = 'KFSL' then kfsl
when v.field_name_wkfbtr_add = 'KFSL2' then kfsl2
when v.field_name_wkfbtr_add = 'KFSL3' then kfsl3
else 0 endelse 0 endas wkfper,
casewhen ryear < :akG or poper <= :akP thencasewhen v.field_name_pagbtr_add isnullor
v.field_name_pagbtr_add = 'PSL' then psl
when v.field_name_pagbtr_add = 'PSL2' then psl2
when v.field_name_pagbtr_add = 'PSL3' then psl3
else 0 endelse 0 endas pagbtr,
casewhen ryear = :akG and poper = :akP thencasewhen v.field_name_pagbtr_add isnullor
v.field_name_pagbtr_add = 'PSL' then psl
when v.field_name_pagbtr_add = 'PSL2' then psl2
when v.field_name_pagbtr_add = 'PSL3' then psl3
else 0 endelse 0 endas pagper,
casewhen ryear < :akG or poper <= :akP thencasewhen v.field_name_pafbtr_add isnullor
v.field_name_pafbtr_add = 'PFSL' then pfsl
when v.field_name_pafbtr_add = 'PFSL2' then pfsl2
when v.field_name_pafbtr_add = 'PFSL3' then pfsl3
else 0 endelse 0 endas pafbtr,
casewhen ryear = :akG and poper = :akP thencasewhen v.field_name_pafbtr_add isnullor
v.field_name_pafbtr_add = 'PFSL' then pfsl
when v.field_name_pafbtr_add = 'PFSL2' then pfsl2
when v.field_name_pafbtr_add = 'PFSL3' then pfsl3
else 0 endelse 0 endas pafper,
casewhen (ryear < :akG or poper <= :akP) then co_megbtr else 0 endas megbtr,
casewhen (ryear = :akG and poper = :akP) then co_megbtr else 0 endas megper,
casewhen (ryear < :akG or poper <= :akP) then co_mefbtr else 0 endas mefbtr,
casewhen (ryear = :akG and poper = :akP) then co_mefbtr else 0 endas mefper,
casewhen co_meinh = '' // see fill_bel_cos*a
thencast(0 asabap.int4) elsecasewhen (ryear < :akG or poper <= :akP) thencast(muvflg asabap.int4) elsecast(0 asabap.int4) endendas muvbtr,
casewhen co_meinh = '' // see fill_bel_cos*a
thencast(0 asabap.int4) elsecasewhen (ryear = :akG and poper = :akP) thencast(muvflg asabap.int4) elsecast(0 asabap.int4) endendas muvper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then osl else 0 endas wagbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then osl else 0 endas wagper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then vsl else 0 endas wvgbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then vsl else 0 endas wvgper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then bsl else 0 endas wbgbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then bsl else 0 endas wbgper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then csl else 0 endas wcgbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then csl else 0 endas wcgper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then dsl else 0 endas wdgbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then dsl else 0 endas wdgper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then esl else 0 endas wegbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then esl else 0 endas wegper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then fsl else 0 endas wfgbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then fsl else 0 endas wfgper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then gsl else 0 endas wggbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then gsl else 0 endas wggper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then hsl else 0 endas whgbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then hsl else 0 endas whgper,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear < :akG or poper <= :akP ) then co_osl else 0 endas wsgbtr,
casewhen ( v.field_name_wkgbtr_subtract = '' or v.field_name_wkgbtr_subtract isnull )
and ( ryear = :akG and poper = :akP ) then co_osl else 0 endas wsgper
from acdoca as a
leftouterjoin finsc_cmp_versnd as v on a.rbukrs = v.bukrs
and a.rldnr = v.rldnr
and v.field_name_wkgbtr_add <> ''
innerjoin t000 as s on s.mandt = a.rclnt
and ( s.logsys = a.logsyso
or a.logsyso = '' )
innerjoin tka01 as t on t.mandt = a.rclnt
and t.kokrs = a.kokrs
where a.accasty <> ''
;