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.