P_Trrsochartbase

DDL: P_TRRSOCHARTBASE Type: view_entity COMPOSITE Package: FINS_REV_REC_UI_SO

Base View TRR for SalOrd.Chart

P_Trrsochartbase is a Composite CDS View that provides data about "Base View TRR for SalOrd.Chart" in SAP S/4HANA. It reads from 7 data sources and exposes 16 fields with key fields SalesOrder, SalesOrderItem, Ledger, CompanyCode, FiscalYear. Part of development package FINS_REV_REC_UI_SO.

Data Sources (7)

SourceAliasJoin Type
I_EvtBsdRevnRecgnEvalScp evalscp inner
I_EvtBsdRevnRecgnObjLifeCycle lifecyc inner
I_GLAccountLineItem semtag from
I_SemTagGLAccount semTagGl inner
tkkaa tkkaa inner
vbak vbak inner
vbap vbap inner

Annotations (6)

NameValueLevelField
VDM.viewType #COMPOSITE view
VDM.private true view
AccessControl.authorizationCheck #NOT_REQUIRED view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #L view
ObjectModel.usageType.dataClass #MIXED view

Fields (16)

KeyFieldSource TableSource FieldDescription
KEY SalesOrder vbap vbeln
KEY SalesOrderItem vbap posnr
KEY Ledger I_GLAccountLineItem Ledger
KEY CompanyCode I_GLAccountLineItem CompanyCode
KEY FiscalYear I_GLAccountLineItem FiscalYear
KEY FiscalPeriod I_GLAccountLineItem FiscalPeriod
FiscalYearPeriod I_GLAccountLineItem FiscalYearPeriod
ResultAnalysisInternalID
SalesOrganization vbak vkorg
CompanyCodeCurrency I_GLAccountLineItem CompanyCodeCurrency
SalesOrderItemText
PostingFiscalPeriod
PostingDate I_EvtBsdRevnRecgnObjLifeCycle PostingDate
_Ledger I_GLAccountLineItem _Ledger
_CompanyCode I_GLAccountLineItem _CompanyCode
_CompanyCodeCurrency I_GLAccountLineItem _CompanyCodeCurrency
@VDM.viewType: #COMPOSITE
@VDM.private:true
@AccessControl.authorizationCheck: #NOT_REQUIRED

@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MIXED
define view entity P_Trrsochartbase
  as

  select from  I_GLAccountLineItem           as semtag
    inner join I_SemTagGLAccount             as semTagGl on  semTagGl.GLAccount       = semtag.GLAccount
                                                         and semTagGl.ChartOfAccounts = semtag.ChartOfAccounts

    inner join vbak                          as vbak     on vbak.vbeln = semtag.SalesOrder

    inner join vbap                          as vbap     on  vbap.vbeln = semtag.SalesOrder
                                                         and vbap.posnr = semtag.SalesOrderItem

    inner join I_EvtBsdRevnRecgnEvalScp      as evalscp  on  evalscp.CompanyCode = semtag.CompanyCode
                                                         and evalscp.Ledger      = semtag.Ledger

    inner join I_EvtBsdRevnRecgnObjLifeCycle as lifecyc  on  lifecyc.Ledger            = semtag.Ledger
                                                         and lifecyc.CompanyCode       = semtag.CompanyCode
                                                         and lifecyc.SalesDocument     = vbap.vbeln
                                                         and lifecyc.SalesDocumentItem = vbap.posnr

    inner join tkkaa                         as tkkaa    on tkkaa.abgsl = vbap.abgrs
{
  key vbap.vbeln                                                                        as SalesOrder,
  key vbap.posnr                                                                        as SalesOrderItem,
  key semtag.Ledger                                                                     as Ledger,
  key semtag.CompanyCode                                                                as CompanyCode,
  key semtag.FiscalYear                                                                 as FiscalYear,
  key semtag.FiscalPeriod                                                               as FiscalPeriod,
      semtag.FiscalYearPeriod                                                           as FiscalYearPeriod,
      cast ( vbap.abgrs as fins_trr_recgnkey )                                          as ResultAnalysisInternalID,
      vbak.vkorg                                                                        as SalesOrganization,
      semtag.CompanyCodeCurrency                                                        as CompanyCodeCurrency,
      cast ( vbap.arktx as fins_trr_salesord_itm_text )                                 as SalesOrderItemText,
      cast ( lifecyc.PostingFiscalPeriod as fis_jahrper_conv preserving type )          as PostingFiscalPeriod,
      lifecyc.PostingDate                                                               as PostingDate,
      
      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
          case when semtag.BusinessTransactionType <> 'TBRR' and semTagGl.SemanticTag = 'ACT_COST'
               then cast (semtag.AmountInCompanyCodeCurrency * (-1) as fins_trr_actcost)
               else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_actcost) end )  as RecognizableCostAmtInCCCrcy,
      
      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
          case when semtag.BusinessTransactionType <> 'TBRR' and semTagGl.SemanticTag = 'BILL_REV'
               then cast (semtag.AmountInCompanyCodeCurrency * (-1) as fins_trr_actrevn)
               else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_actrevn) end )  as RecognizableRevenueAmtInCCCrcy,
      
      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'ADJ_REV'
         then cast (semtag.AmountInCompanyCodeCurrency * (-1) as fins_trr_revnadjust )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_revnadjust ) end )    as RevenueAdjustmentAmtInCCCrcy,
      
      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'ADJ_COS'
         then cast (semtag.AmountInCompanyCodeCurrency * (-1) as   fins_trr_cogsadj  )
         else cast ( cast ('0' as abap.curr( 23,2))   as   fins_trr_cogsadj  ) end )    as COGSAdjustmentAmtInCCCrcy,
      
      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'DEF_COST'
         then cast (semtag.AmountInCompanyCodeCurrency as fins_trr_defcogs)
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_defcogs) end )        as DeferredCOGSAmtInCCCrcy,
      
      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'DEF_REV'
         then cast (semtag.AmountInCompanyCodeCurrency as fins_trr_defrevn )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_defrevn ) end )       as DeferredRevenueAmtInCCCrcy,
      
      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'ACR_REV'
         then cast (semtag.AmountInCompanyCodeCurrency as fins_trr_accrevn )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_accrevn ) end )       as AccruedRevenueAmtInCCCrcy,

      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'ACR_COST'
         then cast (semtag.AmountInCompanyCodeCurrency as fins_trr_acccogs )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_acccogs ) end )       as AccruedCOGSAmtInCCCrcy,

      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
       case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'RES_MIL'
          then cast (semtag.AmountInCompanyCodeCurrency as fins_trr_resimmloss )
          else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_resimmloss ) end )   as ImminentLossRsrvAmtInCCCrcy,

      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'RES_MASD'
         then cast (semtag.AmountInCompanyCodeCurrency as fins_trr_ressalesded )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_ressalesded ) end )   as SalesDeductReserveAmtInCCCrcy,

      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semtag.BusinessTransactionType = 'TBRR' and semTagGl.SemanticTag = 'RES_MUC'
         then cast (semtag.AmountInCompanyCodeCurrency as fins_trr_unrealcosts   )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_unrealcosts   ) end ) as UnrlzdCostsReserveAmtInCCCrcy,


      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
          case when semTagGl.SemanticTag = 'RECO_COS'
               then cast (semtag.AmountInCompanyCodeCurrency * (-1) as fins_trr_reccogs )
               else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_reccogs ) end ) as RecognizedCOGSAmtInCCCrcy,

      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semTagGl.SemanticTag = 'RECO_REV'
         then cast (semtag.AmountInCompanyCodeCurrency * (-1) as fins_trr_recrevn )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_recrevn ) end )       as RecognizedRevnAmtInCCCrcy,

      @Semantics: { amount : {currencyCode: 'CompanyCodeCurrency'} }
      sum(
      case when semTagGl.SemanticTag = 'REC_MARGIN'
         then cast (semtag.AmountInCompanyCodeCurrency * (-1) as fins_trr_recmargin )
         else cast ( cast ('0' as abap.curr( 23,2))   as fins_trr_recmargin ) end )     as RecognizedMarginAmtInCCCrcy,

      semtag._Ledger,
      semtag._CompanyCode,
      semtag._CompanyCodeCurrency
}
where
  (
       semtag.AccountAssignmentType =  'OR'
    or semtag.AccountAssignmentType =  'EO'
  )
  and  semTagGl.GLAccountHierarchy  =  evalscp.GLAccountHierarchy
  and  semTagGl.ValidityStartDate   <= $session.system_date
  and  semTagGl.ValidityEndDate     >= $session.system_date
  and  semtag.FiscalPeriod          <> '000'
  and  vbap.abgrs                   <> ' '
  and  tkkaa.rflg1                  =  'X'
  and(
       vbak.vbtyp                   =  'C'
    or vbak.vbtyp                   =  'H'
  )
  and(
       vbap.pstyv                   =  'TAN'
    or vbap.pstyv                   =  'TANN'
    or vbap.pstyv                   =  'CBEN'
    //  or vbap.pstyv                   =  'RENV'

    or vbap.pstyv                   =  'CBTC'
    or vbap.pstyv                   =  'TAD'
    or vbap.pstyv                   =  'CB1'
    or vbap.pstyv                   =  'CB2'
    or vbap.pstyv                   =  'TAQ'
    or vbap.pstyv                   =  'CBXN'
    or vbap.pstyv                   =  'CBTA'
    or vbap.pstyv                   =  'TAX'
  )
  and(
       vbap.fkrel                   =  'A'
    or vbap.fkrel                   =  'B'
    or vbap.fkrel                   =  'F'
    or vbap.fkrel                   =  'K'
  )
  and(
       vbap.kzvbr                   =  ' '
    or vbap.kzvbr                   =  'V'
  )

group by
  vbap.vbeln,
  vbap.posnr,
  vbap.abgrs,
  vbap.arktx,
  vbak.vkorg,
  semtag.CompanyCode,
  semtag.CompanyCodeCurrency,
  semtag.Ledger,
  lifecyc.PostingFiscalPeriod,
  lifecyc.PostingDate,
  semtag.FiscalYear,
  semtag.FiscalPeriod,
  semtag.FiscalYearPeriod