Los match code son las ventanas que muestran una lista de valores posibles para un campo al presionar la tecla F4, en este artículo veremos algunas opciones para agregar estos match code en nuestros dynpros,
Utilizando un match code existente
Lo primero que haremos será buscar un match ya creado, luego agregamos un texto en nuestro dynpro y hacemos doble clic sobre él para agregar un match code existente y listo.

Definiendo un match code dinámico
Si no encontramos un match code que nos guste podemos definir uno en forma dinámica para nuestro programa usando el evento on value-request, como se muestra en esta imagen. Después de la sentencia field se coloca el nombre del objeto de texto que en este caso se llama MATNR1, luego se crea un modulo (en este caso f4_matnr, pero podemos usar cualquier nombre) para procesar los datos a mostrar en el match code.

En el modulo que creamos (f4_matnr) ingresamos el siguiente código:
MODULE F4_MATNR INPUT.
types: begin of type_MATNR,
MATNR type MATNR,
MAKTX type MAKTX,
end of type_MATNR.
data iT_MATNR type standard table of type_MATNR.
refresh iT_MATNR.
select MATNR
MAKTX
UP TO 50 ROWS "En este caso solo recuperamos algunas filas
into table IT_MATNR
from MAKT
where SPRAS = SY-LANGU.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
value_org = 'S'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'MATNR1'
TABLES
value_tab = it_MATNR
EXCEPTIONS
parameter_error = 1
no_values_found = 2
others = 3.
if sy-subrc <> 0.
...
endif.
ENDMODULE.
Donde básicamente llenamos una tabla interna con valores y luego utilizamos la función F4IF_INT_TABLE_VALUE_REQUEST para mostrar el match code.