MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Ayuda de busqueda en Dynpro (foro/showthread.php?t=6439)

poketina 09/07/07 07:07:36

Ayuda de busqueda en Dynpro
 
Hola !!! tengo 2 campos en una dynpro, uno de ellos se puede modificar y en él se mete la sociedad, que se puede elegir a través de un matchcode. el en campo de al lado quiero que se visualice el nombre de la sociedad. He utilizado la función 'F4IF_INT_TABLE_VALUE_REQUEST' para obtener las posibles sociedades, pero no sé cómo hacer para que una vez elegido un valor, se rellene mi 2º campo con el nombre de la sociedad. No sé si me explico...
Un saludo y gracias !!!

sap2006 09/07/07 08:19:17

Te posteo un ejemplo de codigo que utilicé....lo unico que tienes que hacer es hacer un select a partir del campo que has recogiro en el machcode....

DATA: i_z9codid TYPE TABLE OF z9codidt.
DATA: i_return LIKE ddshretval OCCURS 0 WITH HEADER LINE.
DATA: dynprofield TYPE help_info-dynprofld.
DATA: dynpfields LIKE dynpread OCCURS 0 WITH HEADER LINE.

REFRESH: i_z9codid.
CLEAR: i_z9codid.



SELECT * FROM z9codidt INTO TABLE i_z9codid ORDER BY codid.

dynprofield = 'Z9CODID-CODID'.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'CODID'
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = dynprofield
value_org = 'S'
TABLES
value_tab = i_z9codid
return_tab = i_return.
.
IF i_return-fieldval <> space.
z9codid-codid = i_return-fieldval.
SELECT SINGLE zversion FROM z9codid INTO z9codid-zversion
WHERE codid = i_return-fieldval.

LEAVE TO SCREEN 102.
ENDIF.

poketina 09/07/07 08:48:08

Pues no sé, no me lo hace..
yo he hecho esto:
En la lógica de proceso de la dynpro he puesto lo sigueinte:
PROCESS ON VALUE-REQUEST.
FIELD gv_centro MODULE matchcode_centro.

---------------------------
MODULE matchcode_centro INPUT.

PERFORM recuperar_stepl.

PERFORM funcion_llama_matchcode TABLES it_centro
USING gc_werks
gc_p_werks
text-004
gv_stepl.
IF it_returntab-fieldval IS NOT INITIAL.
READ TABLE it_centro WITH KEY werks = it_returntab-fieldval.
IF sy-subrc = 0.
gv_name1 = it_centro-name1.
ENDIF.
ENDIF.

ENDMODULE. " matchcode_centro INPUT

------------

FORM funcion_llama_matchcode TABLES p_i_valtab "tabla que servira como match-code
USING p_c_retfield "campo de la tabla que se recoge
p_c_dynprofield "nombre del campo de pantalla
p_v_titumatch "titulo del match-code
p_stepl.
CLEAR: gv_retfield,
gv_dynprofield.

gv_retfield = p_c_retfield.
gv_dynprofield = p_c_dynprofield.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = gv_retfield
dynpprog = sy-cprog
dynpnr = sy-dynnr
dynprofield = gv_dynprofield
stepl = p_stepl
window_title = p_v_titumatch
value_org = 'S'
multiple_choice = ' '
TABLES
value_tab = p_i_valtab
return_tab = it_returntab.

ENDFORM. " funcion_llama_matchcode

----------------------

Pero nada, quizas tengo q usar una función para coger el valor que he elegido del matchcode y luego poder cambiar la descripcion de la sociedad.. no sé..

sap2006 09/07/07 09:15:31

Puede que tengas que asignar p_i_valtab-fieldval a tu campo en la dynpro, prueba a refrescar la pantalla, puede que tengas que hacer un leave to screen XXXX a la misma pantalla donde estes...yo en mi codigo tuve que hacerlo porque no me cogia el valor...o utilizar la funcion DYNP_VALUES_READ

IF i_return-fieldval <> space.
z9codid-codid = i_return-fieldval.
SELECT SINGLE zversion FROM z9codid INTO z9codid-zversion
WHERE codid = i_return-fieldval.

LEAVE TO SCREEN 102.
ENDIF.



Saludos
Ruben.


Husos Horarios son GMT. La hora en este momento es 13:15:43.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web