sexta-feira, 31 de maio de 2024

RAP - Annotation valuehelpdefinition - Atribuindo valor contante na busca de valores

 Criei uma entidade para ajuda de pesquisa para o tipo de imposto onde a chave é o tipo TAXTYPE e o grupo de imposto TAXGRP

@AbapCatalog.viewEnhancementCategory: [#NONE]

@AccessControl.authorizationCheck: #NOT_REQUIRED

@EndUserText.label: 'Tipo de imposto'

@Metadata.ignorePropagatedAnnotations: true

@ObjectModel.usageType:{

serviceQuality: #X,

sizeCategory: #S,

dataClass: #MIXED

}

define view entity ZI_TaxType_VH

as select from I_BR_TaxTypeText as _TaxTypeText

inner join j_1baj as _TaxType on _TaxType.taxtyp = _TaxTypeText.BR_TaxType


{

@Search.defaultSearchElement: true

@Search.fuzzinessThreshold: 0.8

@Search.ranking: #HIGH

@ObjectModel.text.element: ['TxtTaxType']


key _TaxTypeText.BR_TaxType as BR_TaxType,

key _TaxType.taxgrp as TaxGrp,

@Semantics.text: true

_TaxTypeText.TaxTypeName as TxtTaxType

}

where

_TaxTypeText.Language = $session.system_language


Na minha tela de cadastro eu tenho campos especificos para o tipo de imposto para grupo de ICMS, IPI, COFINS, etc,


Como a entidade é genérica para exibição da ajuda de pesquisa coloquei uma constante para quando for buscar o tipo de imposto de ICMS, buscar somente por esse Grupo de imposto, para IPI, COFINS o mesmo.


Fiz a association normal e na minha CDS base e na projection fiz a sequinte atribuição na annotation da valuehelpdefinition.




@ObjectModel.foreignKey.association: '_TaxtypeCOFINS'

@Consumption.valueHelpDefinition: [{ entity: {name: 'ZI_TaxType_VH' , element: 'BR_TaxType' },

useForValidation: true,

additionalBinding: [{ element: 'TaxGrp', localConstant: 'COFI', usage: #FILTER }]

}]

@ObjectModel.text.element: [ 'TxtTaxTypeCOFINS' ]

TaxtypCofins,