PDA

Ver la Versión Completa : matchcode a medida


budista1
17/06/11, 11:58:39
Hola,

tengo este codigo de un matchcode, lo he implantado y al darle al f4 se ven los valores pero el select option no recoje el valor seleccionado.


******************
*MATCHCODE
*******DECLARACIÓN DE VARIABLES*********
DATA: BEGIN OF t_values OCCURS 0,
value(60) TYPE c.
DATA: END OF t_values.

DATA: BEGIN OF t_fields OCCURS 0.
INCLUDE STRUCTURE help_value.
DATA END OF t_fields.
DATA: valor(20) TYPE C.
DATA: BEGIN OF t_EBELN OCCURS 0,
EBELN LIKE zorders-ebeln,
END OF t_EBELN.

DATA P_EBELN LIKE HELP_INFO-FIELDNAME.

*DATA: BEGIN OF S_CG,
*FICTR LIKE ZAC_CG_SEC-FICTR.
*DATA: END OF S_CG.
*DATA: IT_CG LIKE S_CG OCCURS 0 WITH HEADER LINE.

*****EVENTO PARA QUE SE MUESTRE LA AYUDA *********
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_orco-LOW.

REFRESH: t_values, t_fields.
CLEAR : t_values, t_fields.

t_fields-fieldname = 'EBELN'.
t_fields-tabname = 'ZORDERS'.
t_fields-selectflag = 'X'.
APPEND t_fields. CLEAR t_fields.

SELECT ebeln
FROM zorders
INTO CORRESPONDING FIELDS OF TABLE t_EBELN.

SORT t_EBELN by ebeln.
DELETE ADJACENT DUPLICATES FROM t_EBELN.

LOOP AT t_EBELN.
t_values-value = t_EBELN-ebeln.
APPEND t_values.
ENDLOOP.

CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE'
EXPORTING
* cucol = 20
* curow = 4
tabname = 't_EBELN'
fieldname = 'ebeln'
IMPORTING
select_value = P_EBELN
TABLES
fields = t_fields
valuetab = t_values.

daniel1050
17/06/11, 12:47:17
Segui este ejemplo que funciona bien:

*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

http://danielpanaro.wordpress.com/2007/11/28/crear-matchcode-ayudas-con-una-tabla-interna/

budista1
19/06/11, 19:51:21
Muchas gracias Daniel!!

Voy a probar tu código

Un saludo:D