I_InsurApplCoverage
Coverage of Cvrg Package in Insur Appl
I_InsurApplCoverage is a Composite CDS View that provides data about "Coverage of Cvrg Package in Insur Appl" in SAP S/4HANA. It reads from 5 data sources (I_InsurPlcyCoverageBasic, I_InsurApplContract, P_InsurPolicyJournalKeys, I_InsurPlcyRegPremConfig, R_InsurApplicationPremium) and exposes 63 fields with key fields InsurPlcyUUID, InsurPlcyInsurContr, InsurPlcyCoveragePackageID, InsurPlcyCoverageID, InsurPlcyContrDataDetnJrnlNmbr. It has 17 associations to related views. Part of development package VDM_PM_PLCY_APPL_COMMON.
Data Sources (5)
| Source | Alias | Join Type |
|---|---|---|
| I_InsurPlcyCoverageBasic | Coverage | inner |
| I_InsurApplContract | InsurApplContractTmpl | inner |
| P_InsurPolicyJournalKeys | PlcyJrnl | from |
| I_InsurPlcyRegPremConfig | PremiumConfig | inner |
| R_InsurApplicationPremium | RegularPremium | inner |
Associations (17)
| 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_InsurApplCvrgSurchrgDiscount | _InsurApplCvrgSurchrgDiscount | |
| [0..*] | I_InsurApplCoverageLimit | _InsurApplCoverageLimit | |
| [0..*] | I_InsurApplCvrgClause | _InsurApplCvrgClause | |
| [0..*] | I_InsurApplCvrgDeductible | _InsurApplCvrgDeductible | |
| [0..*] | I_InsurApplInsuredObject | _InsurApplInsuredObject | |
| [0..*] | I_InsurApplSubCoverage | _InsurApplSubCoverage | |
| [0..*] | I_InsurApplCvrgTypeRegionalCl | _InsurApplCvrgTypeRegionalCl | |
| [0..*] | I_InsurApplCvrgPremComparison | _InsurApplCvrgPremComparison | |
| [0..*] | I_InsurApplCoverageBonusMalus | _InsurApplCoverageBonusMalus | |
Annotations (11)
| Name | Value | Level | Field |
|---|---|---|---|
| EndUserText.label | Coverage of Cvrg Package in Insur Appl | 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 | #D | view | |
| ObjectModel.usageType.sizeCategory | #XL | view | |
| Metadata.allowExtensions | false | view | |
| Metadata.ignorePropagatedAnnotations | false | view | |
| Analytics.technicalName | IACvrg | 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 | |
| KEY | InsurPlcyContrDataDetnJrnlNmbr | |||
| 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_InsurApplicationPremium | InsurancePolicyPremium | ||
| InsurPlcyPremiumJournalNumber | R_InsurApplicationPremium | InsurPlcyJrnlNmbr | ||
| InsurPlcyPremJournalEndNumber | R_InsurApplicationPremium | InsurPlcyJrnlEndNmbr | ||
| InsurPerdPremBfrTaxPaytAmt | R_InsurApplicationPremium | InsurPerdPremBfrTaxPaytAmt | ||
| InsurPerdPremAftTaxPaytAmt | R_InsurApplicationPremium | InsurPerdPremAftTaxPaytAmt | ||
| InsurPremType | R_InsurApplicationPremium | InsurPremType | ||
| InsurPlcyCvrgIsPremiumExempt | R_InsurApplicationPremium | InsurPlcyCvrgIsPremiumExempt | ||
| InsurPlcyCvrgPremExmpEndDate | R_InsurApplicationPremium | InsurPlcyCvrgPremExmpEndDate | ||
| InsurPlcyPremiumCurrency | R_InsurApplicationPremium | InsurPlcyPremiumCurrency | ||
| InsurPlcyTotAnnPremAmt | R_InsurApplicationPremium | InsurPlcyTotAnnPremAmt | ||
| InsurPlcyPerdPremBfrTxPaytAmt | R_InsurApplicationPremium | InsurPlcyPerdPremBfrTxPaytAmt | ||
| InsurPlcyPremiumTemplate | R_InsurApplicationPremium | InsurPlcyPremiumTemplate | ||
| _InsurApplCoveragePackage | _InsurApplCoveragePackage | |||
| _InsurApplCvrgSurchrgDiscount | _InsurApplCvrgSurchrgDiscount | |||
| _InsurApplCoverageLimit | _InsurApplCoverageLimit | |||
| _InsurApplCvrgClause | _InsurApplCvrgClause | |||
| _InsurApplCvrgTypeRegionalCl | _InsurApplCvrgTypeRegionalCl | |||
| _InsurApplCvrgPremComparison | _InsurApplCvrgPremComparison | |||
| _InsurApplCvrgDeductible | _InsurApplCvrgDeductible | |||
| _InsurApplInsuredObject | _InsurApplInsuredObject | |||
| _InsurApplSubCoverage | _InsurApplSubCoverage | |||
| _InsurApplCoverageBonusMalus | _InsurApplCoverageBonusMalus | |||
| _InsurPlcyTemplateT | _InsurPlcyTemplateT | |||
| _InsurContrCanclnReason | _InsurContrCanclnReason | |||
| _InsurPlcyCvrgLifeCycSts | _InsurPlcyCvrgLifeCycSts | |||
| _InsurPlcyCvrgSuspension | _InsurPlcyCvrgSuspension | |||
| _InsurPlcyCvrgInsrdSumCalc | _InsurPlcyCvrgInsrdSumCalc | |||
| _CoverageCurrency | _CoverageCurrency | |||
| _PremiumCurrency | _PremiumCurrency | |||
| _InsurPlcyCvrgPremExmpRsn | _InsurPlcyCvrgPremExmpRsn |
@EndUserText.label: 'Coverage of Cvrg Package in Insur Appl'
@VDM: {
viewType:#COMPOSITE,
lifecycle.contract.type:#PUBLIC_LOCAL_API
}
@AccessControl: {
authorizationCheck: #PRIVILEGED_ONLY,
personalData.blocking: #('TRANSACTIONAL_DATA'),
privilegedAssociations: [ '_InsurApplCvrgSurchrgDiscount',
'_InsurApplCoverageLimit',
'_InsurApplCvrgClause',
'_InsurApplCvrgDeductible',
'_InsurApplInsuredObject',
'_InsurApplSubCoverage',
'_InsurApplCvrgTypeRegionalCl',
'_InsurApplCvrgPremComparison']
}
@ObjectModel: {
representativeKey: 'InsurPlcyCoverageID',
semanticKey: [ 'InsurPlcyInsuranceCoverage' ],
usageType: {
dataClass: #TRANSACTIONAL,
serviceQuality: #D,
sizeCategory: #XL
},
supportedCapabilities: [ #CDS_MODELING_DATA_SOURCE ]
}
@Metadata: {
allowExtensions:false,
ignorePropagatedAnnotations:false
}
@Analytics: {
technicalName: 'IACvrg'
}
define view entity I_InsurApplCoverage
as select from P_InsurPolicyJournalKeys as PlcyJrnl
inner join I_InsurPlcyCoverageBasic as Coverage on PlcyJrnl.InsurPlcyUUID = Coverage.InsurPlcyUUID
and PlcyJrnl.InsurPlcyInsurContr = Coverage.InsurPlcyInsurContr
and PlcyJrnl.InsurPlcyContrDataDetnJrnlNmbr >= Coverage.InsurPlcyJrnlNmbr
and PlcyJrnl.InsurPlcyContrDataDetnJrnlNmbr < Coverage.InsurPlcyJrnlEndNmbr
// Get Template of Contract
inner join I_InsurApplContract as InsurApplContractTmpl on Coverage.InsurPlcyUUID = InsurApplContractTmpl.InsurPlcyUUID
and Coverage.InsurPlcyInsurContr = InsurApplContractTmpl.InsurPlcyInsurContr
and PlcyJrnl.InsurPlcyContrDataDetnJrnlNmbr = InsurApplContractTmpl.InsurPlcyContrDataDetnJrnlNmbr
// Join to Regular Premium on Coveragelevel
inner join R_InsurApplicationPremium as RegularPremium on RegularPremium.InsurPlcyUUID = Coverage.InsurPlcyUUID
and RegularPremium.InsurPlcyInsurContr = Coverage.InsurPlcyInsurContr
and RegularPremium.InsurPlcyCoveragePackageID = Coverage.InsurPlcyCoveragePackageID
and RegularPremium.InsurPlcyCoverageID = Coverage.InsurPlcyCoverageID
and RegularPremium.InsurPlcyContrDataDetnJrnlNmbr = PlcyJrnl.InsurPlcyContrDataDetnJrnlNmbr
// Filter Premium Objects
inner join I_InsurPlcyRegPremConfig as PremiumConfig on PremiumConfig.InsurPlcyProductTemplate = InsurApplContractTmpl.InsurPlcyProductTemplate
and PremiumConfig.InsurPremType = RegularPremium.InsurPremType
association to parent I_InsurApplCoveragePackage as _InsurApplCoveragePackage on $projection.InsurPlcyUUID = _InsurApplCoveragePackage.InsurPlcyUUID
and $projection.InsurPlcyInsurContr = _InsurApplCoveragePackage.InsurPlcyInsurContr
and $projection.InsurPlcyCoveragePackageID = _InsurApplCoveragePackage.InsurPlcyCoveragePackageID
and $projection.InsurPlcyContrDataDetnJrnlNmbr = _InsurApplCoveragePackage.InsurPlcyContrDataDetnJrnlNmbr
composition [0..*] of I_InsurApplCvrgSurchrgDiscount as _InsurApplCvrgSurchrgDiscount
composition [0..*] of I_InsurApplCoverageLimit as _InsurApplCoverageLimit
composition [0..*] of I_InsurApplCvrgClause as _InsurApplCvrgClause
composition [0..*] of I_InsurApplCvrgDeductible as _InsurApplCvrgDeductible
composition [0..*] of I_InsurApplInsuredObject as _InsurApplInsuredObject
composition [0..*] of I_InsurApplSubCoverage as _InsurApplSubCoverage
composition [0..*] of I_InsurApplCvrgTypeRegionalCl as _InsurApplCvrgTypeRegionalCl
composition [0..*] of I_InsurApplCvrgPremComparison as _InsurApplCvrgPremComparison
composition [0..*] of I_InsurApplCoverageBonusMalus as _InsurApplCoverageBonusMalus
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,
key cast( PlcyJrnl.InsurPlcyContrDataDetnJrnlNmbr as /pm0/vdm_contr_detn_jrnlnmbr preserving type ) as InsurPlcyContrDataDetnJrnlNmbr,
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'
Coverage.InsurPlcyCvrgPremExmpReason,
@ObjectModel.foreignKey.association: '_InsurPlcyCvrgLifeCycSts'
Coverage.InsurPlcyCvrgLifeCycleStatus,
@ObjectModel.foreignKey.association: '_InsurContrCanclnReason'
Coverage.InsurContrCanclnRsn,
@Semantics.dateTime:true
Coverage.InsurPlcyCvrgCanclnDateTime,
@ObjectModel.foreignKey.association: '_InsurPlcyCvrgSuspension'
Coverage.InsurPlcyCoverageSuspension,
@Semantics.dateTime:true
Coverage.InsurPlcyCvrgSuspnStrtDateTime,
@Semantics.dateTime:true
Coverage.InsurPlcyCvrgSuspnEndDateTime,
@Semantics.amount.currencyCode: 'InsurPlcyCoverageCurrency'
Coverage.InsurPlcyCvrgInsuredSumAmount,
@ObjectModel.foreignKey.association: '_InsurPlcyCvrgInsrdSumCalc'
Coverage.InsurPlcyCvrgInsrdSumCalcMeth,
Coverage.InsurPlcyCvrgInsuredSumPercent,
@ObjectModel.foreignKey.association: '_CoverageCurrency'
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'
RegularPremium.InsurPlcyPremiumCurrency,
@Semantics.amount.currencyCode: 'InsurPlcyPremiumCurrency'
RegularPremium.InsurPlcyTotAnnPremAmt,
@Semantics.amount.currencyCode: 'InsurPlcyPremiumCurrency'
RegularPremium.InsurPlcyPerdPremBfrTxPaytAmt,
@ObjectModel.text.association: '_InsurPlcyTemplateT'
RegularPremium.InsurPlcyPremiumTemplate,
/* Associations */
_InsurApplCoveragePackage,
_InsurApplCvrgSurchrgDiscount,
_InsurApplCoverageLimit,
_InsurApplCvrgClause,
_InsurApplCvrgTypeRegionalCl,
_InsurApplCvrgPremComparison,
_InsurApplCvrgDeductible,
_InsurApplInsuredObject,
_InsurApplSubCoverage,
_InsurApplCoverageBonusMalus,
@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.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