@ClientHandling.algorithm: #SESSION_VARIABLE
@AbapCatalog.sqlViewName: 'CPOMASSUPDATE'
@AbapCatalog.compiler.compareFilter: true
@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 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
_Supplier.SupplierName,
@ObjectModel.text.element: 'CompanyCodeName'
@Consumption.semanticObject: 'CompanyCode'
@UI.lineItem.position: 80
// @ObjectModel.foreignkey.association: '_CompanyCode'
CompanyCode,
@UI.hidden: true
_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
_PurchasingOrganization.PurchasingOrganizationName,
@ObjectModel.text.element: 'PurchasingGroupName'
@Consumption.semanticObject: 'PurchasingGroup'
@UI.lineItem.position: 60
// @ObjectModel.foreignKey.association: '_PurchasingGroup'
PurchasingGroup,
@UI.hidden: true
_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
_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
_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,
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//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(
_Supplier.IsBusinessPurposeCompleted <> 'X'
)
)
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_COMPANYCODE",
"I_INCOTERMSCLASSIFICATION",
"I_INCOTERMSCLASSIFICATIONTEXT",
"I_INCOTERMSVERSION",
"I_INCOTERMSVERSIONTEXT",
"I_PAYMENTTERMS",
"I_PAYMENTTERMSTEXT",
"I_PURCHASEORDER",
"I_PURCHASEORDERSTATUSTEXT",
"I_PURCHASINGDOCUMENTTYPE",
"I_PURCHASINGDOCUMENTTYPETEXT",
"I_PURCHASINGGROUP",
"I_PURCHASINGORGANIZATION",
"I_SUPPLIER"
],
"ASSOCIATED":
[
"C_POMASSUPDTDELIVSCHEDITM",
"C_PURCHASEORDERITEMMASSUPDATE",
"I_PURCHASEORDERSTATUSTEXT"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/