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,