@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@AccessControl.privilegedAssociations: [ '_DfltAddrRprstn' ]
@EndUserText.label: 'Sales Order Partner - TP'
@Metadata.ignorePropagatedAnnotations: true
@ObjectModel.semanticKey: [ 'SalesOrder', 'PartnerFunction' ]
@ObjectModel.usageType: { dataClass: #TRANSACTIONAL, serviceQuality: #C, sizeCategory: #L }
@VDM.lifecycle.contract.type: #SAP_INTERNAL_API
@VDM.viewType: #TRANSACTIONAL
@Consumption.dbHints: [ 'USE_HEX_PLAN', 'NO_SUBPLAN_SHARING' ]
define view entity R_SalesOrderPartnerTP
as select from I_SalesOrderPartner as SalesOrderPartner
association to parent R_SalesOrderTP as _SalesOrder
on $projection.SalesOrder = _SalesOrder.SalesOrder
association [0..1] to I_PartnerFunction as _PartnerFunction
on $projection.PartnerFunctionForEdit = _PartnerFunction.PartnerFunction
association [0..1] to I_Language as _CorrespondenceLanguage
on $projection.CorrespondenceLanguage = _CorrespondenceLanguage.Language
association [0..1] to I_FormOfAddress as _FormOfAddress
on $projection.FormOfAddress = _FormOfAddress.FormOfAddress
association [0..1] to I_TransportationZone as _TransportationZone
on $projection.transportzone = _TransportationZone.TransportZone
and $projection.country = _TransportationZone.CountryCode
association [0..1] to I_AddrCurDfltLandlinePhoneNmbr as _CurrentDfltLandlinePhoneNmbr on $projection.AddressID = _CurrentDfltLandlinePhoneNmbr.AddressID
and $projection.AddressPersonID = _CurrentDfltLandlinePhoneNmbr.AddressPersonID
association [0..1] to I_AddrCurDfltMobilePhoneNumber as _CurrentDfltMobilePhoneNumber on $projection.AddressID = _CurrentDfltMobilePhoneNumber.AddressID
and $projection.AddressPersonID = _CurrentDfltMobilePhoneNumber.AddressPersonID
association [0..1] to I_AddrCurDefaultFaxNumber as _CurrentDfltFaxNumber on $projection.AddressID = _CurrentDfltFaxNumber.AddressID
and $projection.AddressPersonID = _CurrentDfltFaxNumber.AddressPersonID
association [1] to I_WorkplaceAddress as _WorkPlaceAddress on $projection.ReferenceBusinessPartner = _WorkPlaceAddress.BusinessPartner
{
key SalesOrder,
key cast(SalesOrderPartner.PartnerFunction as parvw_unv preserving type) as PartnerFunction,
@ObjectModel.foreignKey.association: '_PartnerFunction'
cast(SalesOrderPartner.PartnerFunction as parvw_unv preserving type) as PartnerFunctionForEdit,
SalesOrderPartner.Customer,
SalesOrderPartner.Supplier,
SalesOrderPartner.Personnel,
SalesOrderPartner.ContactPerson,
SalesOrderPartner.ReferenceBusinessPartner,
@ObjectModel.text.element: [ 'FullName' ]
SalesOrderPartner.Partner,
@ObjectModel.virtualElement: true
cast('' as ad_name1) as BusinessPartnerName1,
@ObjectModel.virtualElement: true
cast('' as ad_name2) as BusinessPartnerName2,
@ObjectModel.virtualElement: true
cast('' as ad_name3) as BusinessPartnerName3,
@ObjectModel.virtualElement: true
cast('' as ad_name4) as BusinessPartnerName4,
@Semantics.name.fullName: true
@Semantics.text: true
SalesOrderPartner.FullName,
_PartnerFunction.SDDocumentPartnerType,
@ObjectModel.foreignKey.association: '_FormOfAddress'
@Semantics.name.jobTitle: true
SalesOrderPartner.FormOfAddress,
@Semantics.address.zipCode: true
SalesOrderPartner._OrgNamePostalAddress.PostalCode,
@Semantics.address.city: true
SalesOrderPartner._OrgNamePostalAddress.CityName,
SalesOrderPartner._OrgNamePostalAddress.DistrictName,
@ObjectModel.foreignKey.association: '_Country'
@Semantics.address.country: true
SalesOrderPartner._OrgNamePostalAddress.Country,
@ObjectModel.foreignKey.association: '_Region'
@Semantics.address.region: true
SalesOrderPartner._OrgNamePostalAddress.Region,
@Semantics.address.street: true
SalesOrderPartner._OrgNamePostalAddress.StreetName,
@Semantics.address.street: true
SalesOrderPartner._OrgNamePostalAddress.StreetPrefixName1,
@Semantics.address.street: true
SalesOrderPartner._OrgNamePostalAddress.StreetPrefixName2,
@Semantics.address.street: true
SalesOrderPartner._OrgNamePostalAddress.StreetSuffixName1,
@Semantics.address.street: true
SalesOrderPartner._OrgNamePostalAddress.StreetSuffixName2,
@Semantics.address.streetNoNumber: true
SalesOrderPartner._OrgNamePostalAddress.HouseNumber,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.DestinationLocationCountry
else
_CurrentDfltLandlinePhoneNmbr.PhoneNumberCountry
end
as ad_comctry preserving type ) as PhoneNumberCountry,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.PhoneNumber
else
_CurrentDfltLandlinePhoneNmbr.PhoneAreaCodeSubscriberNumber
end
as ad_tlnmbr preserving type ) as PhoneNumber,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.PhoneNumberExtension
else
_CurrentDfltLandlinePhoneNmbr.PhoneExtensionNumber
end
as ad_tlxtns preserving type ) as PhoneNumberExtension,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.MblPhoneDestinationLocCountry
else
_CurrentDfltMobilePhoneNumber.PhoneNumberCountry
end
as ad_comctry preserving type ) as MobilePhoneCountry,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.MobilePhoneNumber
else
_CurrentDfltMobilePhoneNumber.PhoneAreaCodeSubscriberNumber
end
as ad_tlnmbr preserving type ) as MobilePhoneNumber,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.FaxNumberCountry
else
_CurrentDfltFaxNumber.FaxNumberCountry
end
as ad_comctry preserving type ) as FaxNumberCountry,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.FaxAreaCodeSubscriberNumber
else
_CurrentDfltFaxNumber.FaxAreaCodeSubscriberNumber
end
as ad_fxnmbr preserving type ) as FaxNumber,
cast(
case
when SalesOrderPartner.AddressID = ''
then
_WorkPlaceAddress.FaxExtensionNumber
else
_CurrentDfltFaxNumber.FaxExtensionNumber
end
as ad_fxxtns preserving type ) as FaxNumberExtension,
@Semantics.telephone.type: [ #WORK ]
SalesOrderPartner.InternationalPhoneNumber,
@Semantics.telephone.type: [ #CELL ]
SalesOrderPartner.InternationalMobilePhoneNumber,
@Semantics.eMail: { address: true,
type: [ #WORK ] }
SalesOrderPartner.EmailAddress,
@Semantics.telephone.type: [ #FAX ]
SalesOrderPartner.InternationalFaxNumber,
@Semantics.address.postBox: true
SalesOrderPartner._OrgNamePostalAddress.POBox,
@Semantics.address.zipCode: true
SalesOrderPartner._OrgNamePostalAddress.POBoxPostalCode,
@ObjectModel.foreignKey.association: '_CorrespondenceLanguage'
SalesOrderPartner.CorrespondenceLanguage,
SalesOrderPartner._OrgNamePostalAddress.TaxJurisdiction,
@ObjectModel.foreignKey.association: '_TransportationZone'
SalesOrderPartner._OrgNamePostalAddress.TransportZone,
@Semantics.text: true
SalesOrderPartner.UnloadingPointName,
SalesOrderPartner.VATRegistration,
SalesOrderPartner.AddressID,
SalesOrderPartner.SDDocPartnerAddrIsDocSpecific,
SalesOrderPartner.AddressPersonID,
SalesOrderPartner.AddressObjectType,
// On Conditions For Associations
@Consumption.hidden: true
SalesOrderPartner.SDDocPartnerAddressRefType,
@Consumption.hidden: true
SalesOrderPartner.BPAddrDeterminationTransaction,
@Consumption.hidden: true
SalesOrderPartner.BPRefAddressIDForDocSpcfcAddr,
SalesOrderPartner.PartnerIsOneTimeAccount,
// DCL
@Consumption.hidden: true
_SalesOrder.SalesOrderType,
@Consumption.hidden: true
_SalesOrder.SalesOrganization,
@Consumption.hidden: true
_SalesOrder.DistributionChannel,
@Consumption.hidden: true
_SalesOrder.OrganizationDivision,
// Associations
_SalesOrder,
_PartnerFunction,
_CorrespondenceLanguage,
_FormOfAddress,
_TransportationZone,
SalesOrderPartner._DfltAddrRprstn,
SalesOrderPartner._BusinessPartnerAddress,
SalesOrderPartner._BPRefAddressForDocSpcfcAddr,
SalesOrderPartner._OrgNamePostalAddress._Country,
SalesOrderPartner._OrgNamePostalAddress._Region
}