@VDM.viewType: #CONSUMPTION
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #NOT_REQUIRED
@ObjectModel: { semanticKey: ['SourcingProjectNegotiation', 'SourcingProjectNegotiationUUID'],
representativeKey: 'SourcingProjectNegotiationUUID',
usageType.dataClass: #TRANSACTIONAL,
usageType.serviceQuality: #C,
usageType.sizeCategory: #L }
@AccessControl.privilegedAssociations: [ '_CreatedByUser', '_ChangedByUser' ]
@Search.searchable: true
@EndUserText.label: 'Negotiation for Sourcing Project - TP'
@UI.headerInfo:{
typeName: 'Negotiation',
typeNamePlural: 'Negotiations',
title: { value: 'SourcingProjectNegotiationName' },
description: { value: 'SourcingProjectNegotiation' }
}
@UI.presentationVariant: [{ sortOrder: [{ by: 'SourcingProjectNegotiation', direction: #DESC }] }]
@VDM.usage.type:[#TRANSACTIONAL_PROCESSING_SERVICE]
@Metadata.allowExtensions: true
@AbapCatalog.extensibility: {
extensible: true,
dataSources: ['_SourcingProjectNegotiationTP'],
allowNewDatasources: false,
elementSuffix: 'SNH',
quota: { maximumFields: 404,
maximumBytes: 40400 },
allowNewCompositions: true }
define root view entity C_SourcingProjectNegotiationTP
provider contract transactional_query
as projection on R_SourcingProjectNegotiationTP as _SourcingProjectNegotiationTP
association [1..*] to C_SrcgProjItemHierarchy as _SrcgProjItemHierarchy on $projection.SourcingProjectUUID = _SrcgProjItemHierarchy.SourcingProjectUUID
association [0..*] to C_SrcgProjNegttnQtanSummary as _SrcgProjNegttnQtanSummary on $projection.SourcingProjectNegotiationUUID = _SrcgProjNegttnQtanSummary.SourcingProjectNegotiationUUID
{
@UI.facet: [
{ id: 'SourcingProjectNegotiationType',
purpose: #HEADER,
type: #DATAPOINT_REFERENCE,
importance: #HIGH,
position: 10,
targetQualifier: 'SourcingProjectNegotiationType'},
{ id: 'SrcgProjNegttnLifecycleStatus',
purpose: #HEADER,
type: #DATAPOINT_REFERENCE,
importance: #HIGH,
position: 20,
targetQualifier: 'SrcgProjNegttnLifecycleStatus'},
{
id:'GeneralInformation',
type: #COLLECTION,
isSummary,
position: 10,
label: 'General Information'
},
{
//label: 'Column 1',
id: 'Column1',
parentId: 'GeneralInformation',
type: #IDENTIFICATION_REFERENCE,
position: 10
//targetQualifier: 'Column1'
},
{
//label: 'Column 2',
id: 'Column2',
parentId: 'GeneralInformation',
type: #FIELDGROUP_REFERENCE,
position: 20,
targetQualifier: 'Column2'
},
{
//label: 'Sourcing Project Details',
id: 'Column3',
parentId: 'GeneralInformation',
type: #FIELDGROUP_REFERENCE,
position: 30,
targetQualifier: 'Column3'
},
{
id: 'Column4',
parentId: 'GeneralInformation',
type: #FIELDGROUP_REFERENCE,
position: 30,
targetQualifier: 'Column4'
},
{
label: 'Quotations',
id: 'SrcgProjQuotation',
type: #LINEITEM_REFERENCE,
position: 30,
targetElement: '_SrcgProjNegttnQtanSummary',
hidden: #(SrcgProjNegttnQtnInfoIsHidden)
}
]
@UI.identification: [{ type: #FOR_ACTION, dataAction: 'Publish' , label: 'Publish', position : 10 },
{ type: #FOR_ACTION, dataAction: 'SetSourcingProjectNegotiationToCancld' , label: 'Cancel' , position : 20 },
{ type: #FOR_ACTION, dataAction: 'EndNegotiation', label: 'End' , position : 30 },
{ type: #FOR_ACTION, dataAction: 'Copy', label: 'Copy' , position : 40 },
{ type: #FOR_ACTION, dataAction: 'SetSourcingProjectNegotiationToCmpltd', label: 'Complete' , position : 50 }]
@UI.hidden: true
key _SourcingProjectNegotiationTP.SourcingProjectNegotiationUUID,
// @ObjectModel.text.element: [ 'SourcingProjectName' ]
@UI.identification: [{position: 10, importance: #HIGH, label: 'Description'}]
//@UI.lineItem: [{ position: 10, importance: #HIGH, label:'Description' }]
@Semantics.text: true
//@UI.fieldGroup:[{qualifier: 'Column1', position: 10, label:'Description'}]
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
_SourcingProjectNegotiationTP.SourcingProjectNegotiationName as SourcingProjectNegotiationName,
@UI.hidden: true
_SourcingProjectNegotiationTP.SourcingProjectUUID,
@UI.hidden: true
_SrcgProjNegotiationType._Text.SrcgProjectNegotiationTypeName as SrcgProjectNegotiationTypeName : localized,
@UI.textArrangement: #TEXT_ONLY
@ObjectModel.text.element: ['SrcgProjectNegotiationTypeName']
@UI.lineItem: [{ position: 20, importance: #HIGH }]
@UI.selectionField: [{ position: 70 }]
@Consumption.valueHelpDefinition: [{entity:{name: 'I_SrcgProjNegotiationType', element: 'SourcingProjectNegotiationType'} }]
@UI.fieldGroup:[{qualifier: 'SuplrListLifecycleStatus', position: 10}]
@UI.dataPoint: { title: 'Type' }
_SourcingProjectNegotiationTP.SourcingProjectNegotiationType,
@UI.lineItem: [{ position: 10, importance: #HIGH, label:'Negotiation' }]
@ObjectModel.text.element: [ 'SourcingProjectNegotiationName' ]
@UI.selectionField: [{ position: 10 }]
@UI.fieldGroup: [{label: 'Negotiation' }]
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
SourcingProjectNegotiation,
// @UI.lineItem: [{ position: 50, importance: #HIGH, label:'Last Changed On' }]
@UI.fieldGroup:[{qualifier: 'Column3', position: 30, label:'Last Changed On'}]
@Semantics.systemDateTime.lastChangedAt: true
LastChangeDateTime,
@UI.lineItem: [{ position: 50, importance: #HIGH, label:'Start Date' }]
// @UI.identification: [{position: 20, importance: #HIGH, label: 'Start Date'}]
@UI.fieldGroup:[{qualifier: 'Column2', position: 20, label:'Start Date'}]
// @UI.selectionField: [{ position: 30 }]
SrcgProjNegotiationStartDate,
@UI.lineItem: [{ position: 60, importance: #HIGH, label:'End Date' }]
// @UI.identification: [{position: 30, importance: #HIGH, label: 'End Date'}]
@UI.fieldGroup:[{qualifier: 'Column2', position: 30, label: 'End Date'}]
// @UI.selectionField: [{ position: 40 }]
SrcgProjNegotiationEndDate,
@Semantics.systemDateTime.createdAt: true
CreationDateTime,
@Semantics.user.createdBy: true
@EndUserText.label: 'Created by User'
@ObjectModel.foreignKey.association:'_CreatedByUser'
@ObjectModel.text.element: ['CreatedByUserName']
@UI.textArrangement: #TEXT_SEPARATE
@UI.selectionField: [{ position: 60 }]
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
CreatedByUser,
@UI.hidden: true
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
_CreatedByUser.UserDescription as CreatedByUserName,
@EndUserText.label: 'Last Changed by User'
@Semantics.user.lastChangedBy: true
@ObjectModel.foreignKey.association:'_ChangedByUser'
@ObjectModel.text.element: ['ChangedByUserName']
@UI.textArrangement: #TEXT_SEPARATE
_SourcingProjectNegotiationTP.LastChangedByUser,
@UI.hidden: true
_ChangedByUser.UserDescription as ChangedByUserName,
@ObjectModel.text.element: ['SrcgProjNegttnLfcycStatusName']
@UI.fieldGroup:[{qualifier: 'SuplrListLifecycleStatus', position: 20, label:'Status'}]
@UI.lineItem: [{ position: 80, importance: #HIGH, label:'Status' }]
@UI.selectionField: [{ position: 50 }]
@Consumption.valueHelpDefinition: [{entity:{name: 'I_SrcgProjNegttnLfcycStatus', element: 'SrcgProjNegttnLifecycleStatus'} }]
@EndUserText.label: 'Status'
@UI.textArrangement: #TEXT_ONLY
@UI.dataPoint: {title: 'Status'}
_SourcingProjectNegotiationTP.SrcgProjNegttnLifecycleStatus,
@UI.hidden: true
_SrcgProjNegttnLfcycStatus._Text.SrcgProjNegttnLfcycStatusName as SrcgProjNegttnLfcycStatusName : localized,
@UI.fieldGroup:[{qualifier: 'Column4', position: 10, label:'Sourcing Project Number'}]
@Consumption.semanticObject: 'SourcingProject'
@Consumption.valueHelpDefinition: [{entity:{name: 'R_SourcingProjectValueHelp', element: 'SourcingProject'} }]
@UI.lineItem: [{ position: 40, importance: #HIGH, label:'Sourcing Project' }]
@ObjectModel.text.element: [ 'SourcingProjectName' ]
@UI.selectionField: [{ position: 80 }]
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 1 }
SourcingProject,
@Semantics.text: true
@UI.fieldGroup:[{qualifier: 'Column4', position: 20, label:'Sourcing Project Name'}]
@UI.hidden: true
@Search: { defaultSearchElement: true, ranking: #HIGH, fuzzinessThreshold: 0.7 }
SourcingProjectName,
@EndUserText.label: 'Sourcing Project Version'
@UI.fieldGroup:[{qualifier: 'Column4', position: 30, label:'Sourcing Project Version'}]
SourcingProjectVersion,
@UI.hidden: true
@Semantics.booleanIndicator: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
virtual SrcgProjNegttnQtnInfoIsHidden : abap_boolean,
@UI.hidden: true
@Semantics.booleanIndicator: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
virtual IsChangeDocumentsEnabled : abap_boolean,
// @EndUserText.label: 'Supplier'
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
@UI.selectionField: [{ position: 20 }]
@ObjectModel.filter.transformedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
@Consumption.valueHelpDefinition: [{ entity: { name : 'I_BusinessPartnerVH', element: 'BusinessPartner' } }]
virtual Bidder : vdm_businesspartner,
@EndUserText.label: 'Supplier Quotation'
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
@UI.selectionField: [{ position: 90 }]
@ObjectModel.filter.transformedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
@Consumption.valueHelpDefinition: [{ entity:{ name: 'C_SourcingProjectQuotationVH', element: 'C_SourcingProjectQuotationVH' } }]
virtual SourcingProjectQuotation : vdm_sourcingprojectquotation,
@UI.hidden: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
@EndUserText.label: 'Note Type List Text'
virtual NoteTypeListText : abap.char( 450 ),
//workaround for function import labels
@UI.hidden: true
@Semantics.booleanIndicator: true
@ObjectModel.virtualElementCalculatedBy: 'ABAP:CL_MMPUR_SRCPROJNGN_TRANS_EXIT'
virtual NoteIsCopyEnabled : vdm_noteiscopyenabled,
@UI.lineItem: [{ position: 30, importance: #HIGH, label:'Business Partner',value: '_SrcgProjNegttnQuotationTP.Supplier' }]
_SrcgProjNegttnQuotationTP : redirected to composition child C_SrcgProjNegttnQuotationTP,
@ObjectModel.filter.enabled: false
_SrcgProjItemHierarchy,
_SourcingProjectTP,
_SrcgProjNegttnLfcycStatus,
_SrcgProjNegotiationType,
_SrcgProjNegttnQtanSummary,
@Consumption.filter.hidden: true
@UI.fieldGroup:[{qualifier: 'Column3', value:'_ChangedByUser', position: 20, label:'Changed By', type: #AS_CONTACT}]
_ChangedByUser,
@Consumption.filter.hidden: true
@UI.fieldGroup:[{qualifier: 'Column3', value:'_CreatedByUser', position: 10, label:'Created By', type: #AS_CONTACT}]
@UI.lineItem: [{ value:'_CreatedByUser', position: 70, importance: #HIGH, label:'Created By', type: #AS_CONTACT }]
_CreatedByUser
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_SRCGPROJNEGOTIATIONTYPE",
"I_SRCGPROJNEGOTIATIONTYPETEXT",
"I_SRCGPROJNEGTTNLFCYCSTATUS",
"I_SRCGPROJNEGTTNLFCYCSTATUSTXT",
"I_USERCONTACTCARD",
"R_SOURCINGPROJECTNEGOTIATIONTP"
],
"ASSOCIATED":
[
"C_SRCGPROJITEMHIERARCHY",
"C_SRCGPROJNEGTTNQTANSUMMARY",
"C_SRCGPROJNEGTTNQUOTATIONTP",
"I_SRCGPROJNEGOTIATIONTYPE",
"I_SRCGPROJNEGTTNLFCYCSTATUS",
"I_USERCONTACTCARD",
"R_SOURCINGPROJECTTP",
"R_SRCGPROJNEGTTNQUOTATIONTP"
],
"BASE":
[
"R_SOURCINGPROJECTNEGOTIATIONTP"
],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/