Listboxes e ajudas de pesquisa
Uma listbox é óptima para colocar pequenas listas de valores. De forma a encontrar facilmente o código para associação desses valores, posiciono-o na subtela onde o campo está, num módulo PBO específico criado para o efeito. O seguinte código é chamado no evento PBO da subtela do topo:
form f_action_set_values .
statics: st_action type vrm_values.
data: l_id type vrm_id,
ls_action type vrm_value.
if st_action[] is initial.
l_id = 'W_DATA-TOP-ACTION'.
ls_action-key = 'A01'.
ls_action-text = 'Fabrico'.
append ls_action to st_action.
ls_action-key = 'A07'.
ls_action-text = 'Desfabrico'.
append ls_action to st_action.
call function 'VRM_SET_VALUES'
exporting
id = l_id
values = st_action
exceptions
id_illegal_name = 1
others = 2.
endif.
endform. " F_ACTION_SET_VALUES
statics: st_action type vrm_values.
data: l_id type vrm_id,
ls_action type vrm_value.
if st_action[] is initial.
l_id = 'W_DATA-TOP-ACTION'.
ls_action-key = 'A01'.
ls_action-text = 'Fabrico'.
append ls_action to st_action.
ls_action-key = 'A07'.
ls_action-text = 'Desfabrico'.
append ls_action to st_action.
call function 'VRM_SET_VALUES'
exporting
id = l_id
values = st_action
exceptions
id_illegal_name = 1
others = 2.
endif.
endform. " F_ACTION_SET_VALUES
A variável estática permite que o código seja executado apenas uma vez.
Por sua vez as ajudas de pesquisa que não existam no dicionário de dados podem ser determinadas recorrendo à função 'HELP_VALUES_GET_WITH_TABLE'.
process on value-request.
field w_data-item-item-charg module m_help_charg.
field w_data-item-item-charg module m_help_charg.
form f_help_charg .
*…
*…
call function 'HELP_VALUES_GET_WITH_TABLE'
exporting
fieldname = 'MCHA'
tabname = 'CHARG'
importing
select_value = <fs_item>-charg
tables
fields = lt_fields
valuetab = lt_values.
w_items-charg = w_data-item-item-charg = <fs_item>-charg.
endform. " F_HELP_CHARG
exporting
fieldname = 'MCHA'
tabname = 'CHARG'
importing
select_value = <fs_item>-charg
tables
fields = lt_fields
valuetab = lt_values.
w_items-charg = w_data-item-item-charg = <fs_item>-charg.
endform. " F_HELP_CHARG
Validações de input
As validações de input devem ser associadas ao evento PAI ON REQUEST. É importante que os campos que estejam relacionados estejam associados num chain por dois motivos:
- Não repetir a execução do código
- Se despoletar uma mensagem de erro dentro do módulo então os campos do chain ficam em aberto para correcção
chain.
field w_data-top-ref-mblnr.
field w_data-top-ref-mjahr.
module m_get_mblnr on chain-request.
endchain.
field w_data-top-ref-mblnr.
field w_data-top-ref-mjahr.
module m_get_mblnr on chain-request.
endchain.
A validação deve ser reduzida ao mínimo nesta etapa. A verdadeira validação ocorre depois de se carregar no botão de gravar ou no botão de simulação caso exista. Não deve haver validações muito específicas mas caso existam o seu código deve ser disponibilizado por um método da classe de execução. Em caso de erro o método devolve uma excepção que pode ser tratada com uma mensagem de erro. Os métodos da classe de execução nunca devem despoletar mensagens de erro nem outros eventos de output.
Nem sempre são necessárias validações ao campo. Por exemplo, talvez não seja necessário validar se a data do documento está no passado se essa validação existe na gravação.
Sem comentários:
Enviar um comentário