@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@EndUserText.label: 'Customer 360 DMR'
@Metadata.allowExtensions: true
@Search.searchable: true
@ObjectModel: {
usageType: {
dataClass: #MIXED,
serviceQuality: #C,
sizeCategory: #XXL
}
}
@VDM.viewType: #CONSUMPTION
define view entity C_Customer360DebitMemoRequest
as select from I_DebitMemoRequest as DebitMemoRequest
inner join I_Customer360BusDocSetting as Customer360BusDocSetting on Customer360BusDocSetting.BusinessDocumentIsEnabled = 'X'
and Customer360BusDocSetting.Cust360BusDocCategory = 'L'
association [0..1] to C_Dischannelvaluehelp as _DistributionChannel on $projection.SalesOrganization = _DistributionChannel.SalesOrganization
and $projection.DistributionChannel = _DistributionChannel.DistributionChannel
association [0..1] to C_OrgDivisionValueHelp as _Division on $projection.SalesOrganization = _Division.SalesOrganization
and $projection.DistributionChannel = _Division.DistributionChannel
and $projection.OrganizationDivision = _Division.Division
association [0..1] to C_SalesOfficeValueHelp as _SalesOffice on $projection.SalesOrganization = _SalesOffice.SalesOrganization
and $projection.DistributionChannel = _SalesOffice.DistributionChannel
and $projection.OrganizationDivision = _SalesOffice.OrganizationDivision
and $projection.SalesOffice = _SalesOffice.SalesOffice
association [0..1] to C_SalesGroupValueHelp as _SalesGroup on $projection.SalesOffice = _SalesGroup.SalesOffice
and $projection.SalesGroup = _SalesGroup.SalesGroup
association [0..1] to C_DebitMemoRequestTypeVH_F1988 as _DebitMemoRequestType on $projection.DebitMemoRequestType = _DebitMemoRequestType.DebitMemoRequestType
//Only used for CoPilot - NLP
association [0..1] to C_SalesDocumentUserVH as _CreatedByUser on $projection.CreatedByUser = _CreatedByUser.UserID
association [0..1] to C_SalesDocumentUserVH as _LastChangedByUser on $projection.LastChangedByUser = _LastChangedByUser.UserID
// maximal 1 order can be assigned to a project. However, in link table the order ID is not treated as key. Change association to 0..* to avoid Checkman error
association [0..*] to I_CustomerProjectItem as _Project on $projection.ReferenceSDDocument = _Project.CustomerProjectItem
and _Project.CustomerProjectItemType = '0SOH'
association [0..1] to I_CustomerProjectStdVH as _ProjectValueHelp on $projection.CustomerProject = _ProjectValueHelp.CustomerProject
//Extension Association
association [1] to E_SalesDocumentBasic as _Extension on $projection.DebitMemoRequest = _Extension.SalesDocument
{
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
@Search.ranking: #HIGH
@ObjectModel.readOnly: true
@Consumption.semanticObject: 'DebitMemoRequest'
key DebitMemoRequest.DebitMemoRequest as DebitMemoRequest,
@ObjectModel: { text.element: ['SoldToPartyName'] }
DebitMemoRequest.SoldToParty,
@Semantics.text:true
@ObjectModel.virtualElement: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_SD_DMR_UI_PARTNER_UTIL'
cast('' as ad_namtext ) as SoldToPartyName,
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
DebitMemoRequest.PurchaseOrderByCustomer,
DebitMemoRequest.BillingDocumentDate,
@ObjectModel.text.element: ['OverallOrdReltdBillgStsDesc']
DebitMemoRequest.OverallOrdReltdBillgStatus,
@UI.hidden: true
DebitMemoRequest._OverallOrdReltdBillgStatus._Text[1:Language = $session.system_language].OverallOrdReltdBillgStsDesc as OverallOrdReltdBillgStsDesc,
@ObjectModel.text.element: ['OverallSDProcessStatusDesc']
DebitMemoRequest.OverallSDProcessStatus,
@UI.hidden: true
DebitMemoRequest._OverallSDProcessStatus._Text[1:Language = $session.system_language].OverallSDProcessStatusDesc as OverallSDProcessStatusDesc,
@ObjectModel.text.element: ['OvrlSDDocumentRejectionStsDesc']
DebitMemoRequest.OverallSDDocumentRejectionSts,
@UI.hidden: true
DebitMemoRequest._OverallSDDocumentRejectionSts._Text[1:Language = $session.system_language].OvrlSDDocumentRejectionStsDesc as OvrlSDDocumentRejectionStsDesc,
@ObjectModel.text.element: ['OverallBillingBlockStatusDesc']
DebitMemoRequest.OverallBillingBlockStatus,
@UI.hidden: true
DebitMemoRequest._OverallBillingBlockStatus._Text[1:Language = $session.system_language].OverallBillingBlockStatusDesc as OverallBillingBlockStatusDesc,
@ObjectModel.text.element: ['SalesDocApprovalStatusDesc']
DebitMemoRequest.SalesDocApprovalStatus,
@UI.hidden: true
DebitMemoRequest._SalesDocApprovalStatus._Text[1:Language = $session.system_language].SalesDocApprovalStatusDesc as SalesDocApprovalStatusDesc,
@ObjectModel.foreignKey.association: '_TransactionCurrency'
@ObjectModel.text.element: ['CurrencyName']
DebitMemoRequest.TransactionCurrency,
@UI.hidden: true
DebitMemoRequest._TransactionCurrency._Text[1:Language = $session.system_language].CurrencyName as CurrencyName,
// DebitMemoRequest.TransactionCurrency,
@DefaultAggregation: #NONE
@Semantics.amount.currencyCode: 'TransactionCurrency'
DebitMemoRequest.TotalNetAmount,
@Semantics.businessDate.to: true
DebitMemoRequest.DebitMemoRequestDate,
@ObjectModel.text.element: ['BillingBlockReasonDescription']
DebitMemoRequest.HeaderBillingBlockReason,
@UI.hidden: true
DebitMemoRequest._HeaderBillingBlockReason._Text[1:Language = $session.system_language].BillingBlockReasonDescription as BillingBlockReasonDescription,
@EndUserText.label : 'Debit Memo Request Type'
@ObjectModel.foreignKey.association: '_DebitMemoRequestType'
@ObjectModel.text.element: ['SalesDocumentTypeName']
DebitMemoRequest.DebitMemoRequestType,
@UI.hidden: true
DebitMemoRequest._DebitMemoRequestType._Text[1:Language = $session.system_language].SalesDocumentTypeName as SalesDocumentTypeName,
@ObjectModel.text.element: ['SalesOrganizationName']
DebitMemoRequest.SalesOrganization,
@UI.hidden: true
DebitMemoRequest._SalesOrganization._Text[1:Language = $session.system_language].SalesOrganizationName as SalesOrganizationName,
@ObjectModel.text.element: ['DistributionChannelName']
DebitMemoRequest.DistributionChannel,
@UI.hidden: true
DebitMemoRequest._DistributionChannel._Text[1:Language = $session.system_language].DistributionChannelName as DistributionChannelName,
@ObjectModel.text.element: ['DivisionName']
DebitMemoRequest.OrganizationDivision,
@UI.hidden: true
DebitMemoRequest._OrganizationDivision._Text[1:Language = $session.system_language].DivisionName as DivisionName,
@ObjectModel.text.element: ['SalesOfficeName']
DebitMemoRequest.SalesOffice,
@UI.hidden: true
DebitMemoRequest._SalesOffice._Text[1:Language = $session.system_language].SalesOfficeName as SalesOfficeName,
@ObjectModel.text.element: ['SalesGroupName']
DebitMemoRequest.SalesGroup,
@UI.hidden: true
DebitMemoRequest._SalesGroup._Text[1:Language = $session.system_language].SalesGroupName as SalesGroupName,
DebitMemoRequest.CreationDate,
DebitMemoRequest.LastChangeDate,
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.9
@ObjectModel.foreignKey.association: '_CreatedByUser'
@ObjectModel.text.element: ['CreatedByUserDescription']
DebitMemoRequest.CreatedByUser,
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.9
@Search.ranking: #HIGH
@UI.hidden: true
DebitMemoRequest._CreatedByUser.UserDescription as CreatedByUserDescription,
@ObjectModel.foreignKey.association: '_LastChangedByUser'
@ObjectModel.text.element: ['LastChangedByUserDescription']
DebitMemoRequest.LastChangedByUser as LastChangedByUser,
@UI.hidden: true
DebitMemoRequest._LastChangedByUser.UserDescription as LastChangedByUserDescription,
@Consumption.filter.hidden: true
@ObjectModel.readOnly: true
cast ( ( case dats_is_valid( DebitMemoRequest.LastChangeDate)
when 0
then cast( dats_tims_to_tstmp( DebitMemoRequest.CreationDate, DebitMemoRequest.CreationTime, 'UTC', $session.client, 'NULL' ) as last_changed_date_time )
else
DebitMemoRequest.LastChangeDateTime
end ) as last_changed_date_time preserving type ) as LastChangeDateTime,
DebitMemoRequest.ReferenceSDDocument,
@ObjectModel.text.element: ['SDDocumentReasonText']
DebitMemoRequest.SDDocumentReason,
@UI.hidden: true
DebitMemoRequest._SDDocumentReason._Text[1:Language = $session.system_language].SDDocumentReasonText as SDDocumentReasonText,
@UI.hidden: true
DebitMemoRequest.DebitMemoRequestProcessingType,
@UI.hidden: true
cast( ' ' as abgru_va) as SalesDocumentRjcnReason,
@EndUserText.label: 'Customer Project'
@ObjectModel.foreignKey.association: '_ProjectValueHelp'
_Project.CustomerProject as CustomerProject,
@UI.hidden: true
cast(
case
when DebitMemoRequest.SalesDocApprovalStatus = 'A' then 2 -- | 2: yellow colour
when DebitMemoRequest.SalesDocApprovalStatus = 'B' then 3 -- | 3: green colour
when DebitMemoRequest.SalesDocApprovalStatus = 'C' then 1 -- | 1: red colour
when DebitMemoRequest.SalesDocApprovalStatus = 'D' then 2 -- | 2: yellow colour
else 0 -- | 0: neutral
end as abap.int1
) as DebitMemoReqApprvlStsCritlty,
DebitMemoRequest._SalesOrganization,
_DistributionChannel,
_Division,
DebitMemoRequest._OrganizationDivision,
_SalesOffice,
_SalesGroup,
_DebitMemoRequestType,
_ProjectValueHelp,
DebitMemoRequest._OverallOrdReltdBillgStatus,
DebitMemoRequest._OverallSDProcessStatus,
DebitMemoRequest._OverallSDDocumentRejectionSts,
DebitMemoRequest._HeaderBillingBlockReason,
DebitMemoRequest._SDDocumentReason,
DebitMemoRequest._TransactionCurrency,
_CreatedByUser,
_LastChangedByUser,
_Project,
DebitMemoRequest._OverallBillingBlockStatus,
DebitMemoRequest._SoldToParty
}
where
DebitMemoRequest.DebitMemoRequestDate > dats_add_days( tstmp_to_dats(tstmp_current_utctimestamp(), abap_system_timezone( $session.client,'NULL' ), $session.client, 'NULL'), -Customer360BusDocSetting.BusDocumentDurationInDays, 'INITIAL')
and DebitMemoRequest.DebitMemoRequestDate <= $session.system_date