@AbapCatalog.sqlViewName: 'CCUST360ISSUES'
@AbapCatalog.compiler.compareFilter: true
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #BLOCKED_DATA_EXCLUDED
@EndUserText.label: 'Customer 360 Issues'
@VDM.viewType: #CONSUMPTION
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.usageType.serviceQuality: #D
@ObjectModel.usageType.sizeCategory: #S
@UI.headerInfo: {
typeName: 'Fulfillment Issue',
typeNamePlural: 'Fulfillment Issues'
}
@ObjectModel.semanticKey: [ 'SalesDocument' ]
@Search.searchable: true
@UI.presentationVariant:{
sortOrder: [
{ by: 'DueDays', direction: #ASC },
{ by: 'SalesDocument', direction: #DESC } ],
requestAtLeast: ['SDDocumentCategory']
}
define view C_Customer360_Issues
as select from I_SalesDocument as SalesDocument --AT12.8.2019: no longer usage of "old" C_SalesOrderFulfillmentIssueQ for performance & consistency reasons
inner join I_SalesOrderFlfmtIssueBasic as Issue on SalesDocument.SalesDocument = Issue.SalesOrder
and SalesDocument.SalesOrganization = Issue.SalesOrganization
and SalesDocument.DistributionChannel = Issue.DistributionChannel
and SalesDocument.OrganizationDivision = Issue.OrganizationDivision
--AT16.4.2018 added further join criteria to enable filter push-down into both sides
and SalesDocument.RequestedDeliveryDate = Issue.RequestedDeliveryDate
and SalesDocument.SalesGroup = Issue.SalesGroup
and SalesDocument.SalesOffice = Issue.SalesOffice
and SalesDocument.SoldToParty = Issue.SoldToParty
--and SalesDocument.PurchaseOrderByCustomer = Issue.PurchaseOrderByCustomer --AT11.08.2020 VBKD-BSTKD no longer provided by issues (no true hdr attribute & too expensive)
association [0..*] to C_SalesDocumentItemWl as _SalesDocumentItemWl on $projection.SalesDocument = _SalesDocumentItemWl.SalesDocument
{
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.9
@Search.ranking: #HIGH
@UI.lineItem:[{position:20, importance:#HIGH}]
key cast(SalesDocument.SalesDocument as vbeln_va preserving type) as SalesDocument,
@EndUserText.label: 'Issue Category'
@UI.lineItem:[{position:30, importance:#HIGH}]
key concat (concat (concat (
cast (
case when NmbrOfIssuesInOrder = 1 then
Issue.IssueCategoryName else '' end as sstring ),
cast (
case when NmbrOfIssuesInDelivery = 1 then
Issue.IssueCategoryName else '' end as sstring )),
cast(
case when NmbrOfIssuesInInvoice = 1 then
Issue.IssueCategoryName else '' end as sstring )),
cast(
case when NmbrOfIssuesInSupply = 1 then
Issue.IssueCategoryName else '' end as sstring ))
as IssueCategoryName,
@EndUserText.label: 'Next Action in Days'
@UI.lineItem:[{position:10, importance:#HIGH, criticality: 'DueDateCriticality'}]
key min(Issue.DueDays) as DueDays,
//min(DueDateStatus) as DueDateStatus,
@UI.hidden: true
min( case when DueDays < 0
then cast('1' as valid_to_criticality )
else
case when DueDays = 0
then cast('2' as valid_to_criticality )
else cast('3' as valid_to_criticality )
end
end )
as DueDateCriticality,
@EndUserText.label: 'Total No of Issues'
@UI.lineItem:[{position:40, importance:#HIGH}]
count(*) as NmbrOfAllIssues,
@UI.hidden : true
SalesDocument.SoldToParty,
@UI.lineItem:[{position:50, importance:#LOW}]
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
SalesDocument.PurchaseOrderByCustomer,
@DefaultAggregation: #NONE
@Semantics.amount.currencyCode: 'TransactionCurrency'
@UI.lineItem:[{position:60, importance:#LOW}]
SalesDocument.TotalNetAmount,
//@Semantics.currencyCode: true
SalesDocument.TransactionCurrency,
@UI.lineItem:[{position:80, importance:#MEDIUM}]
SalesDocument.RequestedDeliveryDate,
@UI.hidden : true
SalesDocument.SalesDocumentType,
@UI.hidden : true
SalesDocument.SalesOrganization,
@UI.hidden : true
SalesDocument.DistributionChannel,
@UI.hidden : true
SalesDocument.OrganizationDivision,
@UI.hidden: true
SDDocumentCategory,
_TransactionCurrency,
@Search.defaultSearchElement: true
_SalesDocumentItemWl
}
where IsPotentialFutureIssue = '0'
group by SalesDocument.SalesDocument, SalesDocument.SoldToParty, SalesDocument.PurchaseOrderByCustomer, SalesDocument.TotalNetAmount,
SalesDocument.TransactionCurrency, SalesDocument.RequestedDeliveryDate, SalesDocument.SDDocumentCategory,
Issue.NmbrOfIssuesInOrder, Issue.NmbrOfIssuesInDelivery, Issue.NmbrOfIssuesInInvoice, Issue.NmbrOfIssuesInSupply,
Issue.IssueCategoryName,
SalesDocument.SalesDocumentType, SalesDocument.SalesOrganization, SalesDocument.DistributionChannel, SalesDocument.OrganizationDivision ;
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_SALESDOCUMENT",
"I_SALESORDERFLFMTISSUEBASIC"
],
"ASSOCIATED":
[
"C_SALESDOCUMENTITEMWL",
"I_CURRENCY"
],
"BASE":
[
"I_SALESDOCUMENT"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/