@AbapCatalog.sqlViewName: 'CREQTRACKPO'
@AbapCatalog.compiler.compareFilter: true
@VDM.viewType: #CONSUMPTION
@AccessControl.authorizationCheck: #MANDATORY
@EndUserText.label: 'Purchase Orders by Requirement Tracking'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.usageType.dataClass: #TRANSACTIONAL
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.semanticKey: [ 'Material', 'Supplier' ]
@Search.searchable: true
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
@VDM.lifecycle.contract.type:#NONE
define view C_RequirementTrackingPurOrd
as select from I_PurchaseOrderItem
association [1..1] to P_PurReqTrkAggrGRInv as _PurReqTrkAggrGRInv on _PurReqTrkAggrGRInv.PurchaseOrder = $projection.PurchaseOrder
and _PurReqTrkAggrGRInv.PurchaseOrderItem = $projection.PurchaseOrderItem
association [1..1] to I_PurchasingCategoryMatlGroup as _PurchasingCategoryMatlGrp on $projection.MaterialGroup = _PurchasingCategoryMatlGrp.MaterialGroup
association [1..1] to R_POItemNextDeliveryCalc as _POItemNextDeliveryCalc on $projection.PurchaseOrder = _POItemNextDeliveryCalc.PurchaseOrder
and $projection.PurchaseOrderItem = _POItemNextDeliveryCalc.PurchaseOrderItem
association [1..1] to R_POItemEnhcdNextDeliveryCalc as _POItemEnhcdNextDeliveryCalc on $projection.PurchaseOrder = _POItemEnhcdNextDeliveryCalc.PurchaseOrder
and $projection.PurchaseOrderItem = _POItemEnhcdNextDeliveryCalc.PurchaseOrderItem
association [1..1] to I_PurgAnalyticsConfiguration as _AnalyticalConfiguration on _AnalyticalConfiguration.IsIntrastatReportingRelevant = 'X'
association [0..1] to C_MM_AccountAssignCatValueHelp as _AccAssignValHelp on _AccAssignValHelp.AccountAssignmentCategory = $projection.AccountAssignmentCategory
//association [1..1] to I_ProcurementDomainValues as _DomainText on _DomainText.Name = 'VDM_BLOCKED_SUPPLIER'
// and _DomainText.Language = $session.system_language
// and _DomainText.DomainValue = 'X'
association [1..1] to I_ProcmtBlockedSupplier as _ProcmtBlockedSupplier on _ProcmtBlockedSupplier.PurchasingIsBlockedForSupplier = 'X' //$projection.PurchasingIsBlocked
association [1..1] to I_Supplier as _Supplier on $projection.supplier = _Supplier.Supplier
association [1..1] to I_PurchasingOrganization as _PurchasingOrganization on $projection.purchasingorganization = _PurchasingOrganization.PurchasingOrganization
association [1..1] to I_PurchasingGroup as _PurchasingGroup on $projection.purchasinggroup = _PurchasingGroup.PurchasingGroup
{
@EndUserText.label: 'Purchase Order'
@Consumption.semanticObject: 'PurchaseOrder'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
key PurchaseOrder,
@EndUserText.label: 'Item'
@Consumption.semanticObject: 'PurchaseOrderItem'
key PurchaseOrderItem,
@EndUserText.label: 'Purchase Order Item'
@UI.lineItem.position: 10
concat(PurchaseOrder, concat('/', PurchaseOrderItem)) as FormattedPurchaseOrderItem,
@EndUserText.label: 'Requirement Tracking Number'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
RequirementTracking, //Req. Tracking Number
@UI.lineItem.position: 20
@Consumption.semanticObject: 'Material'
//@ObjectModel: { text.element: [ 'MaterialName' ] }
@ObjectModel.foreignKey.association: '_Material'
Material,
// @UI.hidden: true
// @EndUserText: {
// label: 'Material Description'
// }
// _Material._Text[1: Language = $session.system_language].MaterialName,
@UI.lineItem.position: 50
@EndUserText.label: 'Order Quantity'
@Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
cast(OrderQuantity as vdm_po_orderquantity) as OrderQuantity,
@UI.hidden: true
PurchaseOrderQuantityUnit, //Order Unit
@UI.hidden: true
OrderPriceUnit,
@UI.lineItem.position: 60
@EndUserText.label: 'Net Order Value'
@Semantics.amount.currencyCode: 'DocumentCurrency'
cast(NetAmount as vdm_ponetamount) as NetAmount,
@UI.hidden: true
@EndUserText.label: 'Document Currency'
@Semantics.currencyCode: true
DocumentCurrency,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
@UI.lineItem.position: 30
@Consumption.semanticObject: 'Supplier'
// @ObjectModel: { text.element: [ 'SupplierName' ] }
@ObjectModel.foreignKey.association: '_Supplier'
_PurchaseOrder.Supplier,
// @UI.hidden: true
// @EndUserText: {
// label: 'Supplier Name'
// }
// _PurchaseOrder._Supplier.SupplierName,
// @Consumption.semanticObject: 'MaterialGroup'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
// @ObjectModel: { text.element: [ 'MaterialGroupName' ] }
@ObjectModel.foreignKey.association: '_MaterialGroup'
MaterialGroup,
// @UI.hidden: true
// @EndUserText: {
// label: 'Material Group Description'
// }
// I_PurchaseOrderItem._MaterialGroup._Text[1: Language = $session.system_language ].MaterialGroupName,
PurchaseOrderItemText as PurchasingText, //short text
// @Consumption.semanticObject: 'PurchasingOrganization'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
//@ObjectModel: { text.element: [ 'PurchasingOrganizationName' ] }
@EndUserText.label: 'Purchasing Organization'
@ObjectModel.foreignKey.association: '_PurchasingOrganization'
_PurchaseOrder.PurchasingOrganization, //Purch. Organization
// @UI.hidden: true
// @EndUserText: {
// label: 'Purchasing Organization Name'
// }
// _PurchaseOrder._PurchasingOrganization.PurchasingOrganizationName,
// @Consumption.semanticObject: 'PurchasingGroup'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
//@ObjectModel: { text.element: [ 'PurchasingGroupName' ] }
@ObjectModel.foreignKey.association: '_PurchasingGroup'
_PurchaseOrder.PurchasingGroup,
// @UI.hidden: true
// @EndUserText: {
// label: 'Purchasing Group Name'
// }
// _PurchaseOrder._PurchasingGroup.PurchasingGroupName,
// @Consumption.semanticObject: 'Plant'
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
// @ObjectModel: { text.element: [ 'PlantName' ] }
@ObjectModel.foreignKey.association: '_Plant'
Plant,
// @UI.hidden: true
// @EndUserText: {
// label: 'Plant Name'
// }
// _Plant.PlantName,
@EndUserText.label: 'Account Assignment Category'
//@ObjectModel: { text.element: [ 'AcctAssignmentCategoryName' ] }
@ObjectModel.foreignKey.association: '_AccAssignValHelp'
AccountAssignmentCategory, //Acct Assignment Cat.
// @UI.hidden: true
// @EndUserText: {
// label: 'Account Assignment Category Description'
// }
// _AccAssignValHelp.AcctAssignmentCategoryName,
//@ObjectModel: { text.element: [ 'CompanyCodeName' ] }
// @Consumption.semanticObject: 'CompanyCode'
@ObjectModel.foreignKey.association: '_CompanyCode'
CompanyCode,
// @UI.hidden: true
// @EndUserText: {
// label: 'Company Name'
// }
// I_PurchaseOrderItem._CompanyCode.CompanyCodeName,
//@ObjectModel: { text.element: [ 'StorageLocationName' ] }
// @Consumption.semanticObject: 'StorageLocation'
@ObjectModel.foreignKey.association: '_StorageLocation'
StorageLocation,
// @UI.hidden: true
// @EndUserText: {
// label: 'Storage Location Name'
// }
// _StorageLocation.StorageLocationName,
@ObjectModel.text.element: [ 'PurgCatName' ]
// @ObjectModel.foreignKey.association: '_PurchasingCategory'
_PurchasingCategoryMatlGrp._PurchasingCategory.PurchasingCategory as PurchasingCategory,
@Semantics.text: true
@UI.hidden: true
@EndUserText: {
label: 'Purchasing Category Name'
}
_PurchasingCategoryMatlGrp._PurchasingCategory.PurgCatName,
@EndUserText.label: 'Purchasing Document Type'
@ObjectModel: { text.element: [ 'PurchasingDocumentTypeName' ] }
// @ObjectModel.foreignKey.association: '_PurchaseOrder'
_PurchaseOrder._PurchaseOrderType.PurchasingDocumentType,
@EndUserText.label: 'Purchasing Document Category'
_PurchaseOrder._PurchaseOrderType.PurchasingDocumentCategory,
@UI.hidden: true
@EndUserText: {
label: 'Document Type Description'
}
_PurchaseOrder._PurchaseOrderType._Text[1: Language = $session.system_language ].PurchasingDocumentTypeName,
@EndUserText.label: 'Item Category'
@ObjectModel: { text.element: [ 'PurgDocItemCategoryName' ] }
//@ObjectModel.foreignKey.association: '_PurgDocumentItemCategory'
_PurgDocumentItemCategory._Text[1: Language = $session.system_language].PurgDocExternalItemCategory, //as PurchasingDocumentItemCategory,
@UI.hidden: true
PurchaseOrderItemCategory, //Item category
@UI.hidden: true
@EndUserText: {
label: 'Item Category Text'
}
_PurgDocumentItemCategory._Text[1: Language = $session.system_language ].PurgDocItemCategoryName,
_PurchaseOrder.PurchaseOrderDate,
@ObjectModel.text.element: [ 'UserDescription' ]
@UI.hidden: true
//@ObjectModel.foreignKey.association: '_CreatedByUser'
_PurchaseOrder.CreatedByUser,
@EndUserText.label: 'Created By'
@Semantics.text: true
_PurchaseOrder._CreatedByUser.UserDescription,
@Semantics.amount.currencyCode: 'DocumentCurrency'
NetPriceAmount,
@UI.lineItem.position: 40
@UI.lineItem.criticality: 'DueDateCriticality'
@UI.lineItem.criticalityRepresentation: #WITHOUT_ICON
// cast(_POItemNextDeliveryCalc.ScheduleLineDeliveryDate as vdm_schedulelinedeliverydate) as ScheduleLineDeliveryDate,
//ScheduleLine Delivery Date calculation
cast(case when (GoodsReceiptIsExpected <> 'X' or IsCompletelyDelivered = 'X'
or PurchaseOrderItemCategory = 'A' ) --> A => Enhanced Limit
then '00000000'
when _AnalyticalConfiguration.IsIntrastatReportingRelevant = 'X'
then _POItemEnhcdNextDeliveryCalc.ScheduleLineDeliveryDate
else _POItemNextDeliveryCalc.ScheduleLineDeliveryDate
end as vdm_schedulelinedeliverydate) as ScheduleLineDeliveryDate,
@UI.hidden: true
case
when _AnalyticalConfiguration.IsIntrastatReportingRelevant = 'X'
then case when _POItemEnhcdNextDeliveryCalc.ScheduleLineDeliveryDate < $session.system_date
then 1
else 0
end
else case when _POItemNextDeliveryCalc.ScheduleLineDeliveryDate < $session.system_date
then 1
else 0
end
end as DueDateCriticality,
// case
// when _POItemNextDeliveryCalc.ScheduleLineDeliveryDate < $session.system_date
// then 1
// else 0
// end as DueDateCriticality,
@UI.lineItem.position: 90
@Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
cast(_POItemNextDeliveryCalc.ScheduleLineOpenQuantity as vdm_openpurchaseorderquantity) as OpenPurchaseOrderQuantity,
@EndUserText.label: 'Supplier Block Status'
cast(case when _PurchaseOrder._Supplier.PurchasingIsBlocked = 'X'
then _ProcmtBlockedSupplier._Text[1: Language = $session.system_language ].SupplierName
else ''
end as vdm_purblockforsupplier) as PurchasingIsBlockedForSupplier,
@Semantics.quantity.unitOfMeasure: 'OrderPriceUnit'
@EndUserText.label: 'Price Unit'
cast(NetPriceQuantity as vdm_netpricequantity) as NetPriceQuantity,
_PurchaseOrder.CreationDate,
@EndUserText.label: 'Delivered Quantity'
@Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
cast(case
when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then cast(0 as abap.quan(13,3))
else _PurReqTrkAggrGRInv.GoodsReceiptQty
end as vdm_goodsreceiptqty) as GoodsReceiptQty,
@Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
@UI.lineItem.position: 70
cast(case
when IsCompletelyDelivered <> ' ' or GoodsReceiptIsExpected = ' '
then cast (0 as abap.quan(13,3))
else
case IsReturnsItem
when 'X' then
case
when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then -1 * OrderQuantity
else -1 * cast((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty) as abap.quan(13,3))
end
else
case
when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then OrderQuantity
else cast((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty) as abap.quan(13,3))
end
end
end as vdm_stilltobedeliveredquantity) as StillToBeDeliveredQuantity,
@EndUserText.label: 'Delivered Value'
@Semantics.amount.currencyCode: 'DocumentCurrency'
cast(case
when _PurReqTrkAggrGRInv.GoodsReceiptAmountInDspCrcy is null
then cast(0 as abap.curr(18, 2))
else _PurReqTrkAggrGRInv.GoodsReceiptAmountInDspCrcy
end as vdm_goodsreceipt) as GoodsReceiptAmountInDspCrcy,
@Semantics.amount.currencyCode: 'DocumentCurrency'
cast(case when IsCompletelyDelivered <> ' ' or GoodsReceiptIsExpected = ' ' or OrderQuantity = 0 or NetPriceAmount = 0 // 2939255
or NetPriceQuantity = 0 //Fix - ATC - Division by 0
then cast(0 as abap.curr(18, 2))
else
case IsReturnsItem
when 'X' then
case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then -1 * cast((division(OrderQuantity,NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255
else -1 * cast((division((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty),NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255
end
else
case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then cast((division(OrderQuantity,NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255
else cast((division((OrderQuantity - _PurReqTrkAggrGRInv.GoodsReceiptQty),NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255
end
end
end as vdm_stilltobedeliveredvalue) as StillToBeDeliveredValue,
@EndUserText.label: 'Invoice Quantity'
@Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
cast(case
when _PurReqTrkAggrGRInv.InvoiceReceiptQty is null
then cast(0 as abap.quan(13,3))
else _PurReqTrkAggrGRInv.InvoiceReceiptQty
end as vdm_invoicereceiptqty) as InvoiceReceiptQty,
@Semantics.quantity.unitOfMeasure: 'PurchaseOrderQuantityUnit'
cast(case when IsFinallyInvoiced = 'X' or InvoiceIsExpected = ' '
then cast(0 as abap.quan(13,3))
else case when GoodsReceiptIsExpected = 'X' and (IsCompletelyDelivered <> ' ' or _PurReqTrkAggrGRInv.GoodsReceiptQty > OrderQuantity)
then
case IsReturnsItem
when 'X' then -1 * cast(abs(_PurReqTrkAggrGRInv.GoodsReceiptQty) - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty)as abap.quan(13,3))
else cast(abs(_PurReqTrkAggrGRInv.GoodsReceiptQty) - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty)as abap.quan(13,3))
end
else
case IsReturnsItem
when 'X' then
case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then -1 * OrderQuantity
else -1 * cast(OrderQuantity - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty) as abap.quan(13,3))
end
else
case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then OrderQuantity
else cast(OrderQuantity - abs(_PurReqTrkAggrGRInv.InvoiceReceiptQty) as abap.quan(13,3))
end
end
end
end as vdm_stilltoinvoicequantity) as StillToInvoiceQuantity,
@Semantics.amount.currencyCode: 'DocumentCurrency'
cast(case
when _PurReqTrkAggrGRInv.InvoicedAmountInDspCurrency is null
then cast(0 as abap.curr(18, 2))
else _PurReqTrkAggrGRInv.InvoicedAmountInDspCurrency
end as vdm_invoicevalue) as InvoicedAmountInDspCurrency,
@Semantics.amount.currencyCode: 'DocumentCurrency'
@UI.lineItem.position: 80
cast(case when IsFinallyInvoiced = 'X' or InvoiceIsExpected = ' ' or NetPriceAmount = 0 // 2939255
or NetPriceQuantity = 0 //BCP Internal Incident: 2280087629
then cast(0 as abap.curr(18, 2))
else case when GoodsReceiptIsExpected = 'X' and (IsCompletelyDelivered <> ' ' or _PurReqTrkAggrGRInv.GoodsReceiptQty > OrderQuantity)
then cast((division((_PurReqTrkAggrGRInv.GoodsReceiptQty - _PurReqTrkAggrGRInv.InvoiceReceiptQty),NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255
else case when _PurReqTrkAggrGRInv.GoodsReceiptQty is null
then cast((division(OrderQuantity,NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255
else cast((division((OrderQuantity - _PurReqTrkAggrGRInv.InvoiceReceiptQty),NetPriceQuantity,3) * NetPriceAmount) as abap.curr(18, 2)) // 2939255
end
end
end as vdm_stilltoinvoicevalue) as StillToInvoiceValue,
//ItemCount
_PurchasingCategoryMatlGrp,
_AccAssignValHelp,
// _ProcmtBlockedSupplier
_Material,
_MaterialGroup,
_Plant,
_CompanyCode,
_StorageLocation,
_Supplier,
_PurchasingOrganization,
_PurchasingGroup
// _CreatedByUser
// _PurgDocumentItemCategory
}
where
// PurchaseOrderItem.PurchasingDocumentCategory = 'F'
_PurchaseOrder.PurchasingDocumentDeletionCode = ''
and I_PurchaseOrderItem.PurchasingDocumentDeletionCode = ''
and I_PurchaseOrderItem.IsCompletelyDelivered = ''
and(
(
I_PurchaseOrderItem._PurchaseOrder._Supplier.IsBusinessPurposeCompleted <> 'X'
)
or(
I_PurchaseOrderItem._PurchaseOrder.Supplier = ' '
)
)
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PROCMTBLOCKEDSUPPLIER",
"I_PROCMTBLOCKEDSUPPLIERTXT",
"I_PURCHASEORDER",
"I_PURCHASEORDERITEM",
"I_PURCHASINGCATEGORY",
"I_PURCHASINGCATEGORYMATLGROUP",
"I_PURCHASINGDOCUMENTTYPE",
"I_PURCHASINGDOCUMENTTYPETEXT",
"I_PURGANALYTICSCONFIGURATION",
"I_PURGDOCUMENTITEMCATEGORY",
"I_PURGDOCUMENTITEMCATEGORYTEXT",
"I_SUPPLIER",
"I_USER",
"P_PURREQTRKAGGRGRINV",
"R_POITEMENHCDNEXTDELIVERYCALC",
"R_POITEMNEXTDELIVERYCALC"
],
"ASSOCIATED":
[
"C_MM_ACCOUNTASSIGNCATVALUEHELP",
"I_COMPANYCODE",
"I_MATERIAL",
"I_MATERIALGROUP",
"I_PLANT",
"I_PROCMTBLOCKEDSUPPLIER",
"I_PURCHASINGCATEGORYMATLGROUP",
"I_PURCHASINGGROUP",
"I_PURCHASINGORGANIZATION",
"I_PURGANALYTICSCONFIGURATION",
"I_STORAGELOCATION",
"I_SUPPLIER",
"P_PURREQTRKAGGRGRINV",
"R_POITEMENHCDNEXTDELIVERYCALC",
"R_POITEMNEXTDELIVERYCALC"
],
"BASE":
[
"I_PURCHASEORDERITEM"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/