El próximo ejemplo sirve para crear ayudas (matchcodes) con una tabla interna de nuestro programa.
Así de simple, hacemos una búsqueda a alguna tabla y el resultado lo guardamos en una tabla interna que se la pasamos a la función F4IF_INT_TABLE_VALUE_REQUEST que nos va a mostrar la ayuda.
Quiero agradecer esta forma de crear ayudas a mi compañero y amigo Rodrigo (http://ramgv-sap.blogspot.com).
*En este ejemplo creo un select-option para un material. Cuya ayuda será *el nº de material para VBELN = ‘0000000001′ y POSNR = ‘000010′.
TABLES: VBAP,
DDSHRETVAL.
DATA: BEGIN OF IT_MATNR OCCURS 0,
MATNR LIKE VBAP-MATNR,
ARKTX LIKE VBAP-ARKTX,
END OF IT_MATNR.
DATA: BEGIN OF IT_MATCH OCCURS 0, “Esta tabla nos devuelve la ayuda
SHLPNAME LIKE DDSHRETVAL-SHLPNAME,
FIELDNAME LIKE DDSHRETVAL-FIELDNAME,
RECORDPOS LIKE DDSHRETVAL-RECORDPOS,
FIELDVAL LIKE DDSHRETVAL-FIELDVAL,
RETFIELD LIKE DDSHRETVAL-RETFIELD,
END OF IT_MATCH.
SELECTION-SCREEN BEGIN OF BLOCK BLQ1 WITH FRAME TITLE TEXT-T01.
SELECT-OPTIONS: S_MATNR FOR VBAP-MATNR NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF BLOCK BLQ1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_MATNR-LOW.
SELECT MATNR
ARKTX
FROM VBAP
INTO TABLE IT_MATNR
WHERE VBELN EQ ‘0000000001′ AND
POSNR EQ ‘000010′.
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
RETFIELD = ‘MATNR’
WINDOW_TITLE = ‘Material’
VALUE_ORG = ‘S’
TABLES
VALUE_TAB = IT_MATNR
RETURN_TAB = IT_MATCH
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
READ TABLE IT_MATCH INDEX 1.
MOVE IT_MATCH-FIELDVAL TO S_MATNR-LOW.
ENDIF.
Technorati tags: sdn blogger

Add me to your del.icio.us
Soy nuevo en esto y un poco desmemoriado, por lo que este tipo de consultas sacan del apuro muy rapido.
saludos
Daniel, útil esto del match code; le hice alguna modificacion al programa para que me trajera del maetro de materiales. Te lo ajunto. saludos.
REPORT ZPRUEBA1.
*——————————————————————————–*
*Este reporte sirve para generar un matchcode con referencia a una tabla interna.*
*——————————————————————————–*
TABLES: DDSHRETVAL,
BKPF,
MARA.
DATA: BEGIN OF IT_MATNR OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTG LIKE MAKT-MAKTG,
END OF IT_MATNR.
*“Esta tabla nos devuelve la ayuda
DATA: BEGIN OF IT_MATCH OCCURS 0,
SHLPNAME LIKE DDSHRETVAL-SHLPNAME,
FIELDNAME LIKE DDSHRETVAL-FIELDNAME,
RECORDPOS LIKE DDSHRETVAL-RECORDPOS,
FIELDVAL LIKE DDSHRETVAL-FIELDVAL,
RETFIELD LIKE DDSHRETVAL-RETFIELD,
END OF IT_MATCH.
SELECTION-SCREEN BEGIN OF BLOCK BLQ1 WITH FRAME TITLE TEXT-T01.
*Este primer select-options usa la TABLA INTERNA para busqueda debido a (++)
SELECT-OPTIONS: S_MATNR FOR MARA-MATNR NO-EXTENSION NO INTERVALS.
*Este segundo select-options usa la búsqueda estándar
SELECT-OPTIONS: S_BUKRS FOR BKPF-BUKRS NO-EXTENSION NO INTERVALS.
*Este tercer select-options usa la búsqueda estándar
SELECT-OPTIONS: S_MATNR2 FOR MARA-MATNR NO-EXTENSION NO INTERVALS.
SELECTION-SCREEN END OF BLOCK BLQ1.
** (++) debido a la sentencia siguiente que afecta sólo a S_MATNR
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_MATNR-LOW.
SELECT MATNR MAKTG
INTO TABLE IT_MATNR
FROM MAKT
WHERE SPRAS EQ ‘S’.
CALL FUNCTION ‘F4IF_INT_TABLE_VALUE_REQUEST’
EXPORTING
RETFIELD = ‘MATNR’
WINDOW_TITLE = ‘MATERIAL’
VALUE_ORG = ‘S’
TABLES
VALUE_TAB = IT_MATNR
RETURN_TAB = IT_MATCH
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC EQ 0.
READ TABLE IT_MATCH INDEX 1.
MOVE IT_MATCH-FIELDVAL TO S_MATNR-LOW.
ENDIF.
Muchas gracias por el aporte Juan.
Saludos,
Daniel.