@AbapCatalog.viewEnhancementCategory: [#NONE]
@AccessControl.authorizationCheck: #MANDATORY
@EndUserText.label: 'TP View for Payment for Workforce Person'
@Metadata.ignorePropagatedAnnotations: true
@VDM: {
viewType: #TRANSACTIONAL,
lifecycle.contract.type: #SAP_INTERNAL_API
}
@ObjectModel.usageType:{
serviceQuality: #X,
sizeCategory: #S,
dataClass: #MIXED
}
define view entity R_WorkAssgmtPaymentTP
as select from I_BusinessPartnerBank_2 as _BusinessPartnerBank
inner join R_WorkAssignmentBP as _BuPaIdentification on _BuPaIdentification.WorkAssignmentBusinessPartner = _BusinessPartnerBank.BusinessPartner
//Below association/Join is to get the UUID
inner join I_BusinessPartner as _WorkAssignmentBP on _WorkAssignmentBP.BusinessPartner = _BuPaIdentification.WorkAssignmentBusinessPartner
inner join R_WorkAssignmentTP on R_WorkAssignmentTP.WorkAssignmentUUID = _WorkAssignmentBP.BusinessPartnerUUID
//Below association/Join is to get the Supplier (Payment should be available/displayed/fetched only if there is a supplier for that - Double check)
inner join I_Supplier_to_BusinessPartner as _SupplierBP on _SupplierBP.BusinessPartnerUUID = _WorkAssignmentBP.BusinessPartnerUUID
//Below association is to get the Supplier Master from Supplier
association [1..1] to I_SupplierCompany as _SupplierCompany on _SupplierCompany.Supplier = _SupplierBP.Supplier
and _SupplierCompany.CompanyCode = R_WorkAssignmentTP.CompanyCode
//Below association required for deriving PersonUUID - because BDEF authorization/lock is depends on PersonUUID
association [1..1] to I_BusinessPartner as _WorkforcePersonBP on _WorkforcePersonBP.BusinessPartner = _BuPaIdentification.BusinessPartner
//Below associations for handling DCL
association [1..1] to R_WorkforcePersonTP as _WorkforcePerson on $projection.PersonUUID = _WorkforcePerson.PersonUUID
// association to parent R_WorkAssignmentTP as _WorkAssignment on $projection.WorkAssignmentUUID = _WorkAssignment.WorkAssignmentUUID
{
key _WorkAssignmentBP.BusinessPartnerUUID as WorkAssignmentUUID,
key _BusinessPartnerBank.BankIdentification as BankIdentification,
_BuPaIdentification.WorkAssignmentBusinessPartner as EmployeeInternalID,
_BuPaIdentification.WorkforceAssignment as EmploymentInternalID,
_BuPaIdentification.WorkforcePersonExternalID as WorkforcePersonExternalID,
_BusinessPartnerBank.BankAccountHolderName as BankAccountHolderName,
_BusinessPartnerBank.BankAccountName as BankAccountName,
_BusinessPartnerBank.BankControlKey as BankControlKey,
_BusinessPartnerBank.BankCountryKey as BankCountryKey,
_BusinessPartnerBank.BankNumber as Bank,
_BusinessPartnerBank.BankName as BankName,
_BusinessPartnerBank.BankAccount as BankAccount,
_BusinessPartnerBank.IBAN as IBAN,
_BusinessPartnerBank.SWIFTCode as SWIFTCode,
//Display only field - Fetched from the I_SupplierCompany ( LFB1- zwels )
_SupplierCompany.PaymentMethodsList as PaymentMethodsList,
// cast ( substring( cast(_BusinessPartnerBank.BankValidityEndDate as abap.char( 17 ) ), 1, 8 ) as endda ) as ValidityEndDate,
// cast ( substring( cast(_BusinessPartnerBank.BankValidityStartDate as abap.char( 17 ) ), 1, 8 ) as begda ) as ValidityStartDate,
// cast ( substring( cast(_BusinessPartnerBank.ValidityEndDate as abap.char( 17 ) ), 1, 8 ) as endda ) as ValidityEndDate,
// cast ( substring( cast(_BusinessPartnerBank.ValidityStartDate as abap.char( 17 ) ), 1, 8 ) as begda ) as ValidityStartDate,
@Semantics.businessDate.from: true
case when _BusinessPartnerBank.ValidityStartDate != 00010101000000
then tstmp_to_dats(_BusinessPartnerBank.ValidityStartDate,'UTC', $session.client, 'NULL')
else cast ( '00010101' as abap.dats )
end as ValidityStartDate,
@Semantics.businessDate.to: true
case when _BusinessPartnerBank.ValidityEndDate != 00010101000000
then tstmp_to_dats(_BusinessPartnerBank.ValidityEndDate,'UTC', $session.client, 'NULL')
else cast ( '99991231' as abap.dats)
end as ValidityEndDate,
cast(_BusinessPartnerBank.BankAccountReferenceText as refbk) as BankReference,
_SupplierCompany.CompanyCode as CompanyCode,
//Known as Payment Type in UI
cast( _SupplierCompany.PaymentMethodsList as wfd_payment_method ) as WorkerPaymentMethod,
_BusinessPartnerBank.BusinessPartner,
_WorkforcePersonBP.BusinessPartnerUUID as PersonUUID,
// _SupplierBP.Supplier as Supplier,
// _WorkAssignment,
_WorkforcePerson
}
where
_SupplierCompany.PaymentMethodsList <> ''
and _WorkAssignmentBP.BusinessPartnerCategory = '1'
and(
_BusinessPartnerBank.BankNumber is not null
or _BusinessPartnerBank.BankAccount is not null
or _BusinessPartnerBank.IBAN is not null
or _SupplierCompany.CompanyCode is not null
)
//Modelling from WA Colleagues
// as select from R_WorkAssignmentBP as _BuPaIdentification
//
// left outer to one join I_BusinessPartner as _WorkAssignmentBP on _WorkAssignmentBP.BusinessPartner = _BuPaIdentification.WorkAssignmentBusinessPartner
// left outer to one join I_Supplier_to_BusinessPartner as _Supplier on _Supplier.BusinessPartnerUUID = _WorkAssignmentBP.BusinessPartnerUUID //Remove - double check
// left outer to one join I_BusinessPartnerBank as _BusinessPartnerBank on _BusinessPartnerBank.BusinessPartner = _BuPaIdentification.WorkAssignmentBusinessPartner //Should be an inner join
// // left outer to one join I_BusinessPartnerBankTP_2 as _BusinessPartnerBank on _BusinessPartnerBank.BusinessPartner = _BuPaIdentification.WorkAssignmentBusinessPartner
//
// association [1..1] to I_BusinessPartner as _WorkforcePersonBP on _WorkforcePersonBP.BusinessPartner = _BuPaIdentification.BusinessPartner
// association [0..1] to I_SupplierCompany as _VendorMaster on _VendorMaster.Supplier = _Supplier.Supplier
//
// association [1..1] to R_WorkforcePersonTP as _WorkforcePerson on $projection.PersonUUID = _WorkforcePerson.PersonUUID
// association to parent R_WorkAssignmentTP as _WorkAssignment on $projection.WorkAssignmentUUID = _WorkAssignment.WorkAssignmentUUID
//
// // pernr addition
//{
// key _WorkAssignmentBP.BusinessPartnerUUID as WorkAssignmentUUID,
// key _BusinessPartnerBank.BankIdentification as BankIdentification,
// _BuPaIdentification.WorkAssignmentBusinessPartner as EmployeeInternalID,
// _BuPaIdentification.WorkforceAssignment as EmploymentInternalID,
// _BuPaIdentification.WorkforcePersonExternalID as WorkforcePersonExternalID,
// _BusinessPartnerBank.BankAccountHolderName as BankAccountHolderName,
// _BusinessPartnerBank.BankAccountName as BankAccountName,
// _BusinessPartnerBank.BankControlKey as BankControlKey,
// _BusinessPartnerBank.BankCountryKey as BankCountryKey,
// _BusinessPartnerBank.BankNumber as Bank,
// _BusinessPartnerBank.BankName as BankName,
// _BusinessPartnerBank.BankAccount as BankAccount,
// _BusinessPartnerBank.IBAN as IBAN,
// _BusinessPartnerBank.SWIFTCode as SWIFTCode,
// _VendorMaster.PaymentMethodsList as PaymentMethodsList, //where cond // should be seperated from Bank info
//
// // cast ( substring( cast(_BusinessPartnerBank.BankValidityEndDate as abap.char( 17 ) ), 1, 8 ) as endda ) as ValidityEndDate,
// // cast ( substring( cast(_BusinessPartnerBank.BankValidityStartDate as abap.char( 17 ) ), 1, 8 ) as begda ) as ValidityStartDate,
// cast ( substring( cast(_BusinessPartnerBank.ValidityEndDate as abap.char( 17 ) ), 1, 8 ) as endda ) as ValidityEndDate,
// cast ( substring( cast(_BusinessPartnerBank.ValidityStartDate as abap.char( 17 ) ), 1, 8 ) as begda ) as ValidityStartDate,
// cast(_BusinessPartnerBank.BankAccountReferenceText as refbk) as BankReference,
//
// _VendorMaster.CompanyCode as CompanyCode, // should be seperated from Bank info
// cast( _VendorMaster.PaymentMethodsList as wfd_payment_method ) as WorkerPaymentMethod, // should be seperated from Bank info
// _BusinessPartnerBank.BusinessPartner,
// _WorkforcePersonBP.BusinessPartnerUUID as PersonUUID,
// _WorkAssignment,
// _WorkforcePerson
//
//}
//where
// _VendorMaster.PaymentMethodsList <> ''
// and _WorkAssignmentBP.BusinessPartnerCategory = '1'
// and(
// _BusinessPartnerBank.BankNumber is not null
// or _BusinessPartnerBank.BankAccount is not null
// or _BusinessPartnerBank.IBAN is not null
// or _VendorMaster.CompanyCode is not null
// )
//==========================================
// inner join I_Supplier_to_BusinessPartner as _SupplierBP on _SupplierBP.BusinessPartnerUUID = _WorkAssignmentBP.BusinessPartnerUUID
// inner join I_Supplier_to_BusinessPartner as _SupplierBP on $projection.WorkAssignmentUUID = _SupplierBP.BusinessPartnerUUID
// //Below association is to get the UUID (why not from R_WorkAssignmentBP)
// association [1..1] to I_BusinessPartner as _WorkAssignmentBP on _WorkAssignmentBP.BusinessPartner = _BuPaIdentification.WorkAssignmentBusinessPartner
//
// //Below association is to get the Supplier (Payment should be available only if there is a supplier for that)
// association [1..1] to I_Supplier_to_BusinessPartner as _SupplierBP on $projection.WorkAssignmentUUID = _SupplierBP.BusinessPartnerUUID
//
// //Below association is to get the Supplier Master from Supplier
// association [0..1] to I_SupplierCompany as _SupplierCompany on $projection.Supplier = _SupplierCompany.Supplier
//
// //Required for deriving PersonUUID - because BEHDEF authorization/lock is depends on PersonUUID
// association [1..1] to I_BusinessPartner as _WorkforcePersonBP on _WorkforcePersonBP.BusinessPartner = _BuPaIdentification.BusinessPartner
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_BUSINESSPARTNER",
"I_BUSINESSPARTNERBANK_2",
"I_SUPPLIERCOMPANY",
"I_SUPPLIER_TO_BUSINESSPARTNER",
"R_WORKASSIGNMENTBP",
"R_WORKASSIGNMENTTP"
],
"ASSOCIATED":
[
"R_WORKFORCEPERSONTP"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/