P_PurchaseOrderProjectElement

DDL: P_PURCHASEORDERPROJECTELEMENT Type: view_entity COMPOSITE Package: ODATA_PPM_PRO_CTRL_PROFNL_SRVC

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)

SourceAliasJoin Type
I_PurgDocAccountAssignment AccAssignment from
I_PurchasingDocument PurchasingDocument inner
I_PurchasingDocumentItem PurchasingDocumentItem inner

Associations (2)

CardinalityTargetAliasCondition
[0..1] I_UnitOfMeasure _OrderQuantityUnit $projection.OrderQuantityUnit = _OrderQuantityUnit.UnitOfMeasure
[0..1] I_Currency _DocumentCurrency $projection.DocumentCurrency = _DocumentCurrency.Currency

Annotations (8)

NameValueLevelField
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)

KeyFieldSource TableSource FieldDescription
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