I_AddressPersonName_2

DDL: I_ADDRESSPERSONNAME_2 Type: view_entity BASIC Package: S_ADDRESS_RAP_BO

Person Name

I_AddressPersonName_2 is a Basic CDS View that provides data about "Person Name" in SAP S/4HANA. It reads from 1 data source (adrp) and exposes 30 fields with key fields AddressPersonID, AddressID, AddressRepresentationCode. It has 7 associations to related views. Part of development package S_ADDRESS_RAP_BO.

Data Sources (1)

SourceAliasJoin Type
adrp Person right_outer

Associations (7)

CardinalityTargetAliasCondition
[0..1] I_FormOfAddress _FormOfAddress $projection.FormOfAddress = _FormOfAddress.FormOfAddress
[0..1] I_NameSupplement _NameSupplement $projection.PersonNameSupplementCode = _NameSupplement.PersonNameSupplementCode
[0..1] I_FamilyNamePrefix _FamilyNamePrefix $projection.FamilyNamePrefix = _FamilyNamePrefix.FamilyNamePrefix
[0..1] I_FamilyNamePrefix _FamilyNameSecondPrefix $projection.FamilyNameSecondPrefix = _FamilyNameSecondPrefix.FamilyNamePrefix
[0..1] I_AcademicTitle _AcademicTitle $projection.AcademicTitle = _AcademicTitle.AcademicTitle
[0..1] I_AcademicTitle _AcademicTitle2 $projection.AcademicTitle2 = _AcademicTitle2.AcademicTitle
[0..1] I_AddressRepresentation _AddressRepresentationCode $projection.AddressRepresentationCode = _AddressRepresentationCode.AddressRepresentationCode

Annotations (8)

NameValueLevelField
EndUserText.label Person Name view
Metadata.ignorePropagatedAnnotations true view
ObjectModel.usageType.serviceQuality #C view
ObjectModel.usageType.sizeCategory #XXL view
ObjectModel.usageType.dataClass #MIXED view
ObjectModel.representativeKey AddressPersonID view
VDM.viewType #BASIC view
VDM.lifecycle.contract.type #PUBLIC_LOCAL_API view

Fields (30)

KeyFieldSource TableSource FieldDescription
KEY AddressPersonID adrp persnumber
KEY AddressID PersAddress addrnumber
KEY AddressRepresentationCode adrp nation
AddrID
FormOfAddress adrp title
GivenName adrp name_first
FamilyName adrp name_last
PersonBirthName adrp name2
PersonMiddleName adrp namemiddle
SecondFamilyName adrp name_last2
AcademicTitle adrp title_aca1
AcademicTitle2 adrp title_aca2
FamilyNamePrefix adrp prefix1
FamilyNameSecondPrefix adrp prefix2
PersonNameSupplementCode adrp title_sppl
PersonNickname adrp nickname
NameInitials adrp initials
PersonFullName adrp name_text
CorrespondenceLanguage adrp langu
AddressPersonSearchTerm1 adrp sort1
AddressPersonSearchTerm2 adrp sort2
PersonFullNameFormattingCode adrp nameformat
PersonFullNameFormattingCntry adrp namcountry
_FormOfAddress _FormOfAddress
_NameSupplement _NameSupplement
_FamilyNamePrefix _FamilyNamePrefix
_FamilyNameSecondPrefix _FamilyNameSecondPrefix
_AcademicTitle _AcademicTitle
_AcademicTitle2 _AcademicTitle2
_AddressRepresentationCode _AddressRepresentationCode
@EndUserText.label: 'Person Name'
//@Metadata.allowExtensions: true

@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.supportedCapabilities: [#CDS_MODELING_ASSOCIATION_TARGET, #CDS_MODELING_DATA_SOURCE, #SQL_DATA_SOURCE]
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.sizeCategory: #XXL
@ObjectModel.usageType.dataClass: #MIXED
@ObjectModel.representativeKey: 'AddressPersonID'
@VDM: {
  viewType: #BASIC,
  lifecycle.contract.type: #PUBLIC_LOCAL_API
}

define view entity I_AddressPersonName_2
  as select distinct from adcp as PersAddress
    right outer join      adrp as Person on PersAddress.persnumber = Person.persnumber
  association [0..1] to I_FormOfAddress         as _FormOfAddress             on $projection.FormOfAddress = _FormOfAddress.FormOfAddress

  association [0..1] to I_NameSupplement        as _NameSupplement            on $projection.PersonNameSupplementCode = _NameSupplement.PersonNameSupplementCode

  association [0..1] to I_FamilyNamePrefix      as _FamilyNamePrefix          on $projection.FamilyNamePrefix = _FamilyNamePrefix.FamilyNamePrefix

  association [0..1] to I_FamilyNamePrefix      as _FamilyNameSecondPrefix    on $projection.FamilyNameSecondPrefix = _FamilyNameSecondPrefix.FamilyNamePrefix

  association [0..1] to I_AcademicTitle         as _AcademicTitle             on $projection.AcademicTitle = _AcademicTitle.AcademicTitle

  association [0..1] to I_AcademicTitle         as _AcademicTitle2            on $projection.AcademicTitle2 = _AcademicTitle2.AcademicTitle

  association [0..1] to I_AddressRepresentation as _AddressRepresentationCode on $projection.AddressRepresentationCode = _AddressRepresentationCode.AddressRepresentationCode
{
  key Person.persnumber      as AddressPersonID,
      @ObjectModel.foreignKey.association: '_AddressRepresentationCode'
  key PersAddress.addrnumber as AddressID,
  key Person.nation     as AddressRepresentationCode, //Commented on 21st July 2025 re-opened on 04th Augu 2025

      cast('' as ad_addrnum ) as AddrID,
      @ObjectModel.foreignKey.association: '_FormOfAddress'
      Person.title           as FormOfAddress,
      Person.name_first      as GivenName,
      Person.name_last       as FamilyName,
      Person.name2           as PersonBirthName,
      Person.namemiddle      as PersonMiddleName,
      Person.name_last2      as SecondFamilyName,
      @ObjectModel.foreignKey.association: '_AcademicTitle'
      Person.title_aca1      as AcademicTitle,
      @ObjectModel.foreignKey.association: '_AcademicTitle2'
      Person.title_aca2      as AcademicTitle2,
      @ObjectModel.foreignKey.association: '_FamilyNamePrefix'
      Person.prefix1         as FamilyNamePrefix,
      @ObjectModel.foreignKey.association: '_FamilyNameSecondPrefix'
      Person.prefix2         as FamilyNameSecondPrefix,
      @ObjectModel.foreignKey.association: '_NameSupplement'
      Person.title_sppl      as PersonNameSupplementCode,
      Person.nickname        as PersonNickname,
      Person.initials        as NameInitials,
      Person.name_text       as PersonFullName,
      Person.langu           as CorrespondenceLanguage,
      Person.sort1           as AddressPersonSearchTerm1,
      Person.sort2           as AddressPersonSearchTerm2,
      Person.nameformat      as PersonFullNameFormattingCode,
      Person.namcountry      as PersonFullNameFormattingCntry,
      @Semantics.user.createdBy: true
      Person.addresscreatedbyuser,
      @Semantics.systemDateTime.createdAt: true
      @Analytics.hidden: true
      Person.addresscreatedondatetime,
      @Semantics.user.lastChangedBy: true
      Person.addresschangedbyuser,
      @Semantics.systemDateTime.lastChangedAt: true
      @Analytics.hidden: true
      Person.addresschangedondatetime,

      _FormOfAddress,
      _NameSupplement,
      _FamilyNamePrefix,
      _FamilyNameSecondPrefix,
      _AcademicTitle,
      _AcademicTitle2,
      _AddressRepresentationCode
}
where
      Person.date_from      = '00010101'
//  and PersAddress.comp_pers = 'P'  // if it is not there - same person shared with multiple company address will retrieved.

  //This is added to stop runtime errors in RAP Contract Check.// while testing we reverted this after data model change