· Na tela onde esta o campo que você deseja inserir o match code:
· Após o evento output declare o evento 'process on value-request' e informe o campo que vai receber o match code em FIELD e crie um module para executar a logica.
PROCESS ON VALUE-REQUEST.
FIELD t_tabela-campo MODULE module_matchcode_9000.
· No module que vc acabou de criar, chame o form f_matchcode_connid
FORM f_matchcode_connid.
TYPES:BEGIN OF ty_spfli,
connid TYPE spfli-connid,
distance TYPE spfli-distance,
END OF ty_spfli.
DATA: t_spfli TYPE TABLE OF ty_spfli.
DATA: l_connid TYPE spfli-connid.
" Preencho a tabela T_SPFLI
SELECT connid
distance
FROM spfli
INTO TABLE t_spfli
WHERE distance <> space.
IF sy-subrc IS INITIAL.
DELETE t_spfli WHERE connid(1) = '2'.
" Chama o perform F_MATCHCODE passando a tabela preenchida.
PERFORM f_matchcode TABLES t_spfli
USING 'CONNID'
CHANGING l_connid.
ENDIF.
ENDFORM.
FORM f_matchcode TABLES p_tabela
USING p_campo TYPE any
CHANGING p_valor TYPE any.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = p_campo
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = p_campo
value_org = 'S'
TABLES
value_tab = p_tabela
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
Obs: a tabela que passamos para a função 'F4IF_INT_TABLE_VALUE_REQUEST' deve ter sempre elemento de dados. ou seja se desejar criar campo como um char de 10, crie desta forma: (campo type char10) e não assim: (campo(10) type c).
0 comentários:
Postar um comentário