@AbapCatalog.sqlViewName: 'CSUPCONFOVP'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@EndUserText.label: 'Monitor Supplier Confirmations'
@Search.searchable: true
@VDM.viewType: #CONSUMPTION
@AccessControl.personalData.blocking: #NOT_REQUIRED
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #L
@ObjectModel.usageType.dataClass: #MIXED
define view C_MonitorSupplierConfirmation
with parameters
//@Consumption.valueHelpDefinition: [{ entity: { name : 'I_Currency', element : 'DisplayCurrency' } }]
P_DisplayCurrency : vdm_v_display_currency
as select distinct from P_PurgDocSchedline
left outer join I_PurchasingCategoryMatlGroup as PurchasingCategoryMatlGroup on P_PurgDocSchedline.MaterialGroup = PurchasingCategoryMatlGroup.MaterialGroup
association [1..1] to P_QuantityVarienceCal as _CommittedQuantityView on $projection.PurchasingDocument = _CommittedQuantityView.PurchasingDocument
and $projection.PurchasingDocumentItem = _CommittedQuantityView.PurchasingDocumentItem
and $projection.ScheduleLine = _CommittedQuantityView.ScheduleLine
association [0..1] to P_ConfirmationDate as _Confirmation on $projection.PurchasingDocument = _Confirmation.PurchasingDocument
and $projection.PurchasingDocumentItem = _Confirmation.PurchasingDocumentItem
association [1..1] to I_UnitOfMeasure as _UnitOfMeasure on _UnitOfMeasure.UnitOfMeasure = 'TAG'
{
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
@UI:{lineItem:[{position:10,importance: #HIGH},{position:30,importance:#HIGH,qualifier: 'CharacteristicsTab'}] }
key PurchasingDocument,
@UI:{lineItem:[{position:20,importance: #HIGH},{position:10,importance:#HIGH,qualifier: 'CharacteristicsTab'}] }
key PurchasingDocumentItem,
key ScheduleLine,
cast(concat(concat(PurchasingDocument, '/'), PurchasingDocumentItem) as abap.char(16)) as FormattedPurchasingDocItem,
// Requested Delivery Date
@UI:{lineItem:[{position:30,importance: #HIGH},{position:20,importance:#HIGH,qualifier: 'CharacteristicsTab'}] }
//DeliveryDate as DeliveryDate, //The GFN change from ScheduleLineDeliveryDate --> DeliveryDate has been made to support navigation. TODO: Revert this change in 2002
ScheduleLineDeliveryDate,
@UI.hidden: true
_Confirmation.OrderConfirmationDate as EarliestConfirmationDate,
//@Semantics.quantity.unitOfMeasure: 'UnitOfMeasureName'
DATS_DAYS_BETWEEN (ScheduleLineDeliveryDate, _Confirmation.OrderConfirmationDate) as TimeVarianceInDays,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
@UI:{lineItem:[{position:40,importance:#HIGH,qualifier: 'CharacteristicsTab'}] }
@ObjectModel.text.element: [ 'SupplierName' ]
Supplier,
SupplierName,
// @Semantics.unitOfMeasure: true
// @ObjectModel.text.element: ['UnitOfMeasureName']
// _UnitOfMeasure.UnitOfMeasure,
@Semantics.text: true
_UnitOfMeasure._Text[1: Language = $session.system_language].UnitOfMeasureName,
SupplierConfirmationCategory,
//Description
ShortText as PurchasingDocumentItemText,
@Semantics.amount.currencyCode: 'DisplayCurrency'
NetAmount,
@Semantics.currencyCode: true
DocumentCurrency as DocumentCurrency,
@Semantics.unitOfMeasure: true
OrderUnit as PurgDocOrderQuantityUnit,
case when
_Confirmation.OrderConfirmationDate > ScheduleLineDeliveryDate
then
'01'
else
'00'
end as VarianceCalcDataIsRecorded,
/********************************************************************************************************************************************************************
Calculated Fields
**********************************************************************************************************************************************************************/
// Quantity Variance
// Requested Quantity as per scope
@Semantics.quantity.unitOfMeasure: 'PurgDocOrderQuantityUnit'
OrderedQuantity,
_CommittedQuantityView.CommittedQuantity,
division(_CommittedQuantityView.QuantityVarience, OrderedQuantity, 2) *100 as QuantityVarianceInPct,
@Semantics.amount.currencyCode: 'DisplayCurrency'
NetPriceAmount,
@Semantics.currencyCode: true
cast(:P_DisplayCurrency as displaycurrency) as DisplayCurrency,
//@Semantics.quantity.unitOfMeasure: 'DisplayCurrency'
//(OrderedQuantity * NetPriceAmount) as ItemPrice,
//CURRENCY CONVERSION CODE - START
@Semantics.amount.currencyCode: 'DisplayCurrency'
@DefaultAggregation: #SUM
cast( currency_conversion( amount => ItemPrice,
source_currency => DocumentCurrency,
target_currency => $parameters.P_DisplayCurrency ,
exchange_rate_date => DocumentDate,
error_handling => 'KEEP_UNCONVERTED'
) as vdm_ponetamount ) as ItemPrice ,
//CURRENNCY CONVERSION CODE - END
// Blank field needed for not displaying 6th column in UI
// cast(' ' as abap.char(11)) as SchdLnReqdValueInTransCurrency, // field not needed and coming from OVP to support navigation
/*********************************************************************************************************************************************************************************************************************************************************************************
Exposing Filter fileds for Global search function
*********************************************************************************************************************************************************************************************************************************************************************************/
PurchasingDocumentType,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
Plant,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
PurchasingOrganization,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
PurchasingGroup,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
CompanyCode,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
Material,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
P_PurgDocSchedline.MaterialGroup,
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.8 }
PurchasingCategoryMatlGroup._PurchasingCategory.PurchasingCategory as PurchasingCategory
}
where
SupplierConfirmationCategory = 'AB'
and
OrderedQuantity != 0
and
(
BalanceQuantity is null
or(
BalanceQuantity is not null
and OrderedQuantity > BalanceQuantity
)
)
and(
(
Supplier = ' '
)
or(
_Supplier.IsBusinessPurposeCompleted = ' '
)
)
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_PURCHASINGCATEGORY",
"I_PURCHASINGCATEGORYMATLGROUP",
"I_SUPPLIER",
"I_UNITOFMEASURE",
"I_UNITOFMEASURETEXT",
"P_CONFIRMATIONDATE",
"P_PURGDOCSCHEDLINE",
"P_QUANTITYVARIENCECAL"
],
"ASSOCIATED":
[
"I_UNITOFMEASURE",
"P_CONFIRMATIONDATE",
"P_QUANTITYVARIENCECAL"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/