P_ContactCardType is a Composite CDS View that provides data about "Contact Card Type (P)" in SAP S/4HANA. It reads from 1 data source (I_BusinessPartner) and exposes 19 fields with key fields ContactCardSemanticObjectType, ContactCardSemanticObjectID. Part of development package VDM_CC_CDS.
@AbapCatalog.sqlViewName: 'PCONTACTCARDTYPE'
@ClientHandling.algorithm: #SESSION_VARIABLE@AbapCatalog.compiler.compareFilter: true@AccessControl.authorizationCheck: #PRIVILEGED_ONLY// never expose this view directly, only via associations
@VDM.viewType: #COMPOSITE@VDM.private: true@ObjectModel.usageType.serviceQuality: 'C'
@ObjectModel.usageType.sizeCategory: #Sdefineview P_ContactCardType
asselectfrom I_BusinessPartner as _BusinessPartner
{
// the structure consists of four major blocks
// 0. OData key of entity// 1. contact selection criterias
// 2. role information
// 3. contact attributes for display and navigation
// conceptually one would put 1 first, however the selection criteria isnot relevant to the UI.
// OData and UI need a unique key that (is supposed to) allow obtaining more data. Thus this goes first.
// therefore we put role first, and reuse ContactCardRoleRank to number all contacts sequentially
// 0
@UI.hidden: truekeycast ('Dummy' as contactcardsemanticobjecttype) as ContactCardSemanticObjectType,
// @UI.identification: { type: #WITH_URL, url: 'ContactCardNavigationLink' }@UI.hidden: true@Consumption.semanticObject: 'Employee'
@ObjectModel.text.element: 'FullName'
@UI.identification.semanticObjectAction: 'displayFactSheet'
@UI.identification.type: #WITH_INTENT_BASED_NAVIGATIONkeycast ('' as contactcardsemanticobjectid) as ContactCardSemanticObjectID,
// 1 & 2
@Consumption.hidden: truecast ('Dummy' as contactcardtype) as ContactCardType,
@Consumption.hidden: truecast ('' as contactcardid) as ContactCardID,
@Consumption.hidden: truecast ('' as contactcardrole) as ContactCardRole,
@UI.hidden: truecast (1000 as contactcardrolerank) as ContactCardRoleRank,
@UI.hidden: true@Semantics.languagecast ('E' asabap.lang) as ContactCardRoleLanguage,
@Semantics.text@Semantics.organization.role: truecast ('' as contactcardroletext) as ContactCardRoleText,
// 3
// @UI.hidden: truecast ('' as contactcardnavigationlink) as ContactCardNavigationLink,
// @UI.hidden: true@Semantics.contact.kindcast ('' as contactcardcategory) as ContactCardCategory,
@Semantics.name.fullNamecast ('' as contactcardfullname) as FullName, // DisplayName
@Semantics.telephone.type: [ #WORK ]cast ('' as contactcardphonenumber) as PhoneNumber,
// @Semantics.telephone.type: [ #CELL ]// cast ('' as CONTACTCARDMOBILEPHONENUMBER) as MobilePhoneNumber,
// @Semantics.telephone.type: [ #FAX ]// cast ('' as CONTACTCARDFAXNUMBER) as FaxNumber,
@Semantics.eMail.addresscast ('' as contactcardemailaddress) as EmailAddress,
@Semantics.name.jobTitlecast ('' as contactcardjobname) as JobName,
@Semantics.contact.photocast ('' as contactcardpictureurl) as ContactCardPictureURL,
@Semantics.organization.unitcast ('' as contactcardorgunitname) as OrganizationalUnitName,
// @Semantics.url// cast ('' as CONTACTCARDWEBSITEURL) as WebsiteURL,
@Semantics.organization.namecast ('' as contactcardcompanyname) as CompanyName,
cast ('' as ad_addrnum) as AddressID,
@Semantics.address.labelcast ('' as contactcardformattedaddress) as FormattedAddress
}
where
_BusinessPartner.CreationDate > '99999999' // impossible