C_PurchaseOrderMassUpdate

DDL: C_PURCHASEORDERMASSUPDATE Type: view_entity CONSUMPTION Package: ODATA_MM_PUR_POMASS_UPDATE

Mass Changes to Purchase Orders

C_PurchaseOrderMassUpdate is a Consumption CDS View that provides data about "Mass Changes to Purchase Orders" in SAP S/4HANA. It reads from 1 data source (I_PurchaseOrder) and exposes 49 fields with key field PurchaseOrder. It has 3 associations to related views. Part of development package ODATA_MM_PUR_POMASS_UPDATE.

Data Sources (1)

SourceAliasJoin Type
I_PurchaseOrder I_PurchaseOrder from

Associations (3)

CardinalityTargetAliasCondition
[0..*] C_PurchaseOrderItemMassUpdate _PurchaseOrderItemMassUpdate $projection.PurchaseOrder = _PurchaseOrderItemMassUpdate.PurchaseOrder
[1..*] C_POMassUpdtDelivSchedItm _ScheduleLine $projection.PurchaseOrder = _ScheduleLine.PurchaseOrder
[0..1] I_PurchaseOrderStatusText _PurchaseOrderStatus $projection.PurchaseOrder = _PurchaseOrderStatus.PurchaseOrder

Annotations (12)

NameValueLevelField
VDM.viewType #CONSUMPTION view
AccessControl.authorizationCheck #MANDATORY view
EndUserText.label Mass Changes to Purchase Orders view
AccessControl.personalData.blocking #BLOCKED_DATA_EXCLUDED view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XL view
ObjectModel.usageType.dataClass #TRANSACTIONAL view
ObjectModel.createEnabled true view
ObjectModel.updateEnabled true view
Metadata.ignorePropagatedAnnotations true view
UI.headerInfo.typeName Purchase Order Header view
UI.headerInfo.typeNamePlural Purchase Order Headers view

Fields (49)

KeyFieldSource TableSource FieldDescription
KEY PurchaseOrder PurchaseOrder
Supplier Supplier
SupplierName
CompanyCode CompanyCode
CompanyCodeName
PurchasingOrganization PurchasingOrganization Purchasing Organization
PurchasingOrganizationName
PurchasingGroup PurchasingGroup
PurchasingGroupName
PurchaseOrderDate PurchaseOrderDate Order Date
PurchaseOrderType PurchaseOrderType Order Type
PurchasingDocumentTypeName
PaymentTerms PaymentTerms Terms of Payment
PaymentTermsName
IncotermsClassification I_PurchaseOrder IncotermsClassification Incoterms (Header)
IncotermsClassificationName
InvoicingParty InvoicingParty
InvoicingPartyName
PurchasingDocumentStatus _PurchaseOrderStatus PurchasingDocumentStatus Order Status
PurchasingDocumentStatusName _PurchaseOrderStatus PurchasingDocumentStatusName
CashDiscount1Days CashDiscount1Days Day 1 / In Percent
CashDiscount2Days CashDiscount2Days Day 2 / In Percent
NetPaymentDays NetPaymentDays Days Net
CashDiscount1Percent CashDiscount1Percent Discount Percentage 1
CashDiscount2Percent CashDiscount2Percent Discount Percentage 2
ExchangeRate ExchangeRate Exchange Rate
DocumentCurrency DocumentCurrency
ValidityStartDate ValidityStartDate Validity Period Start
ValidityEndDate ValidityEndDate Validity Period End
SupplierRespSalesPersonName SupplierRespSalesPersonName
SupplierPhoneNumber SupplierPhoneNumber Supplier Telephone
SupplyingSupplier SupplyingSupplier
SupplierFullName
HeaderIncotermsLoc1 IncotermsLocation1 Incoterm Location 1 (Header)
HeaderIncotermsLoc2 IncotermsLocation2 Incoterm Location 2 (Header)
IncotermsVersion IncotermsVersion Incoterms Version (Header)
IncotermsVersionName
AllItemsHaveSingleScheduleLine
MaterialGroup
Plant
Material
AccountAssignmentCategory Account Assignment Category
PurchaseOrderItemCategory
PurchasingDocumentDeletionCode
ScheduleLineDeliveryDate
PerformancePeriodStartDate
PerformancePeriodEndDate
_PurchaseOrderItemMassUpdate _PurchaseOrderItemMassUpdate
_ScheduleLine _ScheduleLine
@VDM.viewType: #CONSUMPTION 
@AccessControl.authorizationCheck:#MANDATORY
@EndUserText.label: 'Mass Changes to Purchase Orders'
@AccessControl.personalData.blocking:  #BLOCKED_DATA_EXCLUDED
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.createEnabled: true
@ObjectModel.updateEnabled: true
@ObjectModel.semanticKey: ['PurchaseOrder']
@Metadata.ignorePropagatedAnnotations: true
@UI.headerInfo:{
typeName: 'Purchase Order Header', 
typeNamePlural: 'Purchase Order Headers'
}

define view entity C_PurchaseOrderMassUpdate
  as select from I_PurchaseOrder
  

  association [0..*] to C_PurchaseOrderItemMassUpdate as _PurchaseOrderItemMassUpdate on $projection.PurchaseOrder = _PurchaseOrderItemMassUpdate.PurchaseOrder

  association [1..*] to C_POMassUpdtDelivSchedItm  as _ScheduleLine             on  $projection.PurchaseOrder     = _ScheduleLine.PurchaseOrder
                                                                                

  association [0..1] to I_PurchaseOrderStatusText as _PurchaseOrderStatus on $projection.PurchaseOrder = _PurchaseOrderStatus.PurchaseOrder
  
  //TODO: remove after testing - I066990

  //association [0..*] to C_PurchaseOrderItemMassUpdate       as _PurchaseOrderItem       on  $projection.PurchaseOrder = _PurchaseOrderItem.PurchaseOrder 

{
      @UI.lineItem: [ {position: 10 }]
      @ObjectModel.filter.enabled: false
      @Consumption.semanticObject: 'PurchaseOrder'
  key PurchaseOrder,

      @ObjectModel.text.element: [ 'SupplierName']
      @Consumption.semanticObject: 'Supplier'
      @UI.lineItem: [ {position: 30 }]
      //@ObjectModel.foreignKey.association: '_Supplier'

      //TODO: remove after testing - I066990

      //@ObjectModel.filter.transformedBy: 'ABAP:CL_MM_PUR_PO_MASS_FILTERS'

      Supplier,
      @UI.hidden: true
      I_PurchaseOrder._Supplier.SupplierName,

      @ObjectModel.text.element: [ 'CompanyCodeName']
      @Consumption.semanticObject: 'CompanyCode'
      @UI.lineItem: [ {position: 80 }]
      //            @ObjectModel.foreignkey.association: '_CompanyCode'

      CompanyCode,

      @UI.hidden: true
      I_PurchaseOrder._CompanyCode.CompanyCodeName,

      @ObjectModel.text.element: [ 'PurchasingOrganizationName']
      @EndUserText.label: 'Purchasing Organization'
      @Consumption.semanticObject: 'PurchasingOrganization'
      @UI.lineItem: [ {position: 70 }]
      //      @ObjectModel.foreignKey.association: '_PurchasingOrganization'

      PurchasingOrganization,
      @UI.hidden: true
      I_PurchaseOrder._PurchasingOrganization.PurchasingOrganizationName,

      @ObjectModel.text.element: [ 'PurchasingGroupName']
      @Consumption.semanticObject: 'PurchasingGroup'
      @UI.lineItem: [ {position: 60 }]
      //      @ObjectModel.foreignKey.association: '_PurchasingGroup'

      PurchasingGroup,

      @UI.hidden: true
      I_PurchaseOrder._PurchasingGroup.PurchasingGroupName,

      @Consumption: {  filter:{ selectionType: #INTERVAL, multipleSelections: false} }
      @UI.lineItem: [ {position: 50 }]
      @EndUserText.label: 'Order Date'
      PurchaseOrderDate,

      @EndUserText.label: 'Order Type'
      @ObjectModel.text.element: [ 'PurchasingDocumentTypeName']
      @UI.lineItem: [ {position: 20 }]
      //      @ObjectModel.foreignKey.association: '_PurchaseOrderType'

      PurchaseOrderType,
      @UI.hidden: true
      _PurchaseOrderType._Text[1:Language = $session.system_language].PurchasingDocumentTypeName,

      @ObjectModel.text.element: [ 'PaymentTermsName']
      @EndUserText.label: 'Terms of Payment'
      //      @ObjectModel.foreignKey.association: '_PaymentTerms'

      PaymentTerms,
      @UI.hidden: true
      _PaymentTerms._Text[1:Language = $session.system_language].PaymentTermsName,

      @ObjectModel.text.element: [ 'IncotermsClassificationName']
      @EndUserText.label: 'Incoterms (Header)'
      //      @ObjectModel.foreignKey.association: '_IncotermsClassification'

      I_PurchaseOrder.IncotermsClassification,
      @UI.hidden: true
      _IncotermsClassification._Text[1:Language = $session.system_language].IncotermsClassificationName,

      @ObjectModel.text.element: [ 'InvoicingPartyName']
      //      @ObjectModel.foreignKey.association: '_InvoicingParty'

      InvoicingParty,
      @UI.hidden: true
      I_PurchaseOrder._InvoicingParty.SupplierFullName               as InvoicingPartyName,

      @ObjectModel.text.element: [ 'PurchasingDocumentStatusName']
      @EndUserText.label: 'Order Status'
      @UI.textArrangement: #TEXT_ONLY
      @UI.lineItem: [ {position: 40 }]
      // @ObjectModel.foreignKey.association: '_PurchaseOrderStatus'

      _PurchaseOrderStatus.PurchasingDocumentStatus,
      @UI.hidden: true
      _PurchaseOrderStatus.PurchasingDocumentStatusName,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Day 1 / In Percent'
      CashDiscount1Days,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Day 2 / In Percent'
      CashDiscount2Days,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Days Net'
      NetPaymentDays,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Discount Percentage 1'
      CashDiscount1Percent,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Discount Percentage 2'
      CashDiscount2Percent,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Exchange Rate'
      ExchangeRate,

      @Consumption.filter.hidden: true
      DocumentCurrency,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Validity Period Start'
      ValidityStartDate,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Validity Period End'
      ValidityEndDate,

      @Consumption.filter.hidden: true
      SupplierRespSalesPersonName,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Supplier Telephone'
      SupplierPhoneNumber,

      @Consumption.filter.hidden: true
      @ObjectModel.text.element: [ 'SupplierFullName']
      //      @ObjectModel.foreignKey.association: '_SupplyingSupplier'

      SupplyingSupplier,

      @UI.hidden: true
      I_PurchaseOrder._SupplyingSupplier.SupplierFullName,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Incoterm Location 1 (Header)'
      IncotermsLocation1                             as HeaderIncotermsLoc1,

      @Consumption.filter.hidden: true
      @EndUserText.label: 'Incoterm Location 2 (Header)'
      IncotermsLocation2                             as HeaderIncotermsLoc2,

      @Consumption.filter.hidden: true
      @ObjectModel.text.element: [ 'IncotermsVersionName']
      @EndUserText.label: 'Incoterms Version (Header)'
      // @ObjectModel.foreignKey.association: '_IncotermsVersion'

      IncotermsVersion,

      @UI.hidden: true
      _IncotermsVersion._Text[1:Language = $session.system_language].IncotermsVersionName,
      
      @UI.hidden: true
      @Consumption.filter.hidden: true
      cast('' as mm_vdm_single_sched)                            as AllItemsHaveSingleScheduleLine,
      //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      //The following fields are filter level item fields. They've been casted '' for resolving the info prompt shown

      //by the UI framework on the search results of the header table.

      //--------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      cast ('' as matkl)                             as MaterialGroup,

      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      cast ('' as ewerk)                             as Plant,

      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      cast ('' as matnr)                             as Material,

      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      @EndUserText.label: 'Account Assignment Category'
      cast ('' as knttp)                             as AccountAssignmentCategory,

      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      cast ('' as vdm_itemcategory)                  as PurchaseOrderItemCategory,

      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      cast ('' as eloek)                             as PurchasingDocumentDeletionCode,
      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      cast ('00000000' as eindt)                     as ScheduleLineDeliveryDate,
      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      @Consumption: {  filter:{ selectionType: #INTERVAL, multipleSelections: false} }
      cast('00000000' as performanceperiodstartdate) as PerformancePeriodStartDate,
      @ObjectModel.virtualElement:true
      @ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER'
      @Consumption: {  filter:{ selectionType: #INTERVAL, multipleSelections: false} }
      cast('00000000' as mmpur_servproc_period_end)  as PerformancePeriodEndDate,
     // @ObjectModel.virtualElement:true

      //@ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER' 

     // cast ('0' as etmen)                     as ScheduleLineOrderQuantity,

      //@ObjectModel.virtualElement:true

      //@ObjectModel.filter.transformedBy: 'CL_MM_PUR_POMASS_UPDAT_FILTER' 

      //cast ('' as bstme)                     as PurchaseOrderQuantityUnit,

      
      //TODO: remove after testing - I066990

     // @ObjectModel.filter.transformedBy: 'ABAP:CL_MM_PUR_PO_MASS_FILTERS'

     // cast( '' as abap.sstring( 260 ) )                                          as ManufacturerMaterial


      //// Association for text fields

      //            _Supplier,

      //            _CompanyCode,

      //            _PurchasingOrganization,

      //      _PurchasingGroup,

      //      _PurchaseOrderType,

      //      _PaymentTerms,

      //      _IncotermsClassification,

      //      _InvoicingParty,

      //      _PurchaseOrderStatus,

      //      _SupplyingSupplier,

      //      _IncotermsVersion

      _PurchaseOrderItemMassUpdate,
      _ScheduleLine
     
       
      //_PurchaseOrderItemMassUpdate._ScheduleLine 

}

where
      I_PurchaseOrder.PurchasingDocumentDeletionCode <> 'L' // Do not display if Header is Marked for Deletion

  and I_PurchaseOrder.PurchasingDocumentDeletionCode <> 'S' // Do not display if the Header is Blocked

  and(
    (
      Supplier                                       =  ' '
    )
    or(
      I_PurchaseOrder._Supplier.IsBusinessPurposeCompleted           <> 'X'
    )
  )