P_PurchaseOrderProjectElement
PurchaseOrder with ProjElement and ScheduleLine
P_PurchaseOrderProjectElement is a Composite CDS View that provides data about "PurchaseOrder with ProjElement and ScheduleLine" in SAP S/4HANA. It reads from 3 data sources (I_PurgDocAccountAssignment, I_PurchasingDocument, I_PurchasingDocumentItem) and exposes 25 fields with key fields PurchasingDocument, PurchasingDocumentItem, WBSElementInternalID. It has 2 associations to related views. Part of development package ODATA_PPM_PRO_CTRL_PROFNL_SRVC.
Data Sources (3)
| Source | Alias | Join Type |
|---|---|---|
| I_PurgDocAccountAssignment | AccAssignment | from |
| I_PurchasingDocument | PurchasingDocument | inner |
| I_PurchasingDocumentItem | PurchasingDocumentItem | inner |
Associations (2)
| Cardinality | Target | Alias | Condition |
|---|---|---|---|
| [0..1] | I_UnitOfMeasure | _OrderQuantityUnit | $projection.OrderQuantityUnit = _OrderQuantityUnit.UnitOfMeasure |
| [0..1] | I_Currency | _DocumentCurrency | $projection.DocumentCurrency = _DocumentCurrency.Currency |
Annotations (8)
| Name | Value | Level | Field |
|---|---|---|---|
| AccessControl.authorizationCheck | #NOT_REQUIRED | view | |
| AccessControl.personalData.blocking | #REQUIRED | view | |
| Metadata.ignorePropagatedAnnotations | true | view | |
| ObjectModel.usageType.serviceQuality | #A | view | |
| ObjectModel.usageType.sizeCategory | #L | view | |
| ObjectModel.usageType.dataClass | #TRANSACTIONAL | view | |
| VDM.viewType | #COMPOSITE | view | |
| VDM.private | true | view |
Fields (25)
| Key | Field | Source Table | Source Field | Description |
|---|---|---|---|---|
| KEY | PurchasingDocument | I_PurchasingDocumentItem | PurchasingDocument | |
| KEY | PurchasingDocumentItem | I_PurchasingDocumentItem | PurchasingDocumentItem | |
| KEY | WBSElementInternalID | I_PurgDocAccountAssignment | WBSElementInternalID_2 | |
| PurchasingDocumentItemText | I_PurchasingDocumentItem | PurchasingDocumentItemText | ||
| PurchasingOrganization | I_PurchasingDocument | PurchasingOrganization | ||
| PurchasingGroup | I_PurchasingDocument | PurchasingGroup | ||
| ServicePerformer | I_PurchasingDocumentItem | ServicePerformer | ||
| OrderQuantityUnit | I_PurchasingDocumentItem | OrderQuantityUnit | ||
| OrderQuantity | I_PurchasingDocumentItem | OrderQuantity | ||
| DocumentCurrency | I_PurchasingDocumentItem | DocumentCurrency | ||
| NetAmount | I_PurchasingDocumentItem | NetAmount | ||
| PurchasingDocumentOrderDate | I_PurchasingDocument | PurchasingDocumentOrderDate | ||
| NetPriceAmount | I_PurchasingDocumentItem | NetPriceAmount | ||
| OverallLimitAmount | I_PurchasingDocumentItem | OverallLimitAmount | ||
| RoughGoodsReceiptQty | ||||
| ScheduleLineDeliveryDate | ||||
| ScheduleLineOrderQuantity | ||||
| Material | I_PurchasingDocumentItem | Material | ||
| MaterialGroup | I_PurchasingDocumentItem | MaterialGroup | ||
| Supplier | I_PurchasingDocument | Supplier | ||
| PurchasingDocumentDeletionCode | I_PurchasingDocumentItem | PurchasingDocumentDeletionCode | ||
| PurchasingDocumentCategory | I_PurchasingDocument | PurchasingDocumentCategory | ||
| IsEndOfPurposeBlocked | I_PurchasingDocumentItem | IsEndOfPurposeBlocked | ||
| _DocumentCurrency | _DocumentCurrency | |||
| _OrderQuantityUnit | _OrderQuantityUnit |
@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl: {
authorizationCheck: #NOT_REQUIRED,
personalData.blocking: #REQUIRED
}
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType:{
serviceQuality: #A,
sizeCategory: #L,
dataClass: #TRANSACTIONAL
}
@VDM: {
viewType:#COMPOSITE,
private: true
}
define view entity P_PurchaseOrderProjectElement
as select from I_PurgDocAccountAssignment as AccAssignment
inner join I_PurchasingDocumentItem as PurchasingDocumentItem on AccAssignment.PurchasingDocument = PurchasingDocumentItem.PurchasingDocument
and AccAssignment.PurchasingDocumentItem = PurchasingDocumentItem.PurchasingDocumentItem
inner join I_PurchasingDocument as PurchasingDocument on AccAssignment.PurchasingDocument = PurchasingDocument.PurchasingDocument
left outer one to many join I_PurgDocScheduleLine as ScheduleLine on AccAssignment.PurchasingDocument = ScheduleLine.PurchasingDocument
and AccAssignment.PurchasingDocumentItem = ScheduleLine.PurchasingDocumentItem
association [0..1] to I_UnitOfMeasure as _OrderQuantityUnit on $projection.OrderQuantityUnit = _OrderQuantityUnit.UnitOfMeasure
association [0..1] to I_Currency as _DocumentCurrency on $projection.DocumentCurrency = _DocumentCurrency.Currency
{
key PurchasingDocumentItem.PurchasingDocument as PurchasingDocument,
key PurchasingDocumentItem.PurchasingDocumentItem as PurchasingDocumentItem,
key AccAssignment.WBSElementInternalID_2 as WBSElementInternalID,
PurchasingDocumentItem.PurchasingDocumentItemText as PurchasingDocumentItemText,
PurchasingDocument.PurchasingOrganization as PurchasingOrganization,
PurchasingDocument.PurchasingGroup as PurchasingGroup,
PurchasingDocumentItem.ServicePerformer as ServicePerformer,
@ObjectModel.foreignKey.association: '_OrderQuantityUnit'
PurchasingDocumentItem.OrderQuantityUnit as OrderQuantityUnit,
@Semantics.quantity.unitOfMeasure: 'OrderQuantityUnit'
PurchasingDocumentItem.OrderQuantity as OrderQuantity,
@ObjectModel.foreignKey.association: '_DocumentCurrency'
PurchasingDocumentItem.DocumentCurrency as DocumentCurrency,
@Semantics.amount.currencyCode: 'DocumentCurrency'
PurchasingDocumentItem.NetAmount as NetAmount,
PurchasingDocument.PurchasingDocumentOrderDate as PurchasingDocumentOrderDate,
@Semantics.amount.currencyCode: 'DocumentCurrency'
PurchasingDocumentItem.NetPriceAmount as NetPriceAmount,
@Semantics.amount.currencyCode: 'DocumentCurrency'
PurchasingDocumentItem.OverallLimitAmount as OverallLimitAmount,
@Semantics.quantity.unitOfMeasure: 'OrderQuantityUnit'
sum(ScheduleLine.RoughGoodsReceiptQty) as RoughGoodsReceiptQty,
min(ScheduleLine.ScheduleLineDeliveryDate) as ScheduleLineDeliveryDate,
@Semantics.quantity.unitOfMeasure: 'OrderQuantityUnit'
sum( ScheduleLine.ScheduleLineOrderQuantity) as ScheduleLineOrderQuantity,
PurchasingDocumentItem.Material as Material,
PurchasingDocumentItem.MaterialGroup as MaterialGroup,
PurchasingDocument.Supplier as Supplier,
PurchasingDocumentItem.PurchasingDocumentDeletionCode as PurchasingDocumentDeletionCode,
//DCL
PurchasingDocument.PurchasingDocumentCategory as PurchasingDocumentCategory,
PurchasingDocumentItem.IsEndOfPurposeBlocked as IsEndOfPurposeBlocked,
/* Associations */
_DocumentCurrency,
_OrderQuantityUnit
}
where
PurchasingDocumentItem.PurchasingDocumentCategory = 'F' //Purchase Order
and ScheduleLine.ScheduleLine is not initial
group by
PurchasingDocumentItem.PurchasingDocument,
PurchasingDocumentItem.PurchasingDocumentItem,
AccAssignment.WBSElementInternalID_2,
PurchasingDocumentItem.PurchasingDocumentItemText,
PurchasingDocumentItem.ServicePerformer,
PurchasingDocument.PurchasingDocumentOrderDate,
PurchasingDocumentItem.DocumentCurrency,
PurchasingDocumentItem.NetAmount,
PurchasingDocumentItem.NetPriceAmount,
PurchasingDocumentItem.OrderQuantity,
PurchasingDocumentItem.Material,
PurchasingDocumentItem.MaterialGroup,
PurchasingDocumentItem.OrderQuantityUnit,
PurchasingDocumentItem.OverallLimitAmount,
PurchasingDocument.PurchasingOrganization,
PurchasingDocument.PurchasingGroup,
PurchasingDocumentItem.IsEndOfPurposeBlocked,
PurchasingDocument.PurchasingDocumentCategory,
PurchasingDocument.Supplier,
PurchasingDocumentItem.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