@EndUserText.label: 'Contact Card User'
@VDM.viewType: #BASIC
@AbapCatalog.sqlViewName: 'IPMCONTACTCARD'
@AccessControl.authorizationCheck: #CHECK
@ObjectModel.representativeKey: 'UserID'
@AccessControl.personalData.blocking: #REQUIRED
@Search.searchable: true
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.dataClass: #MASTER
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #L
define view I_PMContactCardUser
as
// SAP User Detail Information
select from usr21 as _User
// User Name/Address Key Assignment
inner join I_BusinessPartner as _BusinessPartner on _BusinessPartner.PersonNumber = _User.persnumber
// Persons (Business Address Services)
left outer to one join adrp as _UserInfo on _UserInfo.persnumber = _User.persnumber
and _UserInfo.nation = ''
// Person/Address Assignment (Business Address Services)
left outer to one join adcp as _UserInfoAddress on _UserInfoAddress.addrnumber = _User.addrnumber
and _UserInfoAddress.persnumber = _User.persnumber
and _UserInfoAddress.nation = ''
// Addresses (Business Address Services)
left outer to one join adrc as _UserAddress on _UserAddress.addrnumber = _User.addrnumber
and _UserAddress.nation = ''
// E-Mail Addresses (Business Address Services)
left outer to one join adr6 as _UserEmail on _UserEmail.persnumber = _User.persnumber
and _UserEmail.addrnumber = _User.addrnumber
and _UserEmail.flgdefault = 'X'
left outer to one join P_MobileNumbers as _UserMobile on _UserMobile.persnumber = _User.persnumber
and _UserMobile.addrnumber = _User.addrnumber
left outer to one join P_TelephoneNumbers as _UserTelephone on _UserTelephone.persnumber = _User.persnumber
and _UserTelephone.addrnumber = _User.addrnumber
association [0..1] to I_PMContactCardEmployee as _PMContactCardEmployee on $projection.UserID = _PMContactCardEmployee.UserID
{
@ObjectModel.text.element: [ 'FullName' ]
@Search.defaultSearchElement: true
--@UI.hidden: true
key _User.bname as UserID,
--'UserAlias': see BCP 1770321887
@Semantics.text: true
@Semantics.name.givenName: true
@Search:{ranking: #HIGH, fuzzinessThreshold: 0.8, defaultSearchElement: true}
_UserInfo.name_first as FirstName,
@Semantics.text: true
@Semantics.name.familyName: true
@Search:{ranking: #HIGH, fuzzinessThreshold: 0.8, defaultSearchElement: true}
_UserInfo.name_last as LastName,
@Semantics.text: true
@Search.defaultSearchElement: true
@Search.ranking: #HIGH
@Search.fuzzinessThreshold: 0.7
@Semantics.name.fullName: true
_UserInfo.name_text as FullName,
@Semantics.text: true
@Semantics: {
eMail.address: true,
eMail.type: [ #WORK ]
}
@Search:{ranking: #HIGH, fuzzinessThreshold: 0.8, defaultSearchElement: true}
_UserEmail.smtp_addr as EmailAddress,
@Semantics.organization.name: true
_UserInfoAddress.department as OrganizationalUnit,
@Semantics.name.jobTitle: true
_UserInfoAddress.function as FunctionalTitleName,
_UserAddress.name1 as Company,
@Semantics.telephone.type: [ #WORK ]
_UserTelephone.telnr_long as InternationalPhoneNumber,
@Semantics.telephone.type: [ #CELL ]
_UserMobile.telnr_long as InternationalMobilePhoneNumber,
_UserInfo.title_aca1 as FormOfAddress,
_UserAddress.street as StreetName,
_UserAddress.house_num1 as HouseNumber,
_UserAddress.country as Country,
_UserAddress.post_code1 as PostalCode,
_UserAddress.city1 as CityName,
_UserAddress.building as Building,
_UserAddress.floor as Floor,
_UserAddress.roomnumber as RoomNumber,
_UserAddress.region as Region,
//_PMContactCardEmployee.PersonnelNumber,
@Consumption.hidden: true
_BusinessPartner.AuthorizationGroup,
@Consumption.hidden: true
_BusinessPartner.IsBusinessPurposeCompleted,
/////// Start of Datacontroller 10+1 fields - Not to be consumed by any other views//////////
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataControllerSet,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController1,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController2,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController3,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController4,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController5,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController6,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController7,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController8,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController9,
@Consumption.hidden:true
@UI.hidden:true
_BusinessPartner.DataController10,
////////////// End of Datacontroller 10+1 fields//////////
_PMContactCardEmployee
}
where
_User.idadtype >= '02' // actual identities, i.e. with business user
and _User.persnumber <> ''
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BUSINESSPARTNER",
"P_MOBILENUMBERS",
"P_TELEPHONENUMBERS",
"ADCP",
"ADR6",
"ADRC",
"ADRP",
"USR21"
],
"ASSOCIATED":
[
"I_PMCONTACTCARDEMPLOYEE"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/