PDA

Ver la Versión Completa : Sacar varios valores de la ayuda


virus
10/01/13, 17:41:12
Buenas,

No sé si alguien me podrá ayudar, tengo una ayuda que ahora mismo me retorna un valor, no sé como hacer para que me saque mas valores.

A ver si me explico por ejemplo ...

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CAMPO'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = 'D_CAMPO'
window_title = ' '
display = ' '
TABLES
value_tab = lt_values
field_tab = lt_field_tab
return_tab = lt_rettab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
CASE sy-subrc.
WHEN 0.
READ TABLE lt_rettab INDEX 1.
e_CAMPO = lt_rettab-fieldval.
e_CAMPO1 = lt_rettab-fieldval.
e_CAMPO2 = lt_rettab-fieldval.
ENDCASE.

Tenía puesto para que me sacara solo el valor del campo CAMPO y va bien, pero si quiero sacar otros campos, no sé como hacerlo.

¿Que debo hacer?

Saludos y gracias por adelantado.

eejmonterov
10/01/13, 21:50:41
Tienes que hacer unas modificaciones desde el llamado de la función hasta la creación de una rutina que sera llamada desde la función.

1) Función

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CAMPO'
window_title = 'AYUDA BUSQUEDA'
value_org = 'S'
callback_program = sy-repid
callback_form = 'CALLBACK_F4' " Esta rutina es la que modificara los campos que retorna tu return tab
TABLES
value_tab = lt_match
return_tab = lt_value
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.

2) Rutina

FORM callback_f4
TABLES record_tab STRUCTURE seahlpres
CHANGING shlp TYPE shlp_descr
callcontrol LIKE ddshf4ctrl.
* define local data
DATA:
ls_intf LIKE LINE OF shlp-interface,
ls_prop LIKE LINE OF shlp-fieldprop.



" Hide unwanted fields
CLEAR: ls_prop-shlpselpos,
ls_prop-shlplispos.

" Overwrite selectable fields on search help
REFRESH: shlp-interface.
ls_intf-shlpfield = 'F0001'.
ls_intf-valfield = 'CAMPO1'.
ls_intf-f4field = 'X'.
APPEND ls_intf TO shlp-interface.
ls_intf-shlpfield = 'F0002'.
ls_intf-valfield = 'CAMPO2'.
ls_intf-f4field = 'X'.
APPEND ls_intf TO shlp-interface.
ls_intf-shlpfield = 'F0003'.
ls_intf-valfield = 'CAMPO3'.
ls_intf-f4field = 'X'.
APPEND ls_intf TO shlp-interface.

ENDFORM.

3) Luego simplemente haces lecturas a la tabla de retorno

READ TABLE lt_value WITH KEY retfield = 'CAMPO1'.
IF sy-subrc = 0.
e_CAMPO = lt_value-fieldval.
ENDIF.

READ TABLE lt_value WITH KEY retfield = 'CAMPO2'.
IF sy-subrc = 0.
e_CAMPO1 = lt_value-fieldval.
ENDIF.

READ TABLE lt_value WITH KEY retfield = 'CAMPO3'.
IF sy-subrc = 0.
e_CAMPO2 = lt_value-fieldval.
ENDIF.