P_RO_SAFTCustomer

DDL: P_RO_SAFTCUSTOMER SQL: PROSAFTCUSTOMER Type: view CONSUMPTION

Customer Data for RO SAFT

P_RO_SAFTCustomer is a Consumption CDS View that provides data about "Customer Data for RO SAFT" in SAP S/4HANA. It reads from 6 data sources and exposes 40 fields with key fields SourceLedger, Ledger, CompanyCode, Customer, TaxID5.

Data Sources (6)

SourceAliasJoin Type
I_Customer Customer inner
P_RO_SAFTCustomerVATNumber CustomerTaxType from
P_RO_SAFTCustomerVATNumber CustomerTaxType union_all
P_RO_SAFTOneTimeCustomer otc inner
P_RO_SAFTCustAcctBal P_RO_SAFTCustAcctBal inner
P_RO_SAFTCustAcctBal P_RO_SAFTCustAcctBal inner

Parameters (4)

NameTypeDefault
P_FromPostingDate dats
P_ToPostingDate dats
P_FiscalYear gjahr
P_AlternativeGLAccountIsUsed saft_ro_alt_gl_account_flag

Annotations (12)

NameValueLevelField
AbapCatalog.sqlViewName PROSAFTCUSTOMER view
AbapCatalog.compiler.compareFilter true view
AbapCatalog.preserveKey true view
VDM.private true view
AccessControl.authorizationCheck #MANDATORY view
AccessControl.personalData.blocking #BLOCKED_DATA_INCLUDED view
ObjectModel.usageType.serviceQuality #D view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #MASTER view
VDM.viewType #CONSUMPTION view
ClientHandling.algorithm #SESSION_VARIABLE view
EndUserText.label Customer Data for RO SAFT view

Fields (40)

KeyFieldSource TableSource FieldDescription
KEY SourceLedger Balance SourceLedger
KEY Ledger Balance Ledger
KEY CompanyCode Balance CompanyCode
KEY Customer
KEY TaxID5 P_RO_SAFTCustomerVATNumber BPTaxLongNumber
KEY RO_SAFTStandardAccount
GLAccount Balance GLAccount
BusinessPartner
CustomerName
CountryISOCode
Region Address Region
PostalCode Address PostalCode
CityName Address CityName
StreetName Address StreetName
HouseNumber Address HouseNumber
Building Address Building
StartingBalanceAmtInCoCodeCrcy
EndingBalanceAmtInCoCodeCrcy
P_FromPostingDate
P_ToPostingDate
P_FiscalYear
SourceLedger
KEY Ledger Balance Ledger
KEY CompanyCode Balance CompanyCode
KEY Customer
KEY TaxID5 P_RO_SAFTOneTimeCustomer VATRegistration
KEY RO_SAFTStandardAccount
GLAccount Balance GLAccount
BusinessPartner
CustomerName P_RO_SAFTOneTimeCustomer CustomerName
CountryISOCode P_RO_SAFTOneTimeCustomer CountryISOCode
Region P_RO_SAFTOneTimeCustomer Region
PostalCode P_RO_SAFTOneTimeCustomer PostalCode
CityName P_RO_SAFTOneTimeCustomer CityName
StreetName P_RO_SAFTOneTimeCustomer StreetName
HouseNumber
Building
StartingBalanceAmtInCoCodeCrcy
EndingBalanceAmtInCoCodeCrcy
CompanyCodeCurrency Balance CompanyCodeCurrency
@AbapCatalog.sqlViewName: 'PROSAFTCUSTOMER'
@AbapCatalog.compiler.compareFilter: true
@AbapCatalog.preserveKey: true
@VDM.private:true
@AccessControl.authorizationCheck: #MANDATORY
@AccessControl.personalData.blocking: #BLOCKED_DATA_INCLUDED
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #MASTER
@VDM.viewType: #CONSUMPTION
@ClientHandling.algorithm: #SESSION_VARIABLE
@EndUserText.label: 'Customer Data for RO SAFT'
define view P_RO_SAFTCustomer
  with parameters
    P_FromPostingDate            : dats,
    P_ToPostingDate              : dats,
    P_FiscalYear                 : gjahr,
    P_AlternativeGLAccountIsUsed : saft_ro_alt_gl_account_flag
  as select from           P_RO_SAFTCustomerVATNumber as CustomerTaxType

    inner join             P_RO_SAFTCustAcctBal(
                                         P_FromPostingDate: $parameters.P_FromPostingDate,
                                         P_ToPostingDate: $parameters.P_ToPostingDate,
                                         P_FiscalYear: $parameters.P_FiscalYear,
                                         P_AlternativeGLAccountIsUsed: $parameters.P_AlternativeGLAccountIsUsed
                                       )              as Balance  on  Balance.Customer   = CustomerTaxType.Customer
                                                                   and Balance.FiscalYear = $parameters.P_FiscalYear

    inner join             I_Customer                 as Customer on Customer.Customer = CustomerTaxType.Customer

    left outer to one join I_Address_2                 as Address  on  Customer.AddressID                = Address.AddressID
                                                                   and Address.AddressRepresentationCode is initial
                                                                   and Address.AddressPersonID           is initial

    left outer to one join I_RO_SAFTAccountMapping     as Account  on  Account.ChartOfAccounts = Balance.ActiveChartOfAccounts
                                                                   and Account.GLAccount       = Balance.ActiveGLAccount

{
  key Balance.SourceLedger,
  key Balance.Ledger,
  key Balance.CompanyCode,
  key max(Balance.Customer)                                                            as Customer,
  key CustomerTaxType.BPTaxLongNumber                                                  as TaxID5,
  key coalesce(Account.RO_SAFTStandardAccount, Balance.ActiveGLAccount)                as RO_SAFTStandardAccount,
      Balance.GLAccount,
      max(Customer._CustomerToBusinessPartner._BusinessPartner.BusinessPartner)        as BusinessPartner,
      concat_with_space(Address.OrganizationName1, concat_with_space(Address.OrganizationName2, concat_with_space(Address.OrganizationName3, Address.OrganizationName4, 1), 1), 1) as CustomerName,
      cast( Address._Country.CountryISOCode as land1 )                                 as CountryISOCode,
      Address.Region,
      Address.PostalCode,
      Address.CityName,
      Address.StreetName,
      Address.HouseNumber,
      Address.Building,

      sum(Balance.StartingBalanceAmtInCoCodeCrcy)                                      as StartingBalanceAmtInCoCodeCrcy,
      sum(Balance.EndingBalanceAmtInCoCodeCrcy)                                        as EndingBalanceAmtInCoCodeCrcy,
      @Semantics.currencyCode:true
      Balance.CompanyCodeCurrency
}
where
       CustomerTaxType.BPTaxLongNumber        <> 'EXCLUDE'
  and  CustomerTaxType.BPTaxLongNumber        <> '0'
  and(
       Balance.StartingBalanceAmtInCoCodeCrcy        <> 0
    or Balance.NumberOfItems                         >  0
  )
group by
  Balance.SourceLedger,
  Balance.Ledger,
  Balance.CompanyCode,
  CustomerTaxType.BPTaxLongNumber,
  Balance.ActiveGLAccount,
  Account.RO_SAFTStandardAccount,
  Balance.GLAccount,
  Address.OrganizationName1,
  Address.OrganizationName2,
  Address.OrganizationName3,
  Address.OrganizationName4,
  Address._Country.CountryISOCode,
  Address.Region,
  Address.PostalCode,
  Address.CityName,
  Address.StreetName,
  Address.HouseNumber,
  Address.Building,
  Balance.CompanyCodeCurrency

union all select from    P_RO_SAFTCustomerVATNumber as CustomerTaxType

  inner join             P_RO_SAFTOneTimeCustomer   as otc     on otc.Customer = CustomerTaxType.Customer

  inner join             P_RO_SAFTCustAcctBal(
                                       P_FromPostingDate: $parameters.P_FromPostingDate,
                                       P_ToPostingDate: $parameters.P_ToPostingDate,
                                       P_FiscalYear: $parameters.P_FiscalYear,
                                       P_AlternativeGLAccountIsUsed: $parameters.P_AlternativeGLAccountIsUsed
                                     )               as Balance on  Balance.CompanyCode     = otc.CompanyCode
                                                                and Balance.Customer        = otc.Customer
                                                                and Balance.VATRegistration = otc.VATRegistration
                                                                and Balance.FiscalYear      = $parameters.P_FiscalYear


  left outer to one join I_RO_SAFTAccountMapping     as Account on  Account.ChartOfAccounts = Balance.ActiveChartOfAccounts
                                                                and Account.GLAccount       = Balance.ActiveGLAccount

{
  key Balance.SourceLedger,
  key Balance.Ledger,
  key Balance.CompanyCode,
  key max(Balance.Customer)                                             as Customer,
  key otc.VATRegistration                                               as TaxID5,
  key coalesce(Account.RO_SAFTStandardAccount, Balance.ActiveGLAccount) as RO_SAFTStandardAccount,
      Balance.GLAccount,
      ''                                                                as BusinessPartner,
      otc.CustomerName,
      otc.CountryISOCode,
      otc.Region,
      otc.PostalCode,
      otc.CityName,
      otc.StreetName,
      ''                                                                as HouseNumber,
      ''                                                                as Building,

      sum(Balance.StartingBalanceAmtInCoCodeCrcy)                       as StartingBalanceAmtInCoCodeCrcy,
      sum(Balance.EndingBalanceAmtInCoCodeCrcy)                         as EndingBalanceAmtInCoCodeCrcy,
      @Semantics.currencyCode:true
      Balance.CompanyCodeCurrency
}
where
       CustomerTaxType.BPTaxLongNumber        =  '0'
  and(
       Balance.StartingBalanceAmtInCoCodeCrcy        <> 0
    or Balance.NumberOfItems                         >  0
  )
group by
  Balance.SourceLedger,
  Balance.Ledger,
  Balance.CompanyCode,
  otc.VATRegistration,
  Balance.ActiveGLAccount,
  Account.RO_SAFTStandardAccount,
  Balance.GLAccount,
  otc.CustomerName,
  otc.CountryISOCode,
  otc.Region,
  otc.PostalCode,
  otc.CityName,
  otc.StreetName,
  Balance.CompanyCodeCurrency