P_ContrWithRelevantValidity
P-view to Fetch Purchase Contracts with Relevant Validity
P_ContrWithRelevantValidity is a Composite CDS View that provides data about "P-view to Fetch Purchase Contracts with Relevant Validity" in SAP S/4HANA. It reads from 2 data sources (I_PurchaseContractItem, I_PurContractClassification) and exposes 25 fields with key fields PurchaseContract, PurchaseContractItem, ReleaseOrder, ReleaseOrderItem. It has 1 association to related views. Part of development package ODATA_MM_CTR_MAINTAIN.
Data Sources (2)
| Source | Alias | Join Type |
|---|---|---|
| I_PurchaseContractItem | _PurchaseContractItem | from |
| I_PurContractClassification | _PurContractClassification | inner |
Associations (1)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1..*] | I_PurchaseContractHistory | _PurchaseContractHistory | _PurchaseContractItem.PurchaseContract = _PurchaseContractHistory.PurchaseContract and _PurchaseContractItem.PurchaseContractItem = _PurchaseContractHistory.PurchaseContractItem |
Annotations (8)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | PCRELVAL | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| VDM.private | true | view | |
| VDM.viewType | #COMPOSITE | view | |
| ObjectModel.usageType.serviceQuality | #B | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| ObjectModel.usageType.dataClass | #MIXED | view |
Fields (25)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | PurchaseContract | I_PurchaseContractItem | PurchaseContract | |
| KEY | PurchaseContractItem | I_PurchaseContractItem | PurchaseContractItem | |
| KEY | ReleaseOrder | _PurchaseContractHistory | ReleaseOrder | |
| KEY | ReleaseOrderItem | _PurchaseContractHistory | ReleaseOrderItem | |
| Purchasingdocumentcategory | I_PurchaseContractItem | PurchasingObjectCategory | ||
| PurchaseContractType | I_PurchaseContractItem | PurchaseContractType | ||
| DocumentCurrency | I_PurchaseContractItem | DocumentCurrency | ||
| PurchaseContractTargetAmount | I_PurchaseContractItem | OutlineAgreementTargetAmount | ||
| ReleaseOrderItemOrderQuantity | _PurchaseContractHistory | ReleaseOrderItemOrderQuantity | ||
| PurchaseContractClassification | I_PurContractClassification | PurchaseContractClassification | ||
| TargetQuantity | I_PurchaseContractItem | TargetQuantity | ||
| TargetAmount | I_PurchaseContractItem | TargetAmount | ||
| ReleaseOrderCurrency | I_PurchaseContractItem | DocumentCurrency | ||
| curr283asReleaseOrderItemNetAmount | ||||
| ReleaseOrderItemIsDeleted | _PurchaseContractHistory | ReleaseOrderItemIsDeleted | ||
| ReleaseOrderItemLastChgDate | _PurchaseContractHistory | ReleaseOrderItemLastChgDate | ||
| ReleaseOrderItemQuantityUnit | _PurchaseContractHistory | ReleaseOrderItemQuantityUnit | ||
| CreatedByUser | I_PurchaseContractItem | PurchaseContractCreatedByUser | ||
| ValidityStartDate | I_PurchaseContractItem | PurContrValidityStartDate | ||
| PurContrValidityDateDifference | ||||
| Max_notexpired | 3650 | |||
| Min_expired | 0 | |||
| PurchasingGroup | I_PurchaseContractItem | PurchasingGroup | ||
| ActivePurchasingDocument | I_PurchaseContractItem | ActivePurchasingDocument | ||
| _PurchaseContractHistory | _PurchaseContractHistory |
@AbapCatalog.sqlViewName: 'PCRELVAL'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@VDM.private: true
@VDM.viewType: #COMPOSITE
@ObjectModel.usageType.serviceQuality: #B
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MIXED
define view P_ContrWithRelevantValidity
as select from I_PurchaseContractItem as _PurchaseContractItem
// association to R_PurchaseContract as _PurContract on $projection.PurchaseContract = _PurContract.PurchaseContract
inner join I_PurContractClassification as _PurContractClassification on _PurchaseContractItem.PurchaseContractType = _PurContractClassification.PurchasingDocumentType
//1905 - Consumption & Relevance
association [1..*] to I_PurchaseContractHistory as _PurchaseContractHistory on _PurchaseContractItem.PurchaseContract = _PurchaseContractHistory.PurchaseContract
and _PurchaseContractItem.PurchaseContractItem = _PurchaseContractHistory.PurchaseContractItem
{
key _PurchaseContractItem.PurchaseContract,
key _PurchaseContractItem.PurchaseContractItem,
key _PurchaseContractHistory.ReleaseOrder,
key _PurchaseContractHistory.ReleaseOrderItem,
_PurchaseContractItem.PurchasingObjectCategory as Purchasingdocumentcategory,
_PurchaseContractItem.PurchaseContractType,
@Semantics.currencyCode:true
_PurchaseContractItem.DocumentCurrency,
_PurchaseContractItem.OutlineAgreementTargetAmount as PurchaseContractTargetAmount,
@Semantics.quantity.unitOfMeasure: 'ReleaseOrderItemQuantityUnit'
// _PurchaseContractItem._PurchaseContractHistory.ReleaseOrderItemOrderQuantity,
_PurchaseContractHistory.ReleaseOrderItemOrderQuantity as ReleaseOrderItemOrderQuantity,
_PurContractClassification.PurchaseContractClassification,
case
when _PurContractClassification.PurchaseContractClassification = '1'
then
_PurchaseContractHistory.ReleaseOrderItemNetAmount
else 0
end as ConsumedValueForQuantity,
_PurchaseContractItem.TargetQuantity,
_PurchaseContractItem.TargetAmount,
@Semantics.currencyCode:true
_PurchaseContractItem.DocumentCurrency as ReleaseOrderCurrency,
@Semantics.amount.currencyCode: '_PurContract.DocumentCurrency'
@DefaultAggregation:#SUM
cast( currency_conversion
( amount => _PurchaseContractHistory.ReleaseOrderItemNetAmount,
source_currency => _PurchaseContractHistory.ReleaseOrderCurrency,
target_currency => _PurchaseContractItem.DocumentCurrency,
exchange_rate_date => _PurchaseContractHistory.ReleaseOrderItemLastChgDate,
exchange_rate_type => 'M',
error_handling => 'FAIL_ON_ERROR' ) as abap.curr( 28, 3 ) ) as ReleaseOrderItemNetAmount,
_PurchaseContractHistory.ReleaseOrderItemIsDeleted,
_PurchaseContractHistory.ReleaseOrderItemLastChgDate,
_PurchaseContractHistory.ReleaseOrderItemQuantityUnit,
//_PurContractClassification,
_PurchaseContractItem.PurchaseContractCreatedByUser as CreatedByUser,
case
when _PurchaseContractItem.PurContrValidityEndDate is initial then '99991231'
else _PurchaseContractItem.PurContrValidityEndDate
end as ValidityEndDate,
_PurchaseContractItem.PurContrValidityStartDate as ValidityStartDate,
case
when _PurchaseContractItem.PurContrValidityEndDate is initial
then dats_days_between(cast( substring( cast( tstmp_current_utctimestamp() as abap.char(17) ), 1, 8 ) as abap.dats), cast ('99991231' as abap.dats))
else dats_days_between(cast( substring( cast( tstmp_current_utctimestamp() as abap.char(17) ), 1, 8 ) as abap.dats), _PurchaseContractItem.PurContrValidityEndDate)
end as TimeVarianceInDays,
dats_days_between(cast( substring( cast( tstmp_current_utctimestamp() as abap.char(17) ), 1, 8 ) as abap.dats), _PurchaseContractItem.PurContrValidityStartDate) as PurContrValidityDateDifference,
case
when _PurchaseContractItem.PurContrValidityEndDate is initial
then dats_days_between(cast ('99991231' as abap.dats),_PurchaseContractItem.PurContrValidityStartDate)
else dats_days_between(_PurchaseContractItem.PurContrValidityEndDate, _PurchaseContractItem.PurContrValidityStartDate)
end as PurContrValidityTotalDays,
3650 as Max_notexpired,
0 as Min_expired,
_PurchaseContractItem.PurchasingGroup,
_PurchaseContractItem.ActivePurchasingDocument,
//Assosiations
_PurchaseContractHistory
}
where
_PurchaseContractItem._PurchaseContract.PurchasingDocumentDeletionCode = ''
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