I_InsurancePolicyCoverage
Coverage of Cvrg Package in Insur Plcy
I_InsurancePolicyCoverage is a Composite CDS View that provides data about "Coverage of Cvrg Package in Insur Plcy" in SAP S/4HANA. It reads from 4 data sources (I_InsurPlcyCoverageBasic, I_InsuranceContract, I_InsurPlcyRegPremConfig, R_InsurancePolicyPremium) and exposes 63 fields with key fields InsurPlcyUUID, InsurPlcyInsurContr, InsurPlcyCoveragePackageID, InsurPlcyCoverageID. It has 18 associations to related views.
Data Sources (4)
| Source | Alias | Join Type |
|---|---|---|
| I_InsurPlcyCoverageBasic | Coverage | from |
| I_InsuranceContract | InsuranceContractTmpl | inner |
| I_InsurPlcyRegPremConfig | PremiumConfig | inner |
| R_InsurancePolicyPremium | RegularPremium | inner |
Associations (18)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1..1] | I_Currency | _PremiumCurrency | $projection.InsurPlcyPremiumCurrency = _PremiumCurrency.Currency |
| [1..1] | I_Currency | _CoverageCurrency | $projection.InsurPlcyCoverageCurrency = _CoverageCurrency.Currency |
| [1..1] | I_InsurContrCanclnReason | _InsurContrCanclnReason | $projection.InsurContrCanclnRsn = _InsurContrCanclnReason.InsurContrCanclnRsn |
| [1..1] | I_InsurPlcyCvrgLifeCycSts | _InsurPlcyCvrgLifeCycSts | $projection.InsurPlcyCvrgLifeCycleStatus = _InsurPlcyCvrgLifeCycSts.InsurPlcyCvrgLifeCycleStatus |
| [1..1] | I_InsurPlcyCvrgInsrdSumCalc | _InsurPlcyCvrgInsrdSumCalc | $projection.InsurPlcyCvrgInsrdSumCalcMeth = _InsurPlcyCvrgInsrdSumCalc.InsurPlcyCvrgInsrdSumCalcMeth |
| [1..1] | I_InsurPlcyCvrgSuspension | _InsurPlcyCvrgSuspension | $projection.InsurPlcyCoverageSuspension = _InsurPlcyCvrgSuspension.InsurPlcyCoverageSuspension |
| [1..*] | I_InsurPlcyTemplateT | _InsurPlcyTemplateT | $projection.InsurPlcyElementaryProdTmpl = _InsurPlcyTemplateT.InsurPlcyTemplate |
| [1..1] | I_InsurPlcyCvrgPremExmpRsnLink | _InsurPlcyCvrgPremExmpRsn | $projection.InsurPlcyCvrgPremExmpReason = _InsurPlcyCvrgPremExmpRsn.InsurPlcyCvrgPremExmpReason and $projection.InsurPlcyElementaryProdTmpl = _InsurPlcyCvrgPremExmpRsn.InsurancePolicyCoverageControl |
| [0..*] | I_InsurPlcyCvrgSurchrgDiscount | _InsurPlcyCvrgSurchrgDiscount | |
| [0..*] | I_InsurancePolicyCvrgLimit | _InsurancePolicyCvrgLimit | |
| [0..*] | I_InsurancePolicyCvrgClause | _InsurancePolicyCvrgClause | |
| [0..*] | I_InsurPolicyCvrgDeductible | _InsurPolicyCvrgDeductible | |
| [0..*] | I_InsurancePolicyInsuredObject | _InsurancePolicyInsuredObject | |
| [0..*] | I_InsurPlcySubCoverage | _InsurPlcySubCoverage | |
| [0..*] | I_InsurPlcyCvrgTypeRegionalCl | _InsurPlcyCvrgTypeRegionalCl | |
| [0..*] | I_InsurPlcyCvrgPremComparison | _InsurPlcyCvrgPremComparison | |
| [0..*] | I_InsurCvrgPlannedProcessing | _InsurCvrgPlndProcessing | |
| [0..*] | I_InsurPlcyCoverageBonusMalus | _InsurPlcyCoverageBonusMalus | |
Annotations (11)
| Name | Value | Level | Field |
|---|---|---|---|
| EndUserText.label | Coverage of Cvrg Package in Insur Plcy | view | |
| VDM.viewType | #COMPOSITE | view | |
| VDM.lifecycle.contract.type | #PUBLIC_LOCAL_API | view | |
| AccessControl.authorizationCheck | #PRIVILEGED_ONLY | view | |
| ObjectModel.representativeKey | InsurPlcyCoverageID | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| ObjectModel.usageType.serviceQuality | #C | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| Metadata.allowExtensions | false | view | |
| Metadata.ignorePropagatedAnnotations | false | view | |
| Analytics.technicalName | IPPlcyCvrg | view |
Fields (63)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | InsurPlcyUUID | I_InsurPlcyCoverageBasic | InsurPlcyUUID | |
| KEY | InsurPlcyInsurContr | I_InsurPlcyCoverageBasic | InsurPlcyInsurContr | |
| KEY | InsurPlcyCoveragePackageID | I_InsurPlcyCoverageBasic | InsurPlcyCoveragePackageID | |
| KEY | InsurPlcyCoverageID | I_InsurPlcyCoverageBasic | InsurPlcyCoverageID | |
| InsurPlcyJrnlNmbr | I_InsurPlcyCoverageBasic | InsurPlcyJrnlNmbr | ||
| InsurPlcyJrnlEndNmbr | I_InsurPlcyCoverageBasic | InsurPlcyJrnlEndNmbr | ||
| InsurPlcyProductPackageID | I_InsurPlcyCoverageBasic | InsurPlcyProductPackageID | ||
| InsurPlcyInsuranceCoverage | I_InsurPlcyCoverageBasic | InsurPlcyInsuranceCoverage | ||
| InsurPlcyElementaryProdTmpl | I_InsurPlcyCoverageBasic | InsurPlcyElementaryProdTmpl | ||
| InsurPlcyCoverageStartDateTime | I_InsurPlcyCoverageBasic | InsurPlcyCoverageStartDateTime | ||
| InsurPlcyCoverageEndDateTime | I_InsurPlcyCoverageBasic | InsurPlcyCoverageEndDateTime | ||
| InsurPlcyCvrgPremExmpReason | I_InsurPlcyCoverageBasic | InsurPlcyCvrgPremExmpReason | ||
| InsurPlcyCvrgLifeCycleStatus | I_InsurPlcyCoverageBasic | InsurPlcyCvrgLifeCycleStatus | ||
| InsurContrCanclnRsn | I_InsurPlcyCoverageBasic | InsurContrCanclnRsn | ||
| InsurPlcyCvrgCanclnDateTime | I_InsurPlcyCoverageBasic | InsurPlcyCvrgCanclnDateTime | ||
| InsurPlcyCoverageSuspension | I_InsurPlcyCoverageBasic | InsurPlcyCoverageSuspension | ||
| InsurPlcyCvrgSuspnStrtDateTime | I_InsurPlcyCoverageBasic | InsurPlcyCvrgSuspnStrtDateTime | ||
| InsurPlcyCvrgSuspnEndDateTime | I_InsurPlcyCoverageBasic | InsurPlcyCvrgSuspnEndDateTime | ||
| InsurPlcyCvrgInsuredSumAmount | I_InsurPlcyCoverageBasic | InsurPlcyCvrgInsuredSumAmount | ||
| InsurPlcyCvrgInsrdSumCalcMeth | I_InsurPlcyCoverageBasic | InsurPlcyCvrgInsrdSumCalcMeth | ||
| InsurPlcyCvrgInsuredSumPercent | I_InsurPlcyCoverageBasic | InsurPlcyCvrgInsuredSumPercent | ||
| InsurPlcyCoverageCurrency | I_InsurPlcyCoverageBasic | InsurPlcyCoverageCurrency | ||
| InsurPlcyBonusRestorerType | I_InsurPlcyCoverageBasic | InsurPlcyBonusRestorerType | ||
| InsurPlcyVehDeregistrationDate | I_InsurPlcyCoverageBasic | InsurPlcyVehDeregistrationDate | ||
| InsurPlcyBonusMalusIsNotCeded | I_InsurPlcyCoverageBasic | InsurPlcyBonusMalusIsNotCeded | ||
| InsurPlcyInsurEndMsgSendDate | I_InsurPlcyCoverageBasic | InsurPlcyInsurEndMsgSendDate | ||
| InsurPlcySubcoverageVariant | I_InsurPlcyCoverageBasic | InsurPlcySubcoverageVariant | ||
| InsurPlcyVehInsurCoverEndDate | I_InsurPlcyCoverageBasic | InsurPlcyVehInsurCoverEndDate | ||
| InsurPlcyNrOfVehClaimsRestored | I_InsurPlcyCoverageBasic | InsurPlcyNrOfVehClaimsRestored | ||
| InsurPlcyCrteInsurEndMessage | I_InsurPlcyCoverageBasic | InsurPlcyCrteInsurEndMessage | ||
| InsurPlcyDiscProtIsActive | I_InsurPlcyCoverageBasic | InsurPlcyDiscProtIsActive | ||
| LastChangeDateTime | I_InsurPlcyCoverageBasic | LastChangeDateTime | ||
| InsurancePolicyPremium | R_InsurancePolicyPremium | InsurancePolicyPremium | ||
| InsurPlcyPremiumJournalNumber | R_InsurancePolicyPremium | InsurPlcyJrnlNmbr | ||
| InsurPlcyPremJournalEndNumber | R_InsurancePolicyPremium | InsurPlcyJrnlEndNmbr | ||
| InsurPerdPremBfrTaxPaytAmt | R_InsurancePolicyPremium | InsurPerdPremBfrTaxPaytAmt | ||
| InsurPerdPremAftTaxPaytAmt | R_InsurancePolicyPremium | InsurPerdPremAftTaxPaytAmt | ||
| InsurPremType | R_InsurancePolicyPremium | InsurPremType | ||
| InsurPlcyCvrgIsPremiumExempt | R_InsurancePolicyPremium | InsurPlcyCvrgIsPremiumExempt | ||
| InsurPlcyCvrgPremExmpEndDate | R_InsurancePolicyPremium | InsurPlcyCvrgPremExmpEndDate | ||
| InsurPlcyPremiumCurrency | R_InsurancePolicyPremium | InsurPlcyPremiumCurrency | ||
| InsurPlcyTotAnnPremAmt | R_InsurancePolicyPremium | InsurPlcyTotAnnPremAmt | ||
| InsurPlcyPerdPremBfrTxPaytAmt | R_InsurancePolicyPremium | InsurPlcyPerdPremBfrTxPaytAmt | ||
| InsurPlcyPremiumTemplate | R_InsurancePolicyPremium | InsurPlcyPremiumTemplate | ||
| _InsurPlcyCoveragePackage | _InsurPlcyCoveragePackage | |||
| _InsurPlcyCvrgSurchrgDiscount | _InsurPlcyCvrgSurchrgDiscount | |||
| _InsurancePolicyCvrgLimit | _InsurancePolicyCvrgLimit | |||
| _InsurancePolicyCvrgClause | _InsurancePolicyCvrgClause | |||
| _InsurPlcyCvrgTypeRegionalCl | _InsurPlcyCvrgTypeRegionalCl | |||
| _InsurPlcyCvrgPremComparison | _InsurPlcyCvrgPremComparison | |||
| _InsurPolicyCvrgDeductible | _InsurPolicyCvrgDeductible | |||
| _InsurancePolicyInsuredObject | _InsurancePolicyInsuredObject | |||
| _InsurPlcySubCoverage | _InsurPlcySubCoverage | |||
| _InsurCvrgPlndProcessing | _InsurCvrgPlndProcessing | |||
| _InsurPlcyCoverageBonusMalus | _InsurPlcyCoverageBonusMalus | |||
| _InsurPlcyTemplateT | _InsurPlcyTemplateT | |||
| _InsurContrCanclnReason | _InsurContrCanclnReason | |||
| _InsurPlcyCvrgLifeCycSts | _InsurPlcyCvrgLifeCycSts | |||
| _InsurPlcyCvrgSuspension | _InsurPlcyCvrgSuspension | |||
| _InsurPlcyCvrgInsrdSumCalc | _InsurPlcyCvrgInsrdSumCalc | |||
| _CoverageCurrency | _CoverageCurrency | |||
| _PremiumCurrency | _PremiumCurrency | |||
| _InsurPlcyCvrgPremExmpRsn | _InsurPlcyCvrgPremExmpRsn |
@EndUserText.label: 'Coverage of Cvrg Package in Insur Plcy'
@VDM: {
viewType:#COMPOSITE,
lifecycle.contract.type:#PUBLIC_LOCAL_API
}
@AccessControl: {
authorizationCheck: #PRIVILEGED_ONLY,
personalData.blocking: #('TRANSACTIONAL_DATA'),
privilegedAssociations: [ '_InsurPlcyCvrgSurchrgDiscount',
'_InsurancePolicyCvrgLimit',
'_InsurancePolicyCvrgClause',
'_InsurPolicyCvrgDeductible',
'_InsurancePolicyInsuredObject',
'_InsurPlcySubCoverage',
'_InsurPlcyCvrgTypeRegionalCl',
'_InsurPlcyCvrgPremComparison',
'_InsurCvrgPlndProcessing']
}
@ObjectModel: {
representativeKey: 'InsurPlcyCoverageID',
semanticKey: [ 'InsurPlcyInsuranceCoverage' ],
usageType: {
dataClass: #TRANSACTIONAL,
serviceQuality: #C,
sizeCategory: #XL
},
supportedCapabilities: [ #CDS_MODELING_DATA_SOURCE ]
}
@Metadata: {
allowExtensions:false,
ignorePropagatedAnnotations:false
}
@Analytics: {
technicalName: 'IPPlcyCvrg'
}
define view entity I_InsurancePolicyCoverage
as select from I_InsurPlcyCoverageBasic as Coverage
// Join to Regular Premium on Coveragelevel
inner join R_InsurancePolicyPremium as RegularPremium on RegularPremium.InsurPlcyUUID = Coverage.InsurPlcyUUID
and RegularPremium.InsurPlcyInsurContr = Coverage.InsurPlcyInsurContr
and RegularPremium.InsurPlcyCoveragePackageID = Coverage.InsurPlcyCoveragePackageID
and RegularPremium.InsurPlcyCoverageID = Coverage.InsurPlcyCoverageID
// Get Template of Contract
inner join I_InsuranceContract as InsuranceContractTmpl on Coverage.InsurPlcyUUID = InsuranceContractTmpl.InsurPlcyUUID
and Coverage.InsurPlcyInsurContr = InsuranceContractTmpl.InsurPlcyInsurContr
// Filter Premium Objects
inner join I_InsurPlcyRegPremConfig as PremiumConfig on PremiumConfig.InsurPlcyProductTemplate = InsuranceContractTmpl.InsurPlcyProductTemplate
and PremiumConfig.InsurPremType = RegularPremium.InsurPremType
association to parent I_InsurPlcyCoveragePackage as _InsurPlcyCoveragePackage on $projection.InsurPlcyUUID = _InsurPlcyCoveragePackage.InsurPlcyUUID
and $projection.InsurPlcyInsurContr = _InsurPlcyCoveragePackage.InsurPlcyInsurContr
and $projection.InsurPlcyCoveragePackageID = _InsurPlcyCoveragePackage.InsurPlcyCoveragePackageID
composition [0..*] of I_InsurPlcyCvrgSurchrgDiscount as _InsurPlcyCvrgSurchrgDiscount
composition [0..*] of I_InsurancePolicyCvrgLimit as _InsurancePolicyCvrgLimit
composition [0..*] of I_InsurancePolicyCvrgClause as _InsurancePolicyCvrgClause
composition [0..*] of I_InsurPolicyCvrgDeductible as _InsurPolicyCvrgDeductible
composition [0..*] of I_InsurancePolicyInsuredObject as _InsurancePolicyInsuredObject
composition [0..*] of I_InsurPlcySubCoverage as _InsurPlcySubCoverage
composition [0..*] of I_InsurPlcyCvrgTypeRegionalCl as _InsurPlcyCvrgTypeRegionalCl
composition [0..*] of I_InsurPlcyCvrgPremComparison as _InsurPlcyCvrgPremComparison
composition [0..*] of I_InsurCvrgPlannedProcessing as _InsurCvrgPlndProcessing
composition [0..*] of I_InsurPlcyCoverageBonusMalus as _InsurPlcyCoverageBonusMalus
association [1..1] to I_Currency as _PremiumCurrency on $projection.InsurPlcyPremiumCurrency = _PremiumCurrency.Currency
association [1..1] to I_Currency as _CoverageCurrency on $projection.InsurPlcyCoverageCurrency = _CoverageCurrency.Currency
association [1..1] to I_InsurContrCanclnReason as _InsurContrCanclnReason on $projection.InsurContrCanclnRsn = _InsurContrCanclnReason.InsurContrCanclnRsn
association [1..1] to I_InsurPlcyCvrgLifeCycSts as _InsurPlcyCvrgLifeCycSts on $projection.InsurPlcyCvrgLifeCycleStatus = _InsurPlcyCvrgLifeCycSts.InsurPlcyCvrgLifeCycleStatus
association [1..1] to I_InsurPlcyCvrgInsrdSumCalc as _InsurPlcyCvrgInsrdSumCalc on $projection.InsurPlcyCvrgInsrdSumCalcMeth = _InsurPlcyCvrgInsrdSumCalc.InsurPlcyCvrgInsrdSumCalcMeth
association [1..1] to I_InsurPlcyCvrgSuspension as _InsurPlcyCvrgSuspension on $projection.InsurPlcyCoverageSuspension = _InsurPlcyCvrgSuspension.InsurPlcyCoverageSuspension
association [1..*] to I_InsurPlcyTemplateT as _InsurPlcyTemplateT on $projection.InsurPlcyElementaryProdTmpl = _InsurPlcyTemplateT.InsurPlcyTemplate
association [1..1] to I_InsurPlcyCvrgPremExmpRsnLink as _InsurPlcyCvrgPremExmpRsn on $projection.InsurPlcyCvrgPremExmpReason = _InsurPlcyCvrgPremExmpRsn.InsurPlcyCvrgPremExmpReason
and $projection.InsurPlcyElementaryProdTmpl = _InsurPlcyCvrgPremExmpRsn.InsurancePolicyCoverageControl
{
key Coverage.InsurPlcyUUID,
key Coverage.InsurPlcyInsurContr,
key Coverage.InsurPlcyCoveragePackageID,
key Coverage.InsurPlcyCoverageID,
Coverage.InsurPlcyJrnlNmbr,
Coverage.InsurPlcyJrnlEndNmbr,
@Consumption.hidden: true
Coverage.InsurPlcyProductPackageID,
Coverage.InsurPlcyInsuranceCoverage,
@ObjectModel.text.association: '_InsurPlcyTemplateT'
Coverage.InsurPlcyElementaryProdTmpl,
@Semantics.dateTime:true
Coverage.InsurPlcyCoverageStartDateTime,
@Semantics.dateTime:true
Coverage.InsurPlcyCoverageEndDateTime,
@ObjectModel.foreignKey.association: '_InsurPlcyCvrgPremExmpRsn'
@ObjectModel.sapObjectNodeTypeReference: 'InsurPlcyCvrgPremExmpReason'
Coverage.InsurPlcyCvrgPremExmpReason,
@ObjectModel.foreignKey.association: '_InsurPlcyCvrgLifeCycSts'
@ObjectModel.sapObjectNodeTypeReference: 'InsurPlcyCvrgLifeCycleStatus'
Coverage.InsurPlcyCvrgLifeCycleStatus,
@ObjectModel.foreignKey.association: '_InsurContrCanclnReason'
@ObjectModel.sapObjectNodeTypeReference: 'InsurContrCancellationReason'
Coverage.InsurContrCanclnRsn,
@Semantics.dateTime:true
Coverage.InsurPlcyCvrgCanclnDateTime,
@ObjectModel.foreignKey.association: '_InsurPlcyCvrgSuspension'
@ObjectModel.sapObjectNodeTypeReference: 'InsurPolicyCoverageSuspension'
Coverage.InsurPlcyCoverageSuspension,
@Semantics.dateTime:true
Coverage.InsurPlcyCvrgSuspnStrtDateTime,
@Semantics.dateTime:true
Coverage.InsurPlcyCvrgSuspnEndDateTime,
@Semantics.amount.currencyCode: 'InsurPlcyCoverageCurrency'
Coverage.InsurPlcyCvrgInsuredSumAmount,
@ObjectModel.foreignKey.association: '_InsurPlcyCvrgInsrdSumCalc'
@ObjectModel.sapObjectNodeTypeReference: 'InsurPlcyCvrgInsrdSumCalcMeth'
Coverage.InsurPlcyCvrgInsrdSumCalcMeth,
Coverage.InsurPlcyCvrgInsuredSumPercent,
@ObjectModel.foreignKey.association: '_CoverageCurrency'
@ObjectModel.sapObjectNodeTypeReference: 'Currency'
Coverage.InsurPlcyCoverageCurrency,
//FS-PM Auto sibling specific fields
Coverage.InsurPlcyBonusRestorerType,
Coverage.InsurPlcyVehDeregistrationDate,
Coverage.InsurPlcyBonusMalusIsNotCeded,
Coverage.InsurPlcyInsurEndMsgSendDate,
Coverage.InsurPlcySubcoverageVariant,
Coverage.InsurPlcyVehInsurCoverEndDate,
Coverage.InsurPlcyNrOfVehClaimsRestored,
Coverage.InsurPlcyCrteInsurEndMessage,
Coverage.InsurPlcyDiscProtIsActive,
@Semantics.systemDateTime.lastChangedAt: true
Coverage.LastChangeDateTime,
RegularPremium.InsurancePolicyPremium,
RegularPremium.InsurPlcyJrnlNmbr as InsurPlcyPremiumJournalNumber,
RegularPremium.InsurPlcyJrnlEndNmbr as InsurPlcyPremJournalEndNumber,
@Semantics.amount.currencyCode: 'InsurPlcyPremiumCurrency'
RegularPremium.InsurPerdPremBfrTaxPaytAmt,
@Semantics.amount.currencyCode: 'InsurPlcyPremiumCurrency'
RegularPremium.InsurPerdPremAftTaxPaytAmt,
RegularPremium.InsurPremType,
@Semantics.booleanIndicator:true
RegularPremium.InsurPlcyCvrgIsPremiumExempt,
RegularPremium.InsurPlcyCvrgPremExmpEndDate,
@ObjectModel.foreignKey.association: '_PremiumCurrency'
@ObjectModel.sapObjectNodeTypeReference: 'Currency'
RegularPremium.InsurPlcyPremiumCurrency,
@Semantics.amount.currencyCode: 'InsurPlcyPremiumCurrency'
RegularPremium.InsurPlcyTotAnnPremAmt,
@Semantics.amount.currencyCode: 'InsurPlcyPremiumCurrency'
RegularPremium.InsurPlcyPerdPremBfrTxPaytAmt,
@ObjectModel.text.association: '_InsurPlcyTemplateT'
RegularPremium.InsurPlcyPremiumTemplate,
/* Associations */
_InsurPlcyCoveragePackage,
_InsurPlcyCvrgSurchrgDiscount,
_InsurancePolicyCvrgLimit,
_InsurancePolicyCvrgClause,
_InsurPlcyCvrgTypeRegionalCl,
_InsurPlcyCvrgPremComparison,
_InsurPolicyCvrgDeductible,
_InsurancePolicyInsuredObject,
_InsurPlcySubCoverage,
_InsurCvrgPlndProcessing,
_InsurPlcyCoverageBonusMalus,
@Consumption.hidden: true
_InsurPlcyTemplateT,
@Consumption.hidden: true
_InsurContrCanclnReason,
@Consumption.hidden: true
_InsurPlcyCvrgLifeCycSts,
@Consumption.hidden: true
_InsurPlcyCvrgSuspension,
@Consumption.hidden: true
_InsurPlcyCvrgInsrdSumCalc,
@Consumption.hidden: true
_CoverageCurrency,
@Consumption.hidden: true
_PremiumCurrency,
@Consumption.hidden: true
_InsurPlcyCvrgPremExmpRsn
}
where
Coverage.InsurPlcyJrnlEndNmbr = 2147483647
and Coverage.InsurPlcyBusinessObject = 'P'
and Coverage.InsurPlcyCoveragePackageID <> 0
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