P_PurContractPriceVariance1
Purchase Contract Price Variance 1
P_PurContractPriceVariance1 is a Consumption CDS View that provides data about "Purchase Contract Price Variance 1" in SAP S/4HANA. It reads from 3 data sources (I_PurchaseContractItem, P_ChangeDocumentItem2, P_ChangeDocumentItem3) and exposes 33 fields with key fields PurchaseContract, PurchaseContractItem, ChangeDocument. It has 1 association to related views. Part of development package ODATA_MM_ANALYTICS.
Data Sources (3)
| Source | Alias | Join Type |
|---|---|---|
| I_PurchaseContractItem | ContractItem | from |
| P_ChangeDocumentItem2 | P_ChangeDocumentItem2 | left_outer |
| P_ChangeDocumentItem3 | P_ChangeDocumentItem3 | left_outer |
Parameters (3)
| Name | Type | Default |
|---|---|---|
| P_Material | matnr | |
| P_StartDate | vdm_validitystart | |
| P_EndDate | vdm_validityend |
Associations (1)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [1..1] | I_PurchasingCategoryMatlGroup | _PurchasingCategoryMatlGroup | $projection.MaterialGroup = _PurchasingCategoryMatlGroup.MaterialGroup |
Annotations (6)
| Name | Value | Level | Field |
|---|---|---|---|
| AbapCatalog.sqlViewName | PMMPCPRCVAR1 | view | |
| AbapCatalog.compiler.compareFilter | true | view | |
| AccessControl.authorizationCheck | #CHECK | view | |
| VDM.viewType | #CONSUMPTION | view | |
| VDM.private | true | view | |
| AccessControl.personalData.blocking | #NOT_REQUIRED | view |
Fields (33)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | PurchaseContract | I_PurchaseContractItem | PurchaseContract | |
| KEY | PurchaseContractItem | PurchaseContractItem | ||
| KEY | ChangeDocument | ChangeItem | ChangeDocument | |
| CreationDate | _PurchaseContract | CreationDate | ||
| PurchasingOrganization | _PurchaseContract | PurchasingOrganization | ||
| PurchasingGroup | _PurchaseContract | PurchasingGroup | ||
| Supplier | _PurchaseContract | Supplier | ||
| CompanyCode | _PurchaseContract | CompanyCode | ||
| Material | Material | |||
| MaterialGroup | MaterialGroup | |||
| Plant | I_PurchaseContractItem | Plant | ||
| PurchasingCategory | ||||
| ContractCurrency | I_PurchaseContractItem | DocumentCurrency | ||
| Currency | ChangeItem | Currency | ||
| DocumentCurrencyendasDocumentCurrency | ||||
| CreationDateendasDocumentChangeDate | ||||
| NetPriceQuantity | NetPriceQuantity | |||
| OrderPriceUnit | OrderPriceUnit | |||
| OrderQuantityUnit | OrderQuantityUnit | |||
| TargetQuantity | TargetQuantity | |||
| TargetAmount | TargetAmount | |||
| IsDocumentChanged | IsDocumentChanged | |||
| NumberOfChanges | NumberOfChanges | |||
| NumberOfPriceChanges | ChangeItem | NumberOfPriceChanges | ||
| TotalNumberOfChanges | NumberOfChangeItems | NumberOfPriceChanges | ||
| _Material | _Material | |||
| _MaterialGroup | _MaterialGroup | |||
| _Plant | _Plant | |||
| _PurchasingCategoryMatlGroup | _PurchasingCategoryMatlGroup | |||
| _Supplier | ||||
| _CompanyCode | ||||
| _PurchasingGroup | ||||
| _PurchasingOrganization |
@AbapCatalog.sqlViewName: 'PMMPCPRCVAR1'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@VDM.viewType : #CONSUMPTION
@VDM.private: true
@AccessControl.personalData.blocking: #NOT_REQUIRED
define view P_PurContractPriceVariance1
with parameters
P_Material : matnr,
P_StartDate : vdm_validitystart,
P_EndDate : vdm_validityend
as select from I_PurchaseContractItem as ContractItem
left outer join P_ChangeDocumentItem2 ( P_StartDate: $parameters.P_StartDate,
P_EndDate: $parameters.P_EndDate ) as ChangeItem on ContractItem.PurchaseContract = ChangeItem.ChangeDocObject
and ContractItem.PurchaseContractItem = ChangeItem.Item
and ChangeItem.DatabaseTable = 'EKPO'
left outer join P_ChangeDocumentItem3 ( P_StartDate: $parameters.P_StartDate,
P_EndDate: $parameters.P_EndDate ) as NumberOfChangeItems on ContractItem.PurchaseContract = NumberOfChangeItems.ChangeDocObject
and ContractItem.PurchaseContractItem = NumberOfChangeItems.Item
association [1..1] to I_PurchasingCategoryMatlGroup as _PurchasingCategoryMatlGroup on $projection.MaterialGroup = _PurchasingCategoryMatlGroup.MaterialGroup
{
key ContractItem.PurchaseContract,
key PurchaseContractItem,
key ChangeItem.ChangeDocument,
_PurchaseContract.CreationDate,
_PurchaseContract.PurchasingOrganization,
_PurchaseContract.PurchasingGroup,
_PurchaseContract.Supplier,
_PurchaseContract.CompanyCode,
// ContractItem.ContractNetPriceAmount,
Material,
MaterialGroup,
ContractItem.Plant,
_PurchasingCategoryMatlGroup._PurchasingCategory.PurchasingCategory as PurchasingCategory,
ContractItem.DocumentCurrency as ContractCurrency,
ChangeItem.Currency,
case when ChangeDocument is not initial and ChangeItem.Currency is not initial
then ChangeItem.Currency
else ContractItem.DocumentCurrency
end as DocumentCurrency,
case when ChangeDocument is not initial
then CreationDate
else _PurchaseContract.CreationDate
end as DocumentChangeDate,
case when NetPriceAmount is not null
then cast(NetPriceAmount + division(cast(ValueAfterDecimal as abap.dec( 4, 2 )), 100,2) as abap.curr( 21, 2 ))
else ContractItem.ContractNetPriceAmount
end as ContractNetPriceAmount,
case
when OrdPriceUnitToOrderUnitDnmntr = 0
then 0
else DIVISION(OrderPriceUnitToOrderUnitNmrtr, OrdPriceUnitToOrderUnitDnmntr, 1 ) * TargetQuantity
end
as QuantityInBaseUnit,
NetPriceQuantity,
OrderPriceUnit,
OrderQuantityUnit,
TargetQuantity,
TargetAmount,
IsDocumentChanged,
NumberOfChanges,
ChangeItem.NumberOfPriceChanges,
NumberOfChangeItems.NumberOfPriceChanges as TotalNumberOfChanges,
_Material,
_MaterialGroup,
_Plant,
_PurchasingCategoryMatlGroup,
ContractItem._PurchaseContract._Supplier,
ContractItem._PurchaseContract._CompanyCode,
ContractItem._PurchaseContract._PurchasingGroup,
ContractItem._PurchaseContract._PurchasingOrganization
}
where PurchasingContractDeletionCode = ''
and _PurchaseContract.PurchasingDocumentDeletionCode != 'X'
and _PurchaseContract.IsEndOfPurposeBlocked = ''
and Material = $parameters.P_Material
and _PurchaseContract.CreationDate between $parameters.P_StartDate and $parameters.P_EndDate
// as select from P_PURCONTRACTPRICEVARIANCE ( P_Material : $parameters.P_Material, P_StartDate: $parameters.P_StartDate,
// P_EndDate: $parameters.P_EndDate ) as PriceChange
// {
//
// key PurchaseContract,
// PurchaseContractItem,
// ChangeDocument,
////
// CreationDate,
// PurchasingOrganization,
// PurchasingGroup,
// Supplier,
// CompanyCode,
////
// ContractNetPriceAmount,
// Material,
// MaterialGroup,
// Plant,
// PurchasingCategory as PurchasingCategory,
////
// ContractCurrency,
// Currency,
// DocumentCurrency,
// DocumentChangeDate,
////
//// case when NetPriceAmount is not null
//// then cast(NetPriceAmount + division(cast(ValueAfterDecimal as abap.dec( 4, 2 )), 100,2) as abap.curr( 21, 2 ))
//// else ContractItem.ContractNetPriceAmount
//// end as ContractNetPriceAmount,
////
// QuantityInBaseUnit,
////
////
// OrderQuantityUnit,
// TargetQuantity,
// TargetAmount,
// IsDocumentChanged,
// NumberOfChanges,
// NumberOfPriceChanges,
// TotalNumberOfChanges,
// _Material,
// _MaterialGroup,
// _Plant,
// _PurchasingCategoryMatlGroup,
// _Supplier,
// _CompanyCode,
// _PurchasingGroup,
// _PurchasingOrganization
//
// }
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