P_RO_SAFTCustomer
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)
| Source | Alias | Join 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)
| Name | Type | Default |
|---|---|---|
| P_FromPostingDate | dats | |
| P_ToPostingDate | dats | |
| P_FiscalYear | gjahr | |
| P_AlternativeGLAccountIsUsed | saft_ro_alt_gl_account_flag |
Annotations (12)
| Name | Value | Level | Field |
|---|---|---|---|
| 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)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| 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
Learn More
- What Is a CDS View in SAP S/4HANA?
- Types of CDS Views: Basic, Composite, Consumption, and Transactional
- SAP Tables vs CDS Views — Key Differences
- Understanding Data Lineage in SAP S/4HANA
- VDM (Virtual Data Model) in SAP S/4HANA Explained
- CDS View Annotations — A Complete Guide
- CDS View Field Mapping and Associations
- Understanding the SAP S/4HANA Data Model
- CDS View Extensions and Custom Fields in SAP S/4HANA
- Released APIs and Stability Contracts in SAP S/4HANA