@AbapCatalog.sqlViewName: 'IBANKSTMTTP'
@AbapCatalog.preserveKey:true
@EndUserText.label: 'Bank Statement BO active and draft'
@AccessControl.authorizationCheck: #CHECK
@AccessControl.personalData.blocking: #('TRANSACTIONAL_DATA')
@ClientHandling.algorithm: #SESSION_VARIABLE
@ObjectModel.usageType.sizeCategory: #XL
@ObjectModel.usageType.serviceQuality: #C
@ObjectModel.usageType.dataClass: #MIXED
-- VDM Related Annotations
@VDM.viewType: #TRANSACTIONAL
@Search.searchable: true
-- BOPF Related An notatio ns
@ObjectModel.modelCategory: #BUSINESS_OBJECT
//@ObjectModel.writeEnabled: true
@ObjectModel.transactionalProcessingEnabled: true
@ObjectModel.draftEnabled: true
@ObjectModel.writeDraftPersistence: 'FEBKO_DRAFT_V2'
@ObjectModel.semanticKey: ['BankStatementShortID']
@ObjectModel.compositionRoot: true
@ObjectModel.createEnabled
@ObjectModel.updateEnabled
@ObjectModel.deleteEnabled
@ObjectModel.entityChangeStateId: 'EXTERNAL_CALCULATION'
-- Header Related Annotations
@UI.headerInfo.description : 'Manage Bank Statement'
@UI.headerInfo.description.label: 'Manage Bank Statement'
define view I_ARBankStatementTP
as select from I_Arbankstatement
left outer join I_Arbankstatementpostingdate as Bs_Postingdate on I_Arbankstatement.BankStatementShortID = Bs_Postingdate.BankStatementShortID
-- User name of the Bank Statement creator
left outer join I_User on I_User.UserID = I_Arbankstatement.CreatedByUser
-- MIPF App
left outer join I_IncomingPaymentFileLine on I_Arbankstatement.BankStatementShortID = I_IncomingPaymentFileLine.BankStatementShortID
left outer join P_Arbankstatementjob as ReversalJob on ReversalJob.BankStatementShortID = I_Arbankstatement.BankStatementShortID
and ReversalJob.BankStatementJobType = 'R'
-- Association with bank statement Items
association [0..*] to I_ARBankStatementItemTP as _Item on $projection.BankStatementShortID = _Item.BankStatementShortID
association [0..*] to I_BankStmntStsText as _BankStatementStatus on $projection.BankStatementStatus = _BankStatementStatus.BankStatementStatus
association [0..1] to E_ARBankStatement as _Extension on $projection.BankStatementShortID = _Extension.BankStatementShortID
and $projection.SendingBank = _Extension.SendingBank
and $projection.BankStatementInternalID = _Extension.BankStatementInternalID
and $projection.BankStatementRecipientRefID = _Extension.BankStatementRecipientRefID
association [0..1] to I_Currency as _Currency on $projection.Currency = _Currency.Currency
{
// key I_Arbankstatement.Draf tUUID,
@ObjectModel.readOnly: true
key cast ( I_Arbankstatement.BankStatementShortID as farp_kukey ) as BankStatementShortID,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.BankDataStorageApplication as far_anwnd_idbs_bs ) as BankDataStorageApplication,
@ObjectModel.readOnly: true
I_Arbankstatement.SendingBank,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.BankStatementInternalID as farp_azidt ) as BankStatementInternalID,
@ObjectModel.readOnly: true
I_Arbankstatement.BankStatementRecipientRefID,
@Search.defaultSearchElement: true
@Search.fuzzinessThreshold: 0.8
@Search.ranking: #HIGH
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_Arbankstatement.CompanyCode,
@Consumption.valueHelpDefinition: [{ entity:{ name: 'I_CompanyCodeHierarchyVH', element: 'CompanyCodeHierarchy' } }]
@Consumption.filter.selectionType: #SINGLE
@ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
@EndUserText.label: 'Company Code Hierarchy'
cast('' as fis_hryid_ccode_42) as CompanyCodeHierarchy,
@Consumption.filter.hidden: true
@ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
cast('' as fis_hrynid_ccode_50) as CompanyCodeHierarchyNode,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_Arbankstatement.HouseBank,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
cast(I_Arbankstatement.HouseBankAccount as farp_hktid) as HouseBankAccount,
@ObjectModel.readOnly: true
I_Arbankstatement.BankAccountInternalID,
//I_Arbankstatement.BankAccountUUID,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
cast ( I_Arbankstatement.BankStatement as farp_aznum ) as BankStatement,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
cast ( I_Arbankstatement.BankStatementDate as farp_azdat ) as BankStatementDate,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.BankStatementTime as farp_aztim ) as BankStatementTime,
@ObjectModel.filter.transformedBy: 'ABAP:CL_FAC_TIMESTAMP_FLT'
cast(dats_tims_to_tstmp(I_Arbankstatement.BankStatementDate, I_Arbankstatement.BankStatementTime,
abap_system_timezone($session.client, 'NULL'),
$session.client, 'NULL') as far_bs_timestamp_on) as BankStatementDateTime,
// @ObjectModel.text.association: '_BankStatementStatus'
@ObjectModel.readOnly: true
I_Arbankstatement.BankStatementStatus,
@ObjectModel.readOnly: true
I_Arbankstatement.BankStatementStatusName,
// @ObjectModel.foreignKey.association: '_Currency'
@Semantics.currencyCode: true
@ObjectModel.readOnly: true
I_Arbankstatement.Currency,
@ObjectModel.readOnly: true
I_Arbankstatement.BankLedgerIsPosted,
@ObjectModel.readOnly: true
I_Arbankstatement.SubledgerIsPostedSuccessfully,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.BankStatementIsInterpreted as farp_kipre ) as BankStatementIsInterpreted,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.GLAccount as farp_hkont ) as GLAccount,
@Consumption.valueHelpDefinition: [{ entity: { name: 'I_GLAccountHierarchyStdVH', element: 'GLAccountHierarchy' } }]
@Consumption.filter.selectionType: #SINGLE
@ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
cast('' as fis_glaccthier) as GLAccountHierarchy,
@Consumption.filter.hidden: true
@ObjectModel.filter.transformedBy: 'ABAP:CL_FINS_HIER_VH_FLTR_TRANSFORM'
cast('' as fis_glacct_hrynid_50) as GLAccountHierarchyNode,
@ObjectModel.readOnly: true
I_Arbankstatement.BankAccount,
@ObjectModel.readOnly: true
I_Arbankstatement.BankAccountHolderName,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.BankAccountAdditionalName as farp_ktosb ) as BankAccountAdditionalName,
@ObjectModel.enabled: true
@ObjectModel.mandatory: false
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
cast ( I_Arbankstatement.BankStatementPageNumber as farp_azpgno ) as BankStatementPageNumber,
@ObjectModel.readOnly: true
I_Arbankstatement.ChartOfAccounts,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.OpeningBalanceIsInterim as farp_opening_bal_interim_ind ) as OpeningBalanceIsInterim,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
@Semantics.amount.currencyCode: 'Currency'
I_Arbankstatement.OpeningBalanceAmtInTransCrcy,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
@Semantics.amount.currencyCode: 'Currency'
I_Arbankstatement.InterimOpenBalAmtInTransCrcy,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
@Semantics.amount.currencyCode: 'Currency'
I_Arbankstatement.InterimClsgBalAmtInTransCrcy,
@ObjectModel.readOnly: true
@Semantics.amount.currencyCode: 'Currency'
I_Arbankstatement.TotalDebitAmountInTransCrcy,
@ObjectModel.readOnly: true
@Semantics.amount.currencyCode: 'Currency'
I_Arbankstatement.TotalCreditAmountInTransCrcy,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.ClosingBalanceIsInterim as farp_closing_bal_interim_ind ) as ClosingBalanceIsInterim,
@ObjectModel.enabled: true
@ObjectModel.mandatory: 'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
@Semantics.amount.currencyCode: 'Currency'
I_Arbankstatement.ClosingBalanceAmtInTransCrcy,
@ObjectModel.readOnly: true
I_Arbankstatement.InterestRateInPercent,
@ObjectModel.readOnly: true
I_Arbankstatement.BankAccountType,
@ObjectModel.readOnly: true
I_Arbankstatement.BankStatementNumberOfItems as BankStatementNumberOfItems,
@ObjectModel.readOnly: true
I_Arbankstatement.NumberOfItems as NumberOfItems,
// NumberOfItems,
@ObjectModel.enabled: true
@ObjectModel.mandatory: false
@ObjectModel.readOnly: 'EXTERNAL_CALCULATION'
I_Arbankstatement.PaymentTransactionTypeGroup,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.BankStatementIsManuallyCreated as farp_bs_manual_created_ind ) as BankStatementIsManuallyCreated,
@ObjectModel.readOnly: true
I_Arbankstatement.CreatedByUser,
@ObjectModel.readOnly: true
cast (I_User.UserDescription as farp_euser_name ) as PersonFullName,
@ObjectModel.readOnly: true
I_Arbankstatement.BankStatementImportDate,
@ObjectModel.readOnly: true
I_Arbankstatement.BankStatementImportTime,
@ObjectModel.filter.transformedBy: 'ABAP:CL_FAC_TIMESTAMP_FLT'
cast(dats_tims_to_tstmp(I_Arbankstatement.BankStatementImportDate, I_Arbankstatement.BankStatementImportTime,
abap_system_timezone($session.client, 'NULL'),
$session.client, 'NULL') as far_bs_importtimestamp) as BankStatementImportDateTime,
@ObjectModel.enabled:'EXTERNAL_CALCULATION'
@ObjectModel.readOnly: true
I_IncomingPaymentFileLine.IncomingPaymentFile as IncomingPaymentFile, //no cardinality problem: only 1 File per kukey
@ObjectModel.readOnly: true
I_Arbankstatement.BankAccountReferenceText,
@ObjectModel.readOnly: true
I_Arbankstatement.BankStatementFormat,
@ObjectModel.readOnly: true
I_Arbankstatement.IBAN,
@ObjectModel.readOnly: true
I_Arbankstatement.BankCountry,
@ObjectModel.readOnly: true
I_Arbankstatement.BankName as BankName,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.IsLatestBankStatement as far_islatestbs_ui ) as IsLatestBankStatement,
@ObjectModel.readOnly: true
cast ( Bs_Postingdate.PostingDate as farp_budat ) as PostingDate,
@ObjectModel.readOnly: true
-- To Enable/Disable post action button
case when I_Arbankstatement.BankStatementStatus = '2' or
I_Arbankstatement.BankStatementStatus = ' ' or
I_Arbankstatement.BankStatementStatus = 'A'
then cast ( 'X' as far_is_action_enable )
else cast ( ' ' as far_is_action_enable ) end as PostActionIsEnabled,
@ObjectModel.readOnly: true
-- To Enable/Disable create next action button
case when I_Arbankstatement.BankStatementStatus = '0'
then cast ( ' ' as far_is_action_enable )
else cast ( 'X' as far_is_action_enable ) end as CreateNextActionIsEnabled,
@ObjectModel.readOnly: true
-- To Enable/Disable reverse action button
case when ( I_Arbankstatement.BankDataStorageApplication = '0001' or I_Arbankstatement.BankDataStorageApplication = '0007' )
and ( I_Arbankstatement.BankStatementStatus = '7' or I_Arbankstatement.BankStatementStatus = '8' or I_Arbankstatement.BankStatementStatus = 'E' )
and I_Arbankstatement.BankStatementPostingType = ''
then cast ( 'X' as far_is_action_enable )
else cast ( ' ' as far_is_action_enable ) end as ReverseActionIsEnabled,
@ObjectModel.readOnly: true
-- To Enable/Disable reversal log action button
case when I_Arbankstatement.BankStatementStatus = 'E' or
I_Arbankstatement.BankStatementStatus = 'R' or
I_Arbankstatement.BankStatementStatus = 'Q' or
( ( I_Arbankstatement.BankStatementStatus = '7' or I_Arbankstatement.BankStatementStatus = '8' ) and ReversalJob.StatusCode = 'A' )
then cast ( 'X' as far_is_action_enable )
else cast ( ' ' as far_is_action_enable ) end as ReversalLogActionIsEnabled,
@ObjectModel.readOnly: true
cast ( ReversalJob.ApplicationJob as farp_btcjobcnt ) as BankStatementReversalJob,
@ObjectModel.readOnly: true
cast ( ReversalJob.ApplicationJobName as btcjob ) as BankStatementReversalJobName,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.CashPositionIsUpdated as far_cash_position_is_updated ) as CashPositionIsUpdated,
@ObjectModel.readOnly: true
cast ( I_Arbankstatement.BkStmntIsCashUpdateRelevant as far_cash_pos_is_updat_relevant ) as BkStmntIsCashUpdateRelevant,
@ObjectModel.readOnly: true
case when I_Arbankstatement.CashPositionIsUpdated = 'X'
then cast ( 'C' as far_cash_pos_update_status )
when I_Arbankstatement.CashPositionIsUpdated = '' and I_Arbankstatement.BkStmntIsCashUpdateRelevant = 'X'
then cast ( 'I' as far_cash_pos_update_status )
else
cast ( 'N' as far_cash_pos_update_status )
end as CashPositionUpdateStatus,
@ObjectModel.readOnly: true
BankStatementPostingType,
@ObjectModel.association.type: [ #TO_COMPOSITION_CHILD ]
@ObjectModel.readOnly: true
_Item,
@ObjectModel.readOnly: true
_BankStatementStatus,
@ObjectModel.readOnly: true
_Currency
}
/*+[internal] {
"BASEINFO":
{
"FROM":
[
"I_ARBANKSTATEMENT",
"I_ARBANKSTATEMENTPOSTINGDATE",
"I_INCOMINGPAYMENTFILELINE",
"I_USER",
"P_ARBANKSTATEMENTJOB"
],
"ASSOCIATED":
[
"E_ARBANKSTATEMENT",
"I_ARBANKSTATEMENTITEMTP",
"I_BANKSTMNTSTSTEXT",
"I_CURRENCY"
],
"BASE":
[],
"ANNO_REF":
[],
"SCALAR_FUNCTION":
[],
"VERSION":0,
"ANNOREF_EVALUATION_ERROR":""
}
}*/