Crear Match Code en tiempo de ejecucion para una Dynpro Julio 17, 2008
Posted by gstortoni in Match Code.Tags: ABAP, Ayuda de Busqueda, Dynpro, Dynpros, Match Code, SAP
trackback
Esta es una forma bastante util e interesante para crear ayudas de busquedas en tiempo de ejecucion, en mi caso lo he usado en una Dynpro, ustedes veran que uso le dan.
En una Dynpro:
Primero que todo, hay que agregar dentro de la logica de proceso, luego del PAI, lo siguiente:
process on value-request.
field campo_que_necesitamos module module_match.
Una vez que tengamos escrito esto en la logica de proceso de la Dynpro, tenemos que crear el Module, hacemos doble click y ustedes deciden donde crearlo, por mi parte lo cree en el programa control.
Primero necesitamos los ingredientes:
data : begin of list_of_fields occurs 10,
fieldname like dd03l-fieldname,
end of list_of_fields.
data : indice like sy-tabix,
fieldname like dd03l-fieldname,
fields like help_value occurs 10 with header line,
shrinkfields like dynpread occurs 0 with header line,
dynpfields like dynpread occurs 0 with header line.
data: begin of ti_almacen occurs 0,
lgort like t001l-lgort,
lgobe like t001l-lgobe,
end of ti_almacen_dest.
En mi caso quiero mostrar los almacenes y su descripcion para un Centro dado.
Para ello, manualmente recojo los campos de la tabla y los almaceno en una TI.
select lgort lgobe
into corresponding fields of table ti_almacen
from t001l
where werks eq ‘2000′.
Luego Hay que definir la estructura de la ayuda de busqueda.
list_of_fields-fieldname = ‘T001L-LGORT’.
append list_of_fields.
list_of_fields-fieldname = ‘T001L-LGOBE’.
append list_of_fields.
Defino el campo que quiero que quede en la pantalla cuando haya hecho doble clic sobre mi Match Code
fieldname = ‘LGORT’.
call function ‘TRANSFER_NAMES_TO_FIELDS’
exporting
selectfield = fieldname
tables
fields = fields
namelist = list_of_fields
exceptions
wrong_format_given = 01.
Esta es la funcion que hace toda la maravilla
call function ‘HELP_VALUES_GET_NO_DD_NAME’
exporting
selectfield = fieldname
titel = ‘Almacen de destino’
use_user_selections = ‘S’
importing
ind = indice
tables
fields = fields
full_table = ti_almacen
user_sel_fields = shrinkfields
exceptions
full_table_empty = 01
no_tablestructure_given = 02
no_tablefields_in_dictionary = 03
more_than_one_selectfield = 04
no_electfield = 05.
Ahora solo queda recorrer la tabla e indicar cual fue el indice que el usuario ha seleccionado.
read table ti_almacen index indice.
Con esto, paso el valor de la seleccion en este caso el LGORT a mi campo en pantalla
move ti_almacen-lgort to fld_almacen.
Y eso es todo, queda solo activar y disfrutar de una ayuda de busqueda sencilla. pero Muy efectiva
me parece interesante voy a intentarlo, muchas gracias.
saludos.
Torrescano